将硬盘从 /dev/sdb1 移至 /dev/sdc1

将硬盘从 /dev/sdb1 移至 /dev/sdc1

在备份过程中bash 脚本,我应该将安装在 上的硬盘重新安装到dev/sdb1dev/sdc1

我可以umount /dev/sdb1,但之后我失去了设备的踪迹。关闭机器后,它会被安装,/dev/sdc1因为/etc/fstab

有没有一种简单的方法可以重新分配 /dev/sdb1/dev/sdc1无需关机?

答案1

听起来我们有一个XY问题这里。

您的问题不是重命名设备 - 而是正确配置 fstab,以便无论为设备分配了什么名称,挂载始终有效。这是解决方案,因为名称分配不可靠。例如,如果您在启动时连接了外部硬盘,则名称可能会更改。

解决方案是使用分区 UUID、文件系统 UUID、分区名称或文件系统名称,具体取决于您的用例更有意义。

用于blkid检查设备的可用标识符。以下是我的计算机上的示例:

# blkid /dev/sdb1
/dev/sdb1: UUID="9f3343e4-e078-460c-96af-aa78ab3a3b0f" TYPE="crypto_LUKS" PARTLABEL="pop1804_os" PARTUUID="1c79ae2c-6d1b-4656-b6fa-b4419eccd234"

根据文件系统和分区表类型,您可以看到一些可用的标识符:

  • UUID:文件系统 UUID
  • LABEL:文件系统标签
  • PARTUUID:分区 UUID(仅限 GPT)
  • PARTLABEL:分区名称(仅限 GPT)

UUIDLABEL会在分区格式化时改变,但在克隆时不会改变。PARTUUID和 则PARTLABEL相反,它们在格式化期间不会改变,但在克隆期间可能会改变,因为它们不是文件系统的一部分。

您可以将 fstab 中的设备名称替换为 返回的标识符blkid(不带引号)。例如,您可以将其替换/dev/sdb1UUID=9f3343e4-e078-460c-96af-aa78ab3a3b0f

在重启之前用来mount -a测试您的 fstab。请确保先卸载您正在测试的文件系统,因为mount如果它们已经挂载,则会跳过这些 fstab 行,即使在给定的挂载点连接了不同的设备。


相关,除了man fstab

第一个字段(fs_spec)。

可以使用 LABEL= 或 UUID= 来代替设备名称。这是推荐的方法,因为设备名称通常与硬件检测顺序一致,并且可能会在添加或删除其他磁盘时发生变化。例如,“LABEL=Boot”或“UUID=3e6be9de-8139-11d1-9106-a43f08d823a6”。(使用文件系统特定的工具,如 e2label(8)、xfs_admin(8) 或 fatlabel(8) 在文件系统上设置 LABEL)。

也可以使用 PARTUUID= 和 PARTLABEL=。例如,GUID 分区表 (GPT) 支持这些分区标识符。

[...]

请注意,mount(8) 使用 UUID 作为字符串。UUID 的字符串表示应基于小写字符。

相关内容