Linux系统整盘迁移:从旧硬盘到新硬盘的完整操作记录

前置条件

  • 能正常进入Linux系统
  • 新硬盘(硬盘2)容量应大于或等于旧硬盘(硬盘1)
  • 以root身份操作
  • 停止所有对外服务(如网站、API等),避免迁移过程中产生新数据

1. 更新系统并安装必要工具

apt update
apt install -y rsync

2. 检查硬盘信息

# 查看所有硬盘
lsblk

# 假设旧硬盘为sda,新硬盘为sdb

# 检查旧硬盘分区
lsblk -f /dev/sda
# 例如:/dev/sda1 (ext4, /) 和 /dev/sda5 (swap)

# 检查新硬盘分区
lsblk -f /dev/sdb
# 新硬盘应无分区

3. 格式化新硬盘

使用fdisk对新硬盘分区并格式化为ext4文件系统:
由于后续我通过swap 文件来管理,这里就不创建swap分区了

fdisk /dev/sdb
# 依次输入以下命令:
o    # 新建空的DOS分区表
n    # 新建分区
p    # 主分区
1    # 分区号1
     # 默认起始扇区
     # 默认结束扇区(整个磁盘)
w    # 写入分区表并退出

mkfs.ext4 /dev/sdb1

4. 挂载新旧硬盘

mkdir -p /mnt/oldroot /mnt/newroot
mount /dev/sda1 /mnt/oldroot
mount /dev/sdb1 /mnt/newroot

5. 拷贝数据

使用rsync进行数据迁移,排除不需要复制的目录:

rsync -aAXHv \
  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
  /mnt/oldroot/ /mnt/newroot/
  • -aA:保留权限和ACL
  • -X:保留SELinux标签(如有)
  • --exclude:排除虚拟和挂载文件系统

6. 配置新系统环境并安装引导

# 1. 绑定伪文件系统
mount --bind /dev  /mnt/newroot/dev
mount --bind /proc /mnt/newroot/proc
mount --bind /sys  /mnt/newroot/sys

# 2. 进入chroot环境
chroot /mnt/newroot /bin/bash

# 3. 更新/etc/fstab
blkid /dev/sdb1
# 编辑/etc/fstab,只保留根分区一行,例如:
# UUID=你的-sdb1-UUID   /   ext4   defaults,noatime   0 1
# 删除或注释掉原swap行

# 4. 安装GRUB到新硬盘
apt install -y grub-pc
grub-install /dev/sdb
update-grub

7. 验证迁移结果

重启进入BIOS,将新硬盘设置为第一启动项:
通过lsblk检查跟分区是否为新硬盘,命名可能也被叫做/dev/sda了,如果硬盘大小不一致具体看容量区分吧

lsblk    # 根分区应为 /dev/sdb1
df -h    # “/” 挂载点对应 sdb1

8. (可选)创建swap文件

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

9. 清除旧硬盘数据(如需)

注意:此操作会清空旧硬盘所有数据,请谨慎操作!

fdisk /dev/sda
# 在fdisk提示符下输入:
o   # 新建空的DOS分区表(删除所有分区)
w   # 写入并退出

# 快速清零前10MB
dd if=/dev/zero of=/dev/sda bs=1M count=10 status=progress

# 全盘快速填零(时间较长)
dd if=/dev/zero of=/dev/sda bs=1M status=progress

lsblk /dev/sda

写在最后

验证完成,现在可以安心地继续使用服务器了。其实对于硬盘分区、数据无损迁移这些我一直心存敬畏,总担心操作失误会导致数据丢失。这次迁移的顺利完成,让我对自己多了一些信心。也许对于高手来说,这只是轻松的小事,但对我这样的新手而言,整个过程还是挺有挑战的。趁着迁移完成的第二天,我特地复盘并记录下整个流程,希望以后遇到类似需求时可以作为参考,也希望能帮到有同样困惑的朋友。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