摘要
《将 /dev/sdb1 安全挂载为 /home 的完整实战指南》提供了在不重装系统、不丢失数据的情况下,将 /home 目录迁移到大容量新磁盘的详细步骤。关键操作包括:临时挂载新磁盘到/mnt/newhome,使用rsync完整同步/home数据,备份原/home目录,正式挂载新分区到/home,并配置fstab实现开机自动挂载。文章特别强调操作风险,如绝不能直接删除/home目录,并提供了误操作后的补救方法。通过这种迁移方式可有效释放根分区空间,同时保证系统稳定性和数据安全。适用于Ubuntu、Debian等主流Linux发行版。
适用场景:
- 根分区
/空间告急(如 90%+)- 新增一块大硬盘(如
/dev/sdb1)- 希望把
/home独立挂载到新磁盘,不重装系统、不丢数据
一、背景说明
当前磁盘状态示例:
bash
df -h
text
/dev/nvme0n1p2 433G 389G 23G 95% /
/dev/sdb1 879G 16K 835G 1% /run/media/xxx
目标:
text
/dev/sdb1 → /home
将用户数据迁移到大容量磁盘,立刻释放根分区空间。
二、核心原则(非常重要)
牢记三点:
/home是一个"挂载点目录",不能随便删除- 数据迁移完成前,绝不能删原
/home - 永远先
rsync,确认无误后再改挂载
三、操作步骤(推荐标准流程)
1️⃣ 临时挂载新磁盘
bash
sudo mkdir -p /mnt/newhome
sudo mount /dev/sdb1 /mnt/newhome
确认挂载成功:
bash
df -h | grep sdb1
2️⃣ 同步原有 /home 数据(关键步骤)
bash
sudo rsync -aAXHv --progress /home/ /mnt/newhome/
参数说明:
-a:保留权限/时间/符号链接-A -X:保留 ACL / xattr(Linux 必需)-H:保留硬链接
3️⃣ 备份原 /home
⚠️ 注意:是改名,不是删除
bash
sudo mv /home /home.bak
sudo mkdir /home
sudo chmod 755 /home
4️⃣ 正式挂载 /dev/sdb1 到 /home
bash
sudo mount /dev/sdb1 /home
验证:
bash
df -h | grep home
ls /home
能看到原来的用户目录说明成功。
四、设置开机自动挂载(使用 UUID)
1️⃣ 查询 UUID
bash
sudo blkid /dev/sdb1
示例:
text
UUID="db356e82-c2c9-1941-957a-4cdcad6ddb8b" TYPE="ext4"
2️⃣ 编辑 /etc/fstab
bash
sudo nano /etc/fstab
添加:
fstab
UUID=db356e82-c2c9-1941-957a-4cdcad6ddb8b /home ext4 defaults,noatime 0 2
测试:
bash
sudo umount /home
sudo mount -a
无报错即成功。
五、确认无误后清理旧数据
确认系统可正常登录、使用后:
bash
sudo rm -rf /home.bak
建议保留 1~2 天再删除。
六、常见错误与避坑说明
❌ 错误 1:直接执行
bash
sudo rm -rf /home
后果:
/home挂载点消失- 用户无法登录
- SSH / 桌面环境异常
✅ 如果误删了 /home,正确补救方式
bash
sudo mkdir /home
sudo chmod 755 /home
sudo mount /dev/sdb1 /home
只要数据在磁盘上,就能恢复。
七、最终效果
text
/ → nvme0n1p2 空间明显释放
/home → sdb1 800G+ 可用
系统无感迁移,安全稳定。
八、总结
- 迁移 /home 是解决根分区爆满的最佳方案之一
- 永远遵循:
rsync → 备份 → 挂载 → fstab - 不删挂载点目录,是 Linux 磁盘管理的基本素养
本文适合 Ubuntu / Debian / Linux Mint / Arch 等发行版
ext4 / xfs 原理相同,可类推使用