在 Linux 系统中支持什么样的文件类型呢?见下图, 以上是 CentOS 7 支持的文件系统格式。xfs 是系统默认的文件系统,怎么查看分区的文件系统是不是 xfs ,输入命令 mount ,回车,见下图, 会出现很多其他的分区,但是我们只要关注 /dev/ 开头的就可以了,后面有 xfs ,就是系统默认的文件系统。像 / , /boot 这些都是 xfs ,swap 有它自有的分区格式。 接下来,见下图, 前面把分区删除掉了,所有要重新创建一个主分区 sdb1 。 格式化命令为 mke2fs ,有几个常用的选项: -t + 文件系统格式 :指定格式化文件系统; -b + 大小 :指定块大小; 关于块,有一些说明,见下图, 上图中,lys.txt 原本是没有内容,占用的大小为 0 ,用命令 du -sh 查看的时候,也是 0 。然后在文件 lys.txt 上写入内容之后,用命令 ls -lh 查看,有 2 的大小,用命令 du -sh 再次查看就显示为 4.0K 了。说明文件内容为空的时候,是不占用块的大小,写入内容之后,不管多小都会占用一个块。使用命令 du -sb 也可以查看文件的实际大小,结果和命令 ls -lh 是一样的。 现在设置一下块大小,见下图, 结果不太理想,那就使用命令 man mke2fs ,回车,来查看一下, 找到 -t 的用法,可以从上图红色框框上看出,命令 mke2fs 不支持 xfs 文件系统,支持的是 ext 文件系统。那么要是想格式化成 xfs 文件系统,这边还有一个命令,xfs 先暂时放一下,后面再说,见下图, 上图命令,实际上 mkfs.ext4 的结果和 mke2fs -t ext4 的结果是一样的。输入命令 mke2fs -t ext4 /dev/sdb1 ,回车,系统就格式化成 ext4 文件系统。Linux 系统可以格式化多次,接着再试一下 mkfs.ext4 命令,见下图, 格式化完成了。以上是格式化 ext 文件系统的情况,接下来格式化 xfs 文件系统,见下图, xfs 文件系统无法使用 mke2fs -t xfs 命令,接着试一下命令 mkfs.xfs /dev/sdb1 ,跳出提醒说系统已经有一个文件系统格式了,要重新格式化的话,需要加 -f ,就是 force 强制的意思。所以后面输入命令 mkfs.xfs -f /dev/sdb1 ,结果就成功了。现在的文件系统是 xfs 。接下来用命令 mount ,回车,查看,见下图, 会发现没有 /dev/sdb1 这个分区,那是因为还没有把这个文件系统挂载到任何的挂载点上。如果想看一个还没有挂载的分区,可以使用命令 blkid 查看,见下图,
接下来看一下 mke2fs -b 的用法,见下图, 会跳出提示说块设置 8192 太大了。一般系统上存视频,音乐,高清图片之类的大文件时,建议设置块大一点,读写会快一点。一般存小文件,基本上不到 4KB 的话,建议设置块小一点,可以 2048 。
接下来看一下 mke2fs -m 的用法,见下图, mke2fs -m 设置的是,预留给 root 超级用户的空间,一般默认是 5.00% ,我们可以通过 -m 来设置小一点,上图就把这个预留空间设置成 1.00% 了。还可以更小一点,见下图, 如果没有指定文件系统,用 blkid 命令查看,见下图, 可以看到,不指定文件系统的话,默认就是 ext2 ,这个太老了,还是要指定一下,见下图, 上图这个命令的唯一不足就是不支持 xfs ,再来看看 xfs 可以支持 -m 这个用法吗?见下图, 可以看出是不支持的,但是 ext 文件系统就可以这样用, 综上所述,mkfs.ext4 和 mke2fs 的用法是一致的。 前面说过 inode 是在格式化分区的时候创建的,上图中也可以看出提示:正在写入inode表。再来看下图, 1个 inode 对应4个块,感觉 inode 有点少了,可以设置为1个 inode 对应2个块,见下图, 现在就变成1个 inode 对应2个块了,inode 数量明显增加。这个就是 -i 的作用。
总结: mke2fs -b :指定块大小; mke2fs -m :指定预留空间大小; mke2fs -i :指定多少字节对应1个 inode ; mkfs.xfs /dev/sdb1 :格式化磁盘分区的文件系统为 xfs 。