Linux上的文件系统和uuid

文件系统和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之间的连接。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁

评论区

Protected with IP Blacklist CloudIP Blacklist Cloud