格式化磁盘分区详解

格式化磁盘分区详解

前言

磁盘分区虽然分好区了,但暂时还不能用,我们还须对每一个分区进行格式化。所谓格式化,其实就是安装文件系统。Windows 下的文件系统有 FAT32 和 NTFS。那么 CentOS7 以 XFS 作为默认的文件系统。当然也可以给它指定 ext3 和 ext4 格式。


### 一, 查看文件系统

命令 mount

  • 命令语法
    mount(选项)(参数)

  • 命令描述
    mount 命令用于加载文件系统到指定的加载点。此命令的最常用于挂载 cdrom,使我们可以访问 cdrom 中的数据,因为你将光盘插入 cdrom 中,Linux 并不会自动挂载,必须使用 Linux mount 命令来手动完成挂载。

  • 命令选项
    -V:显示程序版本;
    -l:显示已加载的文件系统列表;
    -h:显示帮助信息并退出;
    -v:冗长模式,输出指令执行的详细信息;
    -n:加载没有写入文件“/etc/mtab”中的文件系统;
    -r:将文件系统加载为只读模式;
    -a:加载文件“/etc/fstab”中描述的所有文件系统。


### 二,磁盘格式化

####1. 命令 mke2fs

  • 命令语法
    mke2fs(选项)(参数)

  • 命令描述
    mke2fs 命令被用于创建磁盘分区上的“etc2/etc3”文件系统。

  • 命令选项
    -b 表示分区时设定每个数据区快占用的空间大小。目前,每个数据块支持 1024B,2048B 以及 4096B;
    -m 指定空间预留大小;
    -i 表示设定 inode 的大小,默认一个 inodes 对应四个 blocks;
    -N 表示设定 inode 的数量。有时默认的 inode 数不够用,所以要自定义 inode 的数量;
    -c 表示在格式化前先检测一下磁盘是否有问题。加上这个选项后,运行速度会非常慢;
    -L 表示预设该分区的标签 (label);
    -j 表示建立 ext3 格式的分区。如果使用 mkfs.ext3 格式,就不用加这个选项了;
    -t 用来指定文件系统的类型。可以是 ext2,ext3,也可以是 ext4。

  • 命令示例

- 选项 -b 为分区重新设定空间大小

[root@localhost ~]# mke2fs -b 2048 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 1572864 blocks
78643 blocks (5.00%) reserved for the super user    //这里的5%是预留给root用户的
第一个数据块=0
Maximum filesystem blocks=538968064
96 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成 

- 使用选项 m,把预留空间设置成 0.1%

[root@localhost ~]# mke2fs -t ext4  -m 0.1 /dev/sdb1    //注意在使用m选项的时候,需要指定系统为ext4,不然默认是ext2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
7864 blocks (1.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成 

####2. 使用 mke2fs 把 /dev/sdb 格式化成 ext4 系统

[root@localhost ~]# mke2fs -t ext4 /dev/sdb1   //这里的mkfs.ext4 ==== mke2fs -t ext4 /dev/sdb1  
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

说明: 在格式化磁盘之前,要有自己的磁盘,和分好的磁盘分区,这里的我的分区名叫 sdb1 ,如上图可见。


####3. 使用 mkfs 如何把 /dev/sdb 格式化成 XFS 系统

[root@localhost ~]# mkfs.xfs -f  /dev/sdb1   // -f是强制的意思

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

####4. blkid 命令查看挂载的分区
这时候我们用 mount 命令还看不到 /dev/sdb1 , 因为你还没有把文件系统挂载到任何的挂载点上。
那么如何查看还没有挂载的分区呢

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="1a2f217e-e847-4017-b218-a9af5c823907" TYPE="xfs"   //可以看出这里的文件系统是xfs

####5. 选项 -i

  • -i 选项指定多少个字节对应一个 inode,默认是 4 个块,一个块是 4k,4 个块就是 16k。感觉 16k 有点多改成 8k,如下。
[root@localhost ~]# mke2fs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks      //可以看出这是1/4的比例。大概一个inodes对应四个blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 


[root@localhost ~]# mke2fs -i 8192 -t ext4 /dev/sdb1      //改成4个快为8k
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
393216 inodes, 786432 blocks   //可以看出这里已经是 1/2的比例了。
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

#### 注意

mkfs.xxx 和 mk2fs.xxx 支持的选项是一致的。
mke2fs 命令被用于创建磁盘分区上的“etc2/etc3”文件系统。不支持 xfs 文件系统。 每次在用 mke2fs 的时候需要
-t 来指定系统文件。 用 mkfs -f 可以设置 XFS 文件系统,用 mkfs 可以设置成 ext4 文件。注意区分。