首先我们需要了解什么是文件系统

  文件系统是操作系统用于明确存储设备(常见的是磁盘,或者固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。是操作系统中负责管理和存储文件信息的软件。

文件系统的主要功能

   管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。

文件系统的创建

  由于文件系统处于硬件底层与存储数据的中间层,所以存储数据之前,先得由内核创建文件系统。

Linux文件系统

   本地文件系统:ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap,vfat等,ext4为Centos6 默认文件系统,xfs,btrfs为Centos7上默认文件系统。

   网络文件系统:NFS, CIFS

   分布式文件系统:GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等

Linux文件系统

   分区工具:fdisk 

   创建工具:mkfs、mk2fs

   修改查询文件系统属性工具:tune2fs、blkid、e2label、dumpe2fs

   检测修复工具:fsck、e2fsck

下面细说各类工具

   分区工具:fdisk

   fdisk -l 显示当前分区信息  

[root@localhost ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009e339

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
...

进入正题对新磁盘进行分区

   fdisk /dev/sdb #进入

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x1eeab379.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n  #创建新分区
Command action  #选择分区类型
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):  #柱面开始位置
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): #柱面结束位置,也可以使用容量来分区
Using default value 2610

Command (m for help): p #显示分区信息

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x40f56705

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  83  Linux
Command (m for help): w   #写进磁盘
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# cat /proc/partitions  #查看内核是否读取到分区表信息,否则需要使用
partx -a /dev/sdb 让内核重新读取分区信息
major minor  #blocks  name

   8        0  125829120 sda
   8        1     204800 sda1
   8        2   62914560 sda2
   8       16   20971520 sdb
   8       17          1 sdb1
 253        0   20971520 dm-0
 253        1    2097152 dm-1
 253        2   10485760 dm-2
 253        3   20971520 dm-3

  以上就是分区过程。

    删除分区步骤:fdisk /dev/sdb  -> d ->w

    操作过程可能涉及到的参数:

      p: print, 显示已有分区;

      n: new, 创建

      d: delete, 删除

      w: write, 写入磁盘并退出

      q: quit, 放弃更新并退出

      l: 列表所分区id

      t: 调整分区id

      m: 获取帮助

    创建文件系统

       mkfs [-V] [-t fstype] [fs-options] filesys [blocks]   

[root@localhost ~]# mkfs -V -t ext4 -L 'data' /dev/sdb1  #-V显示创建过程 -t 指定创建文件类型可以是xfs等,-L 创建卷标
mkfs (util-linux-ng 2.17.2)
mkfs.ext4 -L data /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=data
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

   fdisk /dev/sdb ->n->t->w 

   cat /proc/partitions 得到一个分区 /dev/sdb1

   mkswap /dev/sdb1把一个分区格式化为交换分区

   swapon /dev/sdb1 加载交换分区

   swapon -s 查看交换区分

  查看文件系统工具

     blkid [OPTION]... [DEVICE] 查看所有分区UUID,LABEL,TYPE等

        -U UUID: 根据指定的UUID来查找对应的设备

        -L LABEL:根据指定的LABEL来查找对应的设备

[root@localhost ~]# blkid
/dev/mapper/vg0-var: UUID="26b5f45b-8033-44cc-9f31-ac44db121e8e" TYPE="ext4" 
/dev/sda1: UUID="34ca15e6-1dae-4197-94e6-1f5945fd2f6f" TYPE="ext4" 
/dev/sda2: UUID="Zfr3hO-EdZG-oNbd-URZp-FQXS-gwU9-cBbDTe" TYPE="LVM2_member" 
/dev/mapper/vg0-root: UUID="c115c94f-ec01-4052-82a8-05c7bfccf3fc" TYPE="ext4" 
/dev/mapper/vg0-swap: UUID="451eb1a4-af8f-478c-b577-2b628a5150de" TYPE="swap" 
/dev/mapper/vg0-usr: UUID="dcf06008-804e-4ff7-81fa-55c9d22234a8" TYPE="ext4" 
/dev/sdb1: UUID="d7f20d37-9282-4c9d-84d2-f2afa5657e60" TYPE="swap" 
/dev/sdb2: LABEL="data" UUID="18e3bdab-9d68-4c47-bc73-c4f6ac5bb5c3" TYPE="ext4"

     tune2fs 重新设定ext系列文件系统可调整参数的值。 常用参数选项:     

        -l:查看指定文件系统超级块信息;super block

        -L 'LABEL':修改卷标

        -m #:修预留给管理员的空间百分比

        -j: 将ext2升级为ext3

        -O: 文件系统属性启用或禁用

        -o: 调整文件系统的默认挂载选项

        -U UUID: 修改UUID号

     dumpe2fs 
        -h 查看超级块状态


    文件检测工具

  fsck: File System CheCk

    fsck -t FS_TYPE

        -a: 自动修复错误

        -r: 交互式修复错误

      注意: FS_TYPE一定要与分区上已经文件类型相同


  e2fsck:ext系列文件专用的检测修复工具

        -y:自动回答为yes; 

        -f:强制修复;


Linux文件系统管理_linux文件系统