我有一个基于 800MHz Intel Atom 的自制媒体服务器,带有两个大 LVM 驱动器,还有一个 250GB 2.5" 驱动器上的 Debian 9。后者显示坏块,所以我打算更换它。
我从 Debian live CD 启动,并将整个 250GB 磁盘表面添加到新的 WD Blue 1TB 驱动器上,并将dd if=/dev/sda of=/dev/sdd
新磁盘连接到 USB-SATA 接口。然后我将驱动器安装到媒体服务器中,替换了 250GB 的驱动器。机器在启动时挂起,就在打印驱动器 ID 之后、启动加载程序启动之前。引导加载程序是 grub 遗留的。我从 live CD 启动并 chroot 到克隆中,看起来工作正常。所以我安装了LVM卷,并将grub2安装到了新的/dev/sda,据称已经成功。但从新的硬盘启动仍然会像以前一样锁定机器。我还运行过update-initramfs -u -k all
、grub-install
、update-grub
以及whathaveyou,正如人们所期望的那样。
然后我尝试了这张启动修复光盘这也声称成功,但对结果没有影响。机器在通电后过早挂起。
有人警告我在驱动器前面附近没有一个小的 /boot 分区,所以我现在创建了一个。没有不同。我还尝试在第一个分区之前留下 6MB 间隙,对齐 4K 扇区等等,每次都重复整个 grub 安装和引导修复磁盘尝试。每次:无法启动,在进入 BIOS 屏幕之前崩溃,但是从 CD 启动并且可以 chroot 进入它,因此数据看起来完好无损。
改装旧驱动器效果很好(目前)。
这是一台非常简单的机器,MBR msdos 式引导,没有 EFI,只安装了一个操作系统。
机器无法从旧的 250GB 驱动器克隆到 1TB 驱动器上启动是否有充分的理由?它是怎么知道的?驱动器 ID 没有出现在/boot/grub
我能找到的任何地方。都是UUID。
旧驱动器有 512B 物理扇区,新驱动器有 4096B 物理扇区,但它有 512B 模拟,对吧?
以下是针对新驱动器运行的引导修复 CD 的一些输出。
Drive: sda _____________________________________________________________________
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
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: dos
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 * 1,036,288 477,345,791 476,309,504 83 Linux
/dev/sda2 477,347,840 1,953,525,167 1,476,177,328 5 Extended
/dev/sda5 477,349,888 489,932,799 12,582,912 83 Linux
/dev/sda3 12,288 1,036,287 1,024,000 83 Linux
Drive: sdb _____________________________________________________________________
Disk /dev/sdb: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
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
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sdb1 1 4,294,967,295 4,294,967,295 ee GPT
GUID Partition Table detected.
Partition Attrs Start Sector End Sector # of Sectors System
/dev/sdb1 3415,628,048,06415,628,048,031 Logical Volume Manager (LVM) partition (Linux)
Attributes: R=Required, N=No Block IO, B=Legacy BIOS Bootable, +=More bits set
Drive: sdc _____________________________________________________________________
Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
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
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sdc1 1 4,294,967,295 4,294,967,295 ee GPT
GUID Partition Table detected.
Partition Attrs Start Sector End Sector # of Sectors System
/dev/sdc1 2,048 5,860,532,223 5,860,530,176 Logical Volume Manager (LVM) partition (Linux)
Attributes: R=Required, N=No Block IO, B=Legacy BIOS Bootable, +=More bits set
"blkid" output: ________________________________________________________________
Device UUID TYPE LABEL
/dev/loop0 squashfs
/dev/mapper/exported-archive 4b899a61-2f1c-4cd8-bc32-ce435912ba87 ext3
/dev/mapper/exported-media 36a5370f-d49a-4da3-9bc8-fefa0d005f4f ext3
/dev/mapper/exported-photos af677e44-2a83-4aba-8b37-c38c3b07a10b ext3
/dev/mapper/exported-web 27040136-28bf-464d-9802-c20511ad661f ext3
/dev/sda1 7788ea31-5e63-4869-a80e-40c99c6128b3 ext3
/dev/sda3 6f547317-4688-435f-a69d-787bf7262f29 ext3 boot
/dev/sda5 a311a5cb-4f03-4930-a028-bf87b4dd8e55 swap swap
/dev/sdb1 yGbmYE-Lvk1-8lZj-0xQz-u57b-L1sV-0RjV66 LVM2_member
/dev/sdc1 ShaGRu-GqRZ-4fS3-k0zp-g5x4-5Kae-uLoC9o LVM2_member
/dev/sr0 2017-10-29-01-25-15-00 iso9660 Boot-Repair-Disk 32bit
/dev/zram0 a9802c34-25bd-4f6f-b3e5-d75c62fe8adc swap
/dev/zram1 5ea34823-7d6a-4ac5-bb49-7fa9c8bbecea swap
/dev/zram2 dcc2c96c-1f33-4604-b5ac-d62964731bd4 swap
/dev/zram3 0eb6d924-359e-4fed-b904-788ce185bb0a swap
答案1
预利姆
我假设你已经备份了——冗余度与数据的价值成正比!
dd
以及 tarball
所以……你做了一个完整的设备dd
呃……呃。
坏块源磁盘的两倍。对于完全不同的源和目标磁盘架构
以下是一些细微的改进(仅出于完整性目的),我并不真正期望真正的好处。我推荐的是下面这些
分区dds
手动对新磁盘进行分区;dd
每个分区单独
分区副本
手动对新磁盘进行分区; MKFS;高级复制文件系统。
cp -a
给我带来了tar c... source|tar x... target
麻烦
但我假设您已经尝试过上述方法,但没有成功。所以…
新的磁盘可以用吗?
尝试在新磁盘上安装全新的 debian。有效吗?
如果没有,我们当然正在处理一个完全不同的问题
假设是,那么
并排
[为简单起见,我假设你避开 LV 的东西]
- 安装新操作系统时(上图)手动分区并选择二根系统 — 一个用于当前(新)安装,另一个用于旧的(副本)。让我们将它们标记为 DebCurrent DebOld
- 继续在 DebCurrent 中进行新安装
- 将旧磁盘根目录复制到 Debold
- 重新点
/etc/fstab
Debold - [假设 DebCurrent 启动]
- 开机时
- 输入grub提示符
- 打开 DebCurrent 的工作节
- 手动编辑指向 DebOld;尝试开机
但是……(我猜)问题仍然存在。它是一个
硬件不匹配问题
也许问题在于
- 主板旧(MBR-BIOS)
- 磁盘是新的 — 更喜欢 gpt
爱奥瓦默认值是:
old: BIOS-MB + MBR-disk
new: EFI-MB + gpt-disk
不可能混合匹配,即在 Windows 世界中,如果不花更多钱购买新的 EFI MB,这是无法解决的。
然而在linux世界中你可以使用带有 BIOS-MB 的 GPT 磁盘 关键是您需要创建一个 BBP——靠近磁盘开头的一个微小的 1MB 特殊 BIOS 启动分区。
你可以这样做分手了虽然我建议所有 gpt 事情都要完成g磁盘
稍后添加
制作 bbp
我强烈建议对于 gpt 磁盘,实际分区使用 gdisk 完成。这可以很好地保持对齐。此后,使用 (g)parted 将类型标记为 BBP 可能会更容易。请注意上面的 parted 和 gdisk 链接