首页 > 代码库 > Linux磁盘及文件系统管理

Linux磁盘及文件系统管理

Linux磁盘及文件系统管理


 CPU, Memory(RAM), I/O
 I/O: Disks, Ehtercard
     Disks: 持久存储数据

1 磁盘管理

1.1 硬盘接口类型

     IDE(ata):并口,133MB/s
     SCSI:并口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
     SATA:串口,6gbps
     SAS:串口,6gbps
     USB:串口,480MB/s
 
          并口:同一线缆可以接多块设备;
               IDE:两个,主,从
               SCSI:
                    宽带:16-1
                    窄带:8-1
          串口:同一线缆只可以接一个设备;
 
          IOPS:io per second(IO每秒)

1.2 硬盘类型

     硬盘:机械硬盘,固态硬盘;

1.2.1 机械硬盘

     track:磁道
     sector:扇区,512bytes
     cylinder:柱面
          分区划分基于柱面:
 
     平均寻道时间:
          5400rpm, 7200rpm, 10000rpm, 15000rpm
 
Linux的哲学思想:一切皆文件;
 
     设备类型:
          块(block):随机访问,数据交换单位是“块”;
          字符(character):线性访问,数据交换单位是“字符”;
 

1.2.2 固态硬盘

1.3 设备文件:FHS

     /dev
          设备文件:关联至设备的驱动程序;设备的访问入口;
 
     设备号:
          major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;
          minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口;
 
     mknod命令:
          make block or character special files
          mknod  [OPTION]...  NAME  TYPE  [MAJOR  MINOR]
               -m MODE:创建后的设备文件的访问权限;

 1.3.1 设备文件名:ICANN

     磁盘命名方式:
          IDE接口硬盘命令方式: /dev/hd[a-z]
               例如:/dev/hda, /dev/hdb
          SCSI, SATA, USB, SAS硬盘命令方式: /dev/sd[a-z]
 
          磁盘分区命名方式:
               /dev/sda#:
                    例如:/dev/sda1, ...
           注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#                       
 
                引用设备的方式:
                    设备文件名
                    卷标
                    UUID

1.4 磁盘分区

     磁盘分区:MBR, GPT

1.4.1 MBR(Master Boot Record)

     MBR(Master Boot Record):0 sector  主引导记录
 
     MBR分为三部分:
          446bytes:bootloader(引导装载程序),引导启动操作系统的程序;
          64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区;
               4主分区
               3主1扩展:
                    n逻辑分区
          2bytes:MBR区域的有效性标识;55AA为有效;
 
          主分区和扩展分区的标识序号是:1-4
          逻辑分区序号:5+,从5开始

1.4.2 GPT

     GPT:(GUID Partition Table)全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点
     支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted
     向后兼容MBR
     必须在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS)
     必须使用64位系统
     Mac、Linux系统都能支持GPT分区格式
     Windows 7/8 64bit、Windows Server 2008 64bit支持GPT

1.5 fdisk 命令

     1、查看磁盘的分区信息:
          fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况;
 
     2、管理分区
          fdisk  device
          fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;
 
     常用命令:
          n:创建新分区
          d:删除已有分区
          t:修改分区类型
          l:查看所有已经ID
          w:保存并退出
          q:不保存并退出
          m:查看帮助信息
          p:显示现有分区信息
 
     注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;
          cat  /proc/partitions,查看内核已识别的所有分区
          通知内核强制重读磁盘分区表:
               CentOS 5:partprobe [device]
               CentOS 6,7:partx, kpartx
                    partx -a [device]
                    kpartx -af [device]
 示例:
  1. [root@CentOS7-171 ~]# cat /proc/partitions
  2. major minor #blocks name
  3. 8 0 125829120 sda
  4. 8 1 512000 sda1
  5. 8 2 52428800 sda2
  6. 8 3 1048576 sda3
  7. 8 4 1 sda4
  8. 8 5 10485760 sda5
  9. 11 0 4228096 sr0
  10. [root@CentOS7-171 ~]# partx -a /dev/sda
  11. partx: /dev/sda: error adding partitions 1-5
  12. [root@CentOS7-171 ~]# partx -a /dev/sda
  13. partx: /dev/sda: error adding partitions 1-7
  14. [root@CentOS7-171 ~]# cat /proc/partitions
  15. major minor #blocks name
  16. 8 0 125829120 sda
  17. 8 1 512000 sda1
  18. 8 2 52428800 sda2
  19. 8 3 1048576 sda3
  20. 8 4 1 sda4
  21. 8 5 10485760 sda5
  22. 8 6 10485760 sda6
  23. 8 7 2097152 sda7
  24. 11 0 4228096 sr0

          分区创建工具:parted, sfdisk;

2 创建文件系统

格式化:
     低级格式化(分区之前进行,划分磁道)
     高级格式化(分区之后对分区进行,创建文件系统)
 
     元数据区,数据区
          元数据区:
               文件元数据:inode(index node)
                    大小、权限、属主属组、时间戳、数据块指针

               符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;
               设备文件:存储数据指针的空间当中存储的是设备号(major, minor);
 
          bitmap index:位图索引

2.1 VFS(Virtual File System)

     Linux的文件系统: ext2(无日志功能), ext3, ext4, xfs, reiserfs, btrfs
     光盘:iso9660
     网络文件系统:nfs, cifs
     集群文件系统:gfs2, ocfs2
     内核级分布式文件系统:ceph
     windows的文件系统:vfat, ntfs
     伪文件系统:proc, sysfs, tmpfs, hugepagefs
      Unix的文件系统:UFS, FFS, JFS
      交换文件系统:swap
      用户空间的分布式文件系统:mogilefs, moosefs, glusterfs

