创建文件系统
在设备或者硬盘分区上构建 Linux 文件系统的命令是 mkfs。
命令的语法是:
# mkfs [options] device
mkfs 命令实际上是不同文件系统构建器实用程序(例如 mkfs.ext2 和 mkfs.ext4)的前端。
这些实用程序可直接从命令行执行。
使用 mkfs 包装器时,包括 -t fstype 选项以指定要构建的文件系统的类型。
如果未指定,则创建默认文件系统类型 ext2.
要查看安装了哪些受支持的文件系统类型,请使用 ls /sbin/mkfs* 命令:
# ls -lrt /sbin/mkfs* -rwxr-xr-x. 1 root root 28624 Jun 10 2014 /sbin/mkfs.fat lrwxrwxrwx. 1 root root 8 Jan 7 2015 /sbin/mkfs.msdos -> mkfs.fat lrwxrwxrwx. 1 root root 8 Jan 7 2015 /sbin/mkfs.vfat -> mkfs.fat -rwxr-xr-x. 4 root root 96296 Aug 3 2017 /sbin/mkfs.ext4 -rwxr-xr-x. 4 root root 96296 Aug 3 2017 /sbin/mkfs.ext3 -rwxr-xr-x. 4 root root 96296 Aug 3 2017 /sbin/mkfs.ext2 -rwxr-xr-x. 1 root root 368464 Aug 4 2017 /sbin/mkfs.xfs -rwxr-xr-x. 1 root root 375240 Aug 6 2017 /sbin/mkfs.btrfs -rwxr-xr-x. 1 root root 37104 Dec 1 23:28 /sbin/mkfs.minix -rwxr-xr-x. 1 root root 36984 Dec 1 23:28 /sbin/mkfs.cramfs -rwxr-xr-x. 1 root root 11520 Dec 1 23:28 /sbin/mkfs
mkdosfs、mkfs.msdos 和 mkfs.vfat 文件是指向 mkfs.fat 的符号链接。
使用 mkfs
使用 mkfs 命令时创建的默认文件系统类型是 ext2.
如前所述,mkfs 是一个调用其他文件系统构建实用程序的包装器。
因此,以下任何命令都会在指定设备上创建 ext2 文件系统:
# mkfs /dev/xvdd1 # mke2fs /dev/xvdd1 # mkfs.ext2 /dev/xvdd1
要创建 ext3 文件系统,请使用以下任一命令:
# mkfs -t ext3 /dev/xvdd1 # mke2fs -t ext3 /dev/xvdd1 # mkfs.ext3 /dev/xvdd1
要创建 ext4 文件系统,请使用以下任一命令:
# mkfs -t ext4 /dev/xvdd1 # mke2fs -t ext4 /dev/xvdd1 # mkfs.ext4 /dev/xvdd1
文件系统类型
创建文件系统会将信息写入设备并创建空白空间的顺序。
这种与文件系统相关的数据只占用一小部分空间。
磁盘驱动器上的剩余空间被分成小的、大小一致的段,称为块。
Linux 支持多种文件系统类型,其中一些描述如下。
文件系统 | 描述 |
---|---|
ext2 | 适用于固定磁盘和可移动媒体的高性能 |
ext3 | ext2的日志版本 |
ext4 | 支持更大的文件和文件系统大小 |
vfat | MS-DOS 文件系统在 Windows 和 Linux 之间共享文件时很有用 |
XFS | 高性能日志文件系统 |
Btrfs | 满足大型存储系统的可扩展性要求 |
/etc/fstab 文件
/etc/fstab 文件称为文件系统挂载表,其中包含 mount 命令挂载设备所需的所有信息。
添加新文件系统时,在 /etc/fstab 中创建适当的条目以确保文件系统在引导时挂载。
以下是 /etc/fstab 文件中的条目示例:
# cat /etc/fstab LABEL=centos_root / ext4 defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 UUID=687eb83f-c16f-4fa9-bb49-1621eed3a35d /test ext4 defaults 0 0
第一列是要挂载的设备。
应使用 UUID 或者标签名称代替设备名称,因为设备名称可能会更改。
第二列是挂载点,除了交换分区条目。
第三列是文件系统类型。
第四列指定安装选项。
第五列由 dump 命令使用。
数字 1 表示转储文件系统,0 表示不需要转储文件系统。
fsck 程序使用最后一列来确定在重新启动时执行文件系统检查的顺序。
根文件系统的值应指定为 1,其他文件系统的值应指定为 2.
值 0 不检查文件系统。
文件系统标签
文件系统构建实用程序的一个有用选项是 -L name 选项。
这会为分区分配一个标签;挂载文件系统时,可以使用此标签代替设备名称。
标签的最大大小限制为 16 个字符。
对于现有的文件系统,e2label 命令用于显示或者设置标签。
文件系统会自动分配一个通用唯一标识符 (UUID)。
挂载文件系统时可以使用 UUID。
要显示 UUID、标签和文件系统类型,请使用 blkid 命令。
以下示例说明如何创建不同的文件系统(带标签和不带标签),并使用 blkid 命令显示信息。
要创建 ext2 文件系统并显示信息,请输入:
# mkfs /dev/xvdf1 # blkid /dev/xvdf1 /dev/xvdf1: UUID="41bae7c3-396a-436d-9764-d27d4ca3f17b" TYPE="ext2"
要创建 ext3 文件系统并显示信息,请输入:
# mkfs -t ext3 /dev/xvdf1 # blkid /dev/xvdf1 /dev/xvdf1: UUID="c8e958f4-e5d0-4404-8a9a-2cea24675fcd" SEC_TYPE="ext2" TYPE="ext3"
要创建 ext4 文件系统、分配标签名称并显示信息,请输入:
# mkfs -t ext4 -L "Test Label" /dev/xvdf1 # blkid /dev/xvdf1 /dev/xvdf1: LABEL="Test Label" UUID="687eb83f-c16f-4fa9-bb49-1621eed3a35d" TYPE="ext4"
配置文件
许多选项可用于自定义块大小、片段大小、每组块、日志选项、inode 数量和其他参数。
在不包含任何选项的情况下,使用 /etc/mke2fs.conf 配置文件中指定的默认值。
示例 /etc/mke2fs.conf 文件
挂载文件系统
不同分区上的文件系统和可移动设备(例如 CD、DVD 或者 USB 闪存驱动器)必须添加到要访问的目录层次结构。
要添加分区或者设备,必须创建安装点。
挂载点只是一个用 mkdir 命令创建的目录。
创建目录或者挂载点后,使用 mount 命令添加分区。
mount 命令的语法是:
# mount [options] device_file mount_point
以下示例创建一个挂载点 (/test) 并添加分区:
# mkdir /test # mount /dev/xvdf1 /test
或者,通过引用 UUID 或者标签来挂载分区或者设备。
以下示例使用 blkid 命令显示 UUID 和标签,并通过引用每个分区来挂载分区:
# blkid /dev/xvdf1 /dev/xvdf1: LABEL="Test Label" UUID="687eb83f-c16f-4fa9-bb49-1621eed3a35d" TYPE="ext4"
# mount LABEL="Test Label" /test # mount UUID="687eb83f-c16f-4fa9-bb49-1621eed3a35d" /test
不带任何选项的 mount 命令显示所有当前添加的文件系统:
# mount | grep test /dev/xvdf1 on /test type ext4 (rw,relatime,seclabel,data=ordered)
在本例中,/dev/xvdf1 分区挂载在 /test 上。
文件系统类型为 ext4 并且为读取和写入而挂载。
df 命令还显示挂载的文件系统。
例子:
# df -hP /test Filesystem Size Used Avail Use% Mounted on /dev/xvdf1 923M 2.4M 857M 1% /test
proc 文件系统中的信息显示已挂载的文件系统。
例子:
# cat /proc/mounts | grep test /dev/xvdf1 /test ext4 rw,seclabel,relatime,data=ordered 0 0
安装选项
要指定挂载选项,请使用 -o 标志后跟以逗号分隔的选项字符串。
以下是 mount 命令的一些可用选项:
- auto : 允许使用 mount -a 命令自动挂载文件系统
- loop :将图像安装为循环设备
- noauto :禁止使用 mount -a 命令自动挂载文件系统
- noexec :禁止在文件系统上执行二进制文件
- nouser :禁止普通用户(root 除外)挂载和卸载文件系统
- remount :如果文件系统已经被挂载,则重新挂载文件系统
- ro : 以只读方式挂载文件系统
- rw : 挂载文件系统进行读写
- user : 允许普通用户(root 除外)挂载和卸载文件系统
例如,要将 /dev/xvdf1 分区以只读方式挂载在 /test 挂载点上,并且只有 root 用户能够挂载和卸载文件系统,请输入:
# mount -o nouser,ro /dev/xvdf1 /test
要使用循环设备挂载 ISO 镜像(假设 ISO 镜像存在于当前目录中并且挂载点存在),请输入:
# mount -o ro,loop rhel7-x86_64-dvd.iso /media/cdrom
日志挂载选项
ext3 和 ext4 文件系统具有三个日志级别,可以使用 mount 命令或者 /etc/fstab 的选项部分中的 -o 选项进行设置:
- data=journal :最高级别。写日记最多的人。这将写入所有数据和元数据更改的日志条目。所有数据在写入主文件系统之前都会提交到日志中。
- data=ordered :默认模式。在将元数据提交到日志之前,所有数据都被直接强制输出到主文件系统。
- data=writeback :最低级别。不保留数据排序。在将元数据提交到日志后,数据可以写入主文件系统。
卸载文件系统
要卸载文件系统,请使用 umount 命令。
分区名称、设备名称或者安装点用作参数。
例子:
# umount /dev/xvdd1 # umount /test