磁盘存储和文件管理

磁盘存储

设备文件


I/O Ports: I/O设备地址
一切皆文件:open(), read(), write(), close() 
设备类型:    
    块设备:block,存取单位“块”,磁盘
    字符设备:char,存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码: 
  主设备号:major number, 标识设备类型 
  次设备号:minor number, 标识同一类型下的不同设备  

硬盘接口类型


并行:
    IDE:133MB/s 
    SCSI:640MB/s  
串口:SATA:6Gbps 
      SAS:6Gbps
      USB:480MB/s 
rpm: rotations 
     per minute

机械硬盘和固态硬盘


 机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘 片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘 中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有 一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制 器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每 分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数 据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。 硬盘为精密设备,进入硬盘的空气必须过滤 
 固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控 制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、 功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致 
 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传 输速率性能是HDD的2倍
 相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势 
 硬盘有价,数据无价,目前SSD不能完全取代HHD   

设备文件


磁盘设备的设备文件命名:/dev/DEV_FILE 
虚拟磁盘:/dev/vd 
不同磁盘标识:a-z,aa,ab… /dev/sda, /dev/sdb, ...
同一设备上的不同分区:1,2, ... /dev/sda1, /dev/sda5 
硬盘存储术语 
head:磁头 
track:磁道 
cylinder: 柱面 
sector: 扇区,512bytes  

分区MBR,CPT


两种分区方式:MBR,GPT 
MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
如何分区:按柱面
0磁道0扇区:512bytes 
            446bytes: boot loader
            64bytes:分区表 
            16bytes: 标识一个分区 
            2bytes: 55AA
4个主分区;3主分区+1扩展(N个逻辑分区) 

MBR分区结构


硬盘主引导记录MBR由4个部分组成
主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行 系统引导程序
出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为 0字节
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,
每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA  

GPT分区


GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区, 使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表 自动备份在头和尾两份,并有CRC校验位 
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动  

管理分区


列出块设备 
  • lsblk 
创建分区使用: 
   • fdisk创建MBR分区
   • gdisk创建GPT分区
   • parted高级分区操作
partprobe-重新设置内存中的内核分区表版本  

parted命令【小心使用】


parted的操作都是实时生效的,小心使用
用法:parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt|msdos 
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默认M) 
parted /dev/sdb rm 1 parted –l   列出分区信息  

分区工具fdisk和fdisk


gdisk /dev/sdb 类fdisk 
fdisk -l 、dev/sda查看分区 
fdisk /dev/sdb 管理分区 子命令: 
p 分区列表
t 更改分区类型 
n 创建新分区 
d 删除分区 
v 校验分区 
u 转换单位 
w 保存并退出 
q 不保存并退出   

同步分区表


查看内核是否已经识别新的分区
       cat/proc/partations
     fdisk分区后fdisk -l .dev.se1[查看硬盘]
     lsblk[查看内存硬盘]
centos6通知内核重新读取硬盘分区表
     新增分区用:
              partx -a /dev/sr1
     删除分区用:
              partx -d --nr M-N /dev/sr1
centos7同步使用:
            partprobe命令  

文件系统


文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;
即在储存设备上组织文件的方法。操作系统中负责管理和储存文件信息的软件结构称为文件管理系统,简称文件系统

从系统角度来看文件系统对文件储存设备的空间进行组织和分配,负责文件储存并对存入的文件进行保护和检索的系统封。
具体的说,他负责为用户创立文件,存入,读取,修改,转储问价,控制问价的读出,安全控制,日志,压缩,加密等 

支持的文件系统:
/lib/modules/'uname -r' /kernel/fs
各种文件系统:
https://en.wikipedia.org/wiki/Comparison_of_file_systems 

文件系统类型


linux系统类型:
       ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况, 例如 /boot 分区。 
       ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中 恢复。它通常被用作通用的文件系统 
       ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使 用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升 xfs:SGI,支持最大8EB的文件系统 btrfs(Oracle), reiserfs, jfs(AIX), swap   
       光盘:iso9660
       windows:FAT32,NTFS
       Unix:FFS(fast),UFS(unix),JFS2
       网络文件系统:NFS,CIFS
       集群文件系统:GFS2,OCFS2
       分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre 
       RAW:未经处理或者未经格式化产生的文件系统

文件系统分类


根据其是否支持“journl”功能:
   日志型文件系统:ext3,ext4,xfs,....
   非日志文件系统:ext2,vfat
文件系统的组织部分:
    内核中的模块:ext4, xfs, vfat 
    用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat 
linux 的虚拟文件系统:VFS
查看当前支持的文件系统:cat/proc/filesystems

创建文件系统


