3 挂载存储设备 #
本章概述在挂载设备期间会使用哪些设备标识符,并提供有关挂载网络存储设备的细节。
3.1 了解 UUID #
UUID(全球唯一标识符)是表示文件系统的 128 位数字,在本地系统和其他系统中都是唯一的。它根据系统硬件信息和时戳(做为其种子的一部分)随机生成。UUID 通常用于唯一性标记设备。
   使用非永久性的“传统”设备名称(例如 /dev/sda1)可能会使系统在添加存储设备后无法引导。例如,如果将根 (/) 指派给 /dev/sda1,则在挂接 SAN 或将其他硬盘加入系统后,系统可能会将它重新指派给 /dev/sdg1。在此情况下,需要调整引导加载程序配置和 /etc/fstab 文件,否则系统将无法引导。
  
   默认情况下,引导加载程序以及引导设备的 /etc/fstab 文件中会使用 UUID。UUID 是文件系统的一个属性,如果重新格式化驱动器,UUID 会更改。如果不想使用设备名称的 UUID,另一种替代方法是使用 ID 或标签识别设备。
  
   您还可以将 UUID 用做组装与激活软件 RAID 设备的准则。创建 RAID 时,md 驱动程序会为该设备生成一个 UUID,并将该值存储在 md 超块中。
  
   您可以在 /dev/disk/by-uuid 目录中找到任何块设备的 UUID。UUID 项目示例如下所示:
  
> ls -og /dev/disk/by-uuid/
lrwxrwxrwx 1 10 Dec  5 07:48 e014e482-1c2d-4d09-84ec-61b3aefde77a -> ../../sda13.2 udev 的永久设备名称 #
   从 Linux 内核 2.6 开始,udev 使用永久性设备命名方式,为动态的 /dev 目录提供了一种用户空间解决方案。作为热插拔系统的一部分,在系统中添加或删除设备时会执行 udev。
  
   使用一个规则列表来针对特定设备属性进行匹配。udev 规则基础设施(在 /etc/udev/rules.d 目录中定义)为所有磁盘设备提供了稳定的名称,不会随识别顺序或设备所使用的连接而改变。udev 工具检查内核创建的用来根据特定总线、驱动器类型或文件系统应用命名规则的每个相应块设备。有关如何定义自己的 udev 规则的信息,请参见 Writing
   udev Rules。
  
   除了内核提供的动态设备节点名称,udev 还会在 /dev/disk 目录中维护指向该设备的永久符号链接的类。该目录进一步细分为 by-id、by-label、by-path 和 by-uuid 子目录。
  
    除了 udev 之外,其他程序(如 LVM 或 md)也可生成 UUID,但它们不在 /dev/disk 中列出。
   
   有关使用 udev 来管理设备的详细信息,请参见第 29 章 “ 使用 udev 进行动态内核设备管理”。
  
   有关 udev 命令的详细信息,请参见 man 7 udev。
  
3.3 挂载网络存储设备 #
   对于某些类型的存储设备,需要为其配置网络并使网络可用,然后 systemd.mount 才会开始挂载这些设备。要推迟这种设备的挂载,请将 _netdev 和 x-systemd.requires=iscsi.service 选项添加到每个特定网络存储设备的 /etc/fstab 文件中。示例如下:
  
mars.example.org:/nfsexport /shared nfs defaults,_netdev,x-systemd.requires=iscsi.service 0 0
请勿使用 nofail 选项,因为这会导致计算机在引导时不等待特定存储设备成功挂载就继续引导流程。