2.2 文件系统管理工具

2.2.1 创建文件系统的工具

     mkfs
     mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...
2.2.1.1 ext系列文件系统的管理工具
     mkfs.ext2, mkfs.ext3, mkfs.ext4
          mkfs -t ext2 = mkfs.ext2
  1. [root@Centos6.8-180 ~]# mkfs.ext2 /dev/sda3
  2. mke2fs 1.41.12 (17-May-2010)
  3. 文件系统标签=
  4. 操作系统:Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 655360 inodes, 2620699 blocks
  9. 131034 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=2684354560
  12. 80 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
  17. 正在写入inode表: 完成
  18. Writing superblocks and filesystem accounting information: 完成
  19. This filesystem will be automatically checked every 26 mounts or
  20. 180 days, whichever comes first. Use tune2fs -c or -i to override.
  1. [root@Centos6.8-180 ~]# blkid /dev/sda3
  2. /dev/sda3: UUID="f6bfa911-010c-4d39-83df-06bfce7cd572" TYPE="ext4" 
2.2.1.2 ext系列文件系统专用管理工具
2.2.1.2.1 mke2fs命令
     mke2fs [OPTIONS]  device
          -t {ext2|ext3|ext4}:指明要创建的文件系统类型
               mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
          -b {1024|2048|4096}:指明文件系统的块大小;
          -L LABEL:指明卷标;
          -j:创建有日志功能的文件系统ext3;
               mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
          -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode;
          -N #:直接指明要给此文件系统创建的inode的数量;
          -m #:指定预留的空间,百分比;
          -O [^]FEATURE:以指定的特性创建目标文件系统;加[^]表示关闭此特性,不加则是开户此特性

2.2.2 检测及修复文件系统工具

ext系列文件系统的专用工具:
2.2.2.1 e2fsck命令
     e2fsck : check a Linux ext2/ext3/ext4 file system
          e2fsck [OPTIONS]  device
               -y:对所有问题自动回答为yes;
               -f:即使文件系统处于clean状态,也要强制进行检测;
2.2.2.2 fsck命令:
     fsck:check and repair a Linux file system
     用于实现文件系统检测的工具
     因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行;
     -t fstype:指明文件系统类型;
          fsck -t ext4 = fsck.ext4
     -a:无须交互而自动修复所有错误;
     -r:交互式修复;       

2.2.3 查看其属性的工具

2.2.3.1 dumpe2fs命令
     dumpe2fs命令:显示ext系列文件系统的属性信息
          dumpe2fs  [-h] device
2.2.3.2 e2lable命令
     e2label命令:卷标的查看与设定
          查看:e2label device
          设定:e2label device LABEL
  1. [root@Centos6.8-180 ~]# e2label /dev/sda3
  2. [root@Centos6.8-180 ~]# e2label /dev/sda3 MYDATA
  3. [root@Centos6.8-180 ~]# e2label /dev/sda3
  4. MYDATA
  5. [root@Centos6.8-180 ~]# blkid /dev/sda3 /dev/sda3: UUID="98873684-812d-40ae-86ad-5065e17d205b" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA"

2.2.4 调整文件系统特性

tune2fs命令
     tune2fs [OPTIONS] device
          -l:查看超级块的内容;
 
          修改指定文件系统的属性:
               -j:ext2 --> ext3;
               -L LABEL:修改卷标;
               -m #:调整预留空间百分比;
               -O [^]FEATHER:开启或关闭某种特性;
               -o [^]mount_options:开启或关闭某种默认挂载选项
                    acl
                    ^acl
     tune2fs命令:查看或修改ext系列文件系统的某些属性
          adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
          注意:块大小创建后不可修改;

 2.3 链接文件

     链接文件:访问同一个文件不同路径;

2.3.1 硬链接

     硬链接:指向同一个inode的多个文件路径;
          特性:
               (1)目录不支持硬链接;
               (2)硬链接不能跨文件系统;
               (3)创建硬链接会增加inode引用计数;
     创建硬链接:
          ln  src  link_file
  1. [root@CentOS7-171 ~]# ln fstab.new fstab2

2.3.2 符号链接

     符号链接:指向一个文件路径的另一个文件路径;
          特性:
               (1)符号链接与文件是两人个各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加引用计数;
               (2)支持对目录创建符号链接,可以跨文件系统;
               (3)删除符号链接文件不影响原文件;但删除原文件,符号指定的路径即不存在,此时会变成无效链接;
      符号链接权限:lrwxrwxrwx

          注意:符号链接文件的大小是其指定的文件的路径字符串的字节数;
 
     创建符号链接:
          ln -s  src link_file
               -v:verbose
  1. [root@CentOS7-171 ~]# ln -s fstab fstab.link

磁盘和文件
     内核级文件系统的组成部分:
          文件系统驱动:由内核提供
          文件系统理工具:由用户空间的应用程序提供
 
    CentOS 6如何使用xfs文件系统:
  1. # yum -y install xfsprogs
        创建:mkfs.xfs
        检测:fsck.xfs        
  1. [root@Centos6.8-180 ~]# mkfs.xfs -f /dev/sda3
  2. meta-data=/dev/sda3 isize=256 agcount=4, agsize=655175 blks
  3. = sectsz=512 attr=2, projid32bit=0
  4. data = bsize=4096 blocks=2620699, imaxpct=25
  5. = sunit=0 swidth=0 blks
  6. naming =version 2 bsize=4096 ascii-ci=0
  7. log =internal log bsize=4096 blocks=2560, version=2
  8. = sectsz=512 sunit=0 blks, lazy-count=1
  9. realtime =none extsz=4096 blocks=0, rtextents=0
  10. [root@Centos6.8-180 Linux磁盘及文件系统管理