mkfs命令:
     (1):mkfs.ext4/der/...
                 xfs
                 btrfs
                 vfat

创建ext文件系统


mke2fs:ext系列文件系统专用管理工具 
    -t {ext2|ext3|ext4} 
    -b {1024|2048|4096} 
    -L 'LABEL'
    -j: 相当于 -t ext3 
    mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
    -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于 block的大小 
    -N #:指定分区中创建多少个inode 
    -I 一个inode记录占用的磁盘空间大小,128---4096
    -m #: 默认5%,为管理人员预留空间占总空间的百分比 
    -O FEATURE[,...]:启用指定特性
    -O ^FEATURE:关闭指定特性

tune2fs


      tune2fs:重新设定ext系列文件系统可调整参数的值 
      -l:查看指定文件系统超级块信息;super block 
      -L 'LABEL':修改卷标 
      -m #:修预留给管理员的空间百分比 
      -j: 将ext2升级为ext3
      -O: 文件系统属性启用或禁用, –O ^has_journal 
      -o: 调整文件系统的默认挂载选项,–o ^acl 
      -U UUID: 修改UUID号
           tune2fs -U`uuidgen` /dev/sdb1
                uuidgen[这个命令可以自动生成UUID]
      dumpe2fs: 
          块分组管理,32768块
          -h:查看超级块信息,不显示分组信息

例:tune2fs -l /dev/sdr[查看文件系统]
tune2fs -o acl /dev/sdr [手工添加acl]
tune2fs -o ^acl /dev/sdr[删除acl] 
[acl 类似于权限密码]
如:setfacl -m u:dang:rw f1[给dang用户rw权限对于f1文件]

文件系统检测和修复


常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复  

fsck: File System Check
fsck.FS_TYPE fsck -t FS_TYPE
-p: 自动修复错误 
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具 
-y:自动回答为yes 
-f:强制修复
例:fsck -y /dev/sdb/[修复文件系统,,注意要取消挂载后再修复,否则会破坏数据]

挂载mount


挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此 目录做为其它文件访问入口的行为 
挂载:mount  +挂载设备+挂载点
卸载:umount  可以使用设备或挂载点
挂载点下原有的文件在挂载后会被临时隐藏
挂载点目录一般为空

mount常用命令选项


-t vsftype:指定要挂载的设备上的文件系统类型 
-r: readonly,只读挂载 
-w: read and write, 读写挂载 
-n: 不更新/etc/mtab,mount不可见 
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选 项中有auto功能) 
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备 
-B, --bind: 绑定目录到另一个目录上

查看内核追踪到的已挂载的所有设备 cat /proc/mounts   

mount常见命令选型


-o options:(挂载文件系统的选项),多个选项使用逗号分隔
    async:异步模式 sync:同步模式,内存更改时,同时写磁盘
    atime/noatime:包含目录和文件
    diratime/nodiratime:目录的访问时间戳
    auto/noauto:是否支持自动挂载,是否支持-a选项
    exec/noexec:是否支持将文件系统上运行应用程序
    dev/nodev:是否支持在此文件系统上使用设备文件
    suid/nosuid:是否支持suid和sgid权限 
    remount:重新挂载 
    ro:只读
    rw:读写
    user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
    acl:启用此文件系统上的acl功能
    loop: 使用loop设备 
    defaults:相当于rw, suid, dev, exec, auto, nouser, async

文件挂载配置文件


 /etc/fstab每行定义一个要挂载的文件系统 
 1、要挂载的设备或伪文件系统
    设备文件 
    LABEL:LABEL=""
    UUID:UUID=""
    伪文件系统名称:proc, sysfs 
 2、挂载点 
 3、文件系统类型:ext4,xfs,nfs,none 
 4、挂载选项:defaults ,acl,bind 
 5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储 
 6、fsck检查的文件系统的顺序:允许的数字是0, 1, 和2
     0:不自检
     1:首先自检;一般只有rootfs才用 
    2:非rootfs使用  

处理交换文件和分区


交换分区是系统RAM的补充
基本设置包括: 
    • 创建交换分区或者文件
    • 使用mkswap写入特殊签名 
    • 在/etc/fstab文件中添加适当的条目 
    • 使用swapon -a 激活交换空间 

挂载交换分区


启用:swapon
swapon [OPTION]... [DEVICE]
    -a:激活所有的交换分区 
    -p PRIORITY:指定优先级
    /etc/fstab:pri=value 
禁用:swapoff [OPTION]... [DEVICE] 

SWAP的优先级


可以指定swap分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从 -1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户 指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放  

猜你喜欢

转载自blog.51cto.com/13878155/2158262