我有两个磁盘,每个磁盘都有两个分区,一个 SSD(/dev/sdb
)具有主启动分区,另一个 HDD(/dev/sda
)用于备份。
然后我在 USB 实时环境中使用将 SSD 的主分区(具有启动功能)克隆dd
到备份 HDD 中的分区:
dd if=/dev/sdb2 of=/dev/sda2
现在,我重新启动后,系统将从克隆的分区启动/引导/dev/sda2
!
如何设置系统应启动/引导哪个分区?我想使用/dev/sdb2
和 而不是来启动/dev/sda2
,因为 SSD 比 HDD 快得多。
更多信息:
fdisk -l
两个磁盘的相关输出:
Disk /dev/sda: 1,84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: WDC WD20EZAZ-00L
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 350C6598-6531-43D3-9303-26B80124EDDA
Device Start End Sectors Size Type
/dev/sda1 2048 1953128447 1953126400 931,3G Linux filesystem
/dev/sda2 1953128448 3907028991 1953900544 931,7G Linux filesystem
Disk /dev/sdb: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 870
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 881AE800-FEC8-4EEA-B0C5-5CAE0E2B47F2
Device Start End Sectors Size Type
/dev/sdb1 2048 1050623 1048576 512M EFI System
/dev/sdb2 1050624 1953523711 1952473088 931G Linux filesystem
相关输出lsblk
:
...
sda 8:0 0 1,8T 0 disk
├─sda1 8:1 0 931,3G 0 part /mnt/backupA
└─sda2 8:2 0 931,7G 0 part /
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 512M 0 part /boot/efi
└─sdb2 8:18 0 931G 0 part
答案1
经过一上午对这个问题的思考(Linux 很有挑战性 :),感谢发表评论的用户,也为了与其他用户分享信息,我分享了我的结论:
由于两个不同的分区中存在相同数据的两个精确副本(
/dev/sda2
和/dev/sdb2
),因此也具有相同的数据UUID
,因此系统始终/dev/sda2
以 root 身份启动/
显然,除非设置了,否则
/etc/fstab
根安装点会被忽略。我尝试在两个分区(原始分区和克隆分区)中设置了,但系统总是以 开始。因此,不要将 用作根安装点,因为它不起作用。/
UUID
/dev/sdb2 / ...
/etc/fstab
/dev/sda2
/dev/sdbx
/etc/fstab
/
经过调查,我意识到
UUID
根分区至少出现在 3 个不同的位置:A)
/boot/efi/EFI/ubuntu/grub.cfg
B)/proc/cmdline
C)/etc/fstab
因此,正如评论中所建议的,最安全的解决方案是更改
UUID
克隆分区的。
我做了什么
我使用 USB 启动了实时环境的计算机,因为需要修改 UUID 的分区必须卸载
然后我运行
tune2fs /dev/sda2 -U random
更改(克隆分区)的 UUID/dev/sda2
。运行之前tune2fs
我还必须运行,e2fsck /dev/sda2 -f -p
因为tune2fs
要求如此。用 确认
sudo blkid
。