如何给装有 Linux 的笔记本更换 ssd,不重装系统的情况下?

2020-08-03 16:41:38 +08:00
 phpfpm

目前一块 500G 的 hdd

fdisk -l:
  
Disk /dev/sda: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500LM021-1KJ15
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: F4E44CEB-7501-40CD-949A-EF8BA7BFC1AF
  
Device     Start       End   Sectors   Size Type
/dev/sda1   2048      4095      2048     1M BIOS boot
/dev/sda2   4096 976771071 976766976 465.8G Linux filesystem
  
df -h:
  
/dev/sda2       458G   24G  411G   6% /

手头有一块 ssd,240G 的,想直接替换一下

其他的工具有:

其他的 linux 的电脑

支持双硬盘的 sata-usb dock

其他的 windows 的电脑

想问下怎么搞最简单的 best practice ?

Thanks♪(・ω・)ノ

3581 次点击
所在节点    问与答
35 条回复
autoxbc
2020-08-03 18:54:20 +08:00
@phpfpm #19 Partimage 仍然是基于分区来复制,复制之前的手动分区,复制之后的修改 fstab 和 grub.cfg 还是需要的

手动分区我更喜欢用 WinPE 来操作,Linux 读 Windows 生成的分区表很少出错,反过来则不一定

USB Dock 注意供电问题,不要预设板载 USB 3.0 有足够的输出功率
phpfpm
2020-08-03 19:07:47 +08:00
@Osk ubuntu 20.04 的 boot 貌似不是分区,是 /boot 目录,所以估计还是得改。

lvm,brtfs,ext4 这些分区格式跟迁移有啥本质区别呢?
phpfpm
2020-08-03 19:12:22 +08:00
@autoxbc dock 有外置供电,这点还好。

还以为有那种点击能用的迁移工具 ToT
Osk
2020-08-03 19:29:30 +08:00
@phpfpm 不管它是 /boot 抑或是 /boot/efi 还是咋的,反正有 bootloader 的分区要动。

lvm 可以把底层的磁盘布局抽象了,/ 等在 lv 中,新加入的硬盘加入 vg 内,然后移除旧硬盘的 pv,只需要重新安装 bootloader 就好,理论上系统运行中也可以实现迁移,这就是用 lvm 的优势之一。

而 btrfs 也有类似的功能,甚至比 lvm 更好,因为 btrfs 知道哪些 block 是需要迁移到新磁盘的,会更快,也可以在线迁移而不需要启动到 LiveCD 中,现在的 linux,这里挂个 tmpfs,那里放个 lock 文件,用 cp 或 rsync 在线复制系统会很痛苦,exclude 一长串,btrfs 和 lvm 就不一样。

另外,还有一点,不过我未验证过:xp 或 rsync 等遇到小文件会让人崩溃,而 btrfs 或 lvm 估计会大部分操作都是连续读写 io,速度有时会更快。仅仅是我的猜测,我没观察过 btrfs 和 lvm 迁移的 io 类型,lvm 有时无法与上层的 fs 配合好可能相当于 dd,对硬件的影响比较大吧。
gansteed
2020-08-03 19:42:24 +08:00
你可以看看这个: https://jiajunhuang.com/articles/2020_05_22-linux_clone_sys.md.html 我前不久才迁移过一次
Osk
2020-08-03 19:42:39 +08:00
另外楼主的电脑有 bios boot 分区却无 esp 分区,说明是 bios/legacy 模式启动的,新硬盘上要记住用 gdisk 分一个 bios boot 分区哦,grub2 推荐在 1M 以上,建议 2M.
然后分一个 / 分区,在其它 linux 上 cp /或 rsync /,然后 chroot,grub-install /dev/sdx,update-grub2,编辑 fstab 就完事
phpfpm
2020-08-03 20:03:38 +08:00
@Osk 但是很奇怪诶 是 legacy 但是分区却是 gpt 的,这个矛盾吗
Osk
2020-08-03 20:11:31 +08:00
@phpfpm 不矛盾,mbr 磁盘中,grub 会将自己的一部分代码(stage1 吧,忘了)放在 mbr 到第一个磁盘分区之间的区域,该区域大约有 2M 左右空间,之前 grub2 出现过 bug,未能正确处理好这部分写入操作,把第一个分区写炸了,印象中是如此。

gpt 分区中没了这部分空间,微软就搞出了 msr (但不是用于放 bootmgr 代码 ),grub2 也提出了 bios boot 分区,用来放 mbr 中嵌入区的引导代码。
Osk
2020-08-03 20:14:50 +08:00
@phpfpm 回答偏了,mbr+legacy/bios boot 和 gpt+uefi 这两个组合方式的限制是微软 client OS 的限制,据说 Windows Server 都没这限制,Linux 更不管了
alexkkaa
2020-08-03 20:26:40 +08:00
clonezilla 复制过去就行 不用改
xing2387
2020-08-03 23:37:15 +08:00
emmmmm 。。 我觉得这是很简单的事情。。。不会就干脆劝退 ubuntu 算了。。。(狗头保命
1. 要能卸载这个系统分区 -> 需要个 Live cd 之类的,用安装镜像写进 U 盘启动选“try ubuntu”就行。
2. 新硬盘可能比原有分区小 -> 调整分区大小,用自带的 gparted 就可以啦(有 GUI 的)。
3. 需要将分区数据拷到新硬盘 -> dd 就完事了,dd 完数据之后应该是能 mount 挂载的,挂载一下验证一下。
=========== 保险方法: ============
4. 启动到新硬盘上 -> 重启进入原硬盘上的 ubuntu,执行 update-grub 命令,会将新硬盘的系统识别到并更新到 grub 的配置里。再重启,grub 选项应该会多一个新硬盘上的 ubuntu,选他,就妥妥的进了新硬盘的 ubuntu 。
5. 安装引导 -> 在进了新硬盘的 ubuntu 后,grub-install 安装 grub 再 update-grub 更新配置。
6. 其他工作 -> 注释掉 fstab 中多余的分区挂载配置,只保留 /写入新硬盘的,uuid 可以在 gparted 上查到。
7. 完事了。
=========== 不保险但是很快的方法: ==============
4. 对新硬盘使用 grub-install,拔掉旧硬盘。或直接用 live cd 的 grub 。
5. 重启手动 grub:a. set root=xxx; b. linux xxx; c. initrd xxx; d. boot 。
6. 进去新硬盘的系统后就懂得都懂.jpg 了
xing2387
2020-08-03 23:42:35 +08:00
补充一下没看清楚题目。。。1. 原来不是专门指的 ubuntu 而是 linux 。。。大同小异没差。。
2. 原来是 gpt,不算 legacy bios 。。。这个就当我前面那堆 12345 是说废话。。嫌麻烦没用过 gpt 。。。
wccc
2020-08-04 00:04:42 +08:00
timeshift 这个软件备份到一个硬盘然后再恢复到新的硬盘
phpfpm
2020-08-04 07:28:02 +08:00
@xing2387 我决定我抽空数据 dump 一份之后直接重装吧

23333
zhve2x4
2020-08-04 09:17:05 +08:00
@phpfpm 没必要 dd 呀,直接在新硬盘上用 liveCD 分好区,然后用 tar 的方式备份恢复。把 os 恢复到新硬盘后,执行" grep -rn '原分区 uuid' 新硬盘分区所挂的路径" 改好 uuid 。然后 chroot 到新硬盘,修复引导就搞定了。你可以选择性参考 https://www.cnblogs.com/mind-water/p/11807150.htmlhttps://www.cnblogs.com/mind-water/p/11870604.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/695290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX