文件系统和uuid在Linux系统上有着特殊的关系。这些很长的标识符是什么?如何查看它们与磁盘分区之间的连接?
/etc/fstab文件在Linux系统中是一个非常重要的文件。它包含的信息允许系统连接到磁盘分区,并确定它们应该安装在文件系统中的什么位置。虽然这个文件多年来一直扮演着重要的角色,但它的格式随着uuid的引入而改变,在某些系统上,它的文件系统类型更加可靠。
下面是Fedora系统上的/etc/fstab文件示例:
$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar 12 12:26:55 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=a9e33237-9114-44ae-afd5-8ddb231d301f / btrfs subvol=root 0 0
UUID=15f42905-5897-4804-9c51-e6d5e169e6c2 /boot ext4 defaults 1 2
#UUID=a9e33237-9114-44ae-afd5-8ddb231d301f /home btrfs subvol=home 0 0
UUID=d867ced1-8d81-47c6-b299-3365ba8a02de /home ext4 defaults
文件中的每一行(注释除外)表示一个文件系统,有六个字段。
- 描述磁盘分区(下面将详细介绍uuid)
- 标识装入点
- 显示文件系统类型(可以是ext4、xfs、btrfs、f2fs、vfat、ntfs、hfsplus、tmpfs、sysfs、proc、iso9660、udf、squashfs、nfs、cifs或其他类型)
- 提供装载选项
- 确定是否可以使用dump命令(不常用)转储文件系统(0=不)
- 确定是否应在启动时执行文件系统检查(0=不)
btrfs文件系统是一个现代的Linux写拷贝(copy-on-write,CoW)文件系统,它提供了高级功能,同时还注重容错、修复和易于管理。
上面显示的/etc/fstab文件是不寻常的,因为最近刚在/dev/sda上安装了一个新操作系统,并且在升级之前(在一个单独的磁盘上)系统中的/home文件夹在注释掉对/home的第一个引用之后被重新安装。
什么是uuid?
在/etc/fstab中看到的那些被标记为UUID(universalunique identifier)的冗长设备标识符是128位(32个十六进制字符)长的,并按8-4-4-4-12字符序列排列。查看uuid如何与设备名(例如,/dev/sda1)连接的一种方法是使用blkid命令。
$ sudo blkid
/dev/sda1: UUID="15f42905-5897-4804-9c51-e6d5e169e6c2" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="01a5b4ea-01"
/dev/sda2: LABEL="fedora_localhost-live" UUID="a9e33237-9114-44ae-afd5-8ddb231d301f" UUID_SUB="25ba7101-46bd-4eb8-87d4-91b404f93a4c" BLOCK_SIZE="4096" TYPE="btrfs" PARTUUID="01a5b4ea-02"
/dev/sdb1: UUID="d867ced1-8d81-47c6-b299-3365ba8a02de" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="drive2" PARTUUID="5cf63888-8b4a-4d13-8453-4eb3a87c3e09"
/dev/zram0: UUID="3b156a62-8b04-4725-b5ea-f0d817ff4109" TYPE="swap"
/dev/sdc1: UUID="76E8-CACF" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="fa2cb833-01"
您还可以签出by uuid文件以查看关系:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx. 1 root root 10 Mar 12 13:46 15f42905-5897-4804-9c51-e6d5e169e6c2 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Mar 14 11:52 76E8-CACF -> ../../sdc1
lrwxrwxrwx. 1 root root 10 Mar 12 13:46 a9e33237-9114-44ae-afd5-8ddb231d301f -> ../../sda2
lrwxrwxrwx. 1 root root 10 Mar 12 13:46 d867ced1-8d81-47c6-b299-3365ba8a02de -> ../../sdb1
作为/dev/sdc1安装的76E8-CACF设备是一个临时使用的USB驱动器。
您可以通过自己运行uuidgen来了解Linux如何生成uuid。通过键入“which uuidgen”检查它是否在您的系统中。这些标识符在所有实际用途中都是唯一的。当您输入uuidgen命令时,您将得到超过3.40×1038个可能的响应中的任何一个。
$ uuidgen
8e487c4e-6ec6-4c27-95c4-11ed8c3a9bbf
$ uuidgen
57f5c0e1-fb6c-43cb-a909-89fcd682939c
使用lsblk
查看文件系统的另一种方便方法是使用lsblk命令,它可以清楚地查看文件系统与装入点、设备大小和主要/次要设备号的关系。此命令使每个驱动器上的分区易于可视化。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 110.8G 0 part /
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 434G 0 part /home
sdc 8:32 1 1.9T 0 disk
└─sdc1 8:33 1 1.9T 0 part /run/media/shs/76E8-CACF
sr0 11:0 1 1024M 0 rom
zram0 252:0 0 2.9G 0 disk [SWAP]
总结
Linux系统提供了许多查看文件系统的方法。一些命令可以帮助您理解/etc/fstab文件以及磁盘分区、文件系统和uuid之间的连接。