写在前面: 前段时间新装了一台服务器,/home目录原本是挂在在系统盘
/dev/sda4的分区下
,但是系统盘的空间比较小,为了保证后续使用起来,不会遇到磁盘很快就占满的情况,现在需要将/home
独立出来,挂载到另一块 NVMe 高速硬盘/dev/nvme0n1p1
上 ,这样新用户的主目录将存储在这块 3.5T 空间充足的硬盘上,而不是原来的/dev/sda4
(仅 831G)。
🔹 1、列出系统的块设备
bash
lsblk # lsblk -f 可以查看文件系统类型、UUID 等
lsblk
是 Linux 下一个非常实用的命令,主要用于 列出系统中所有的块设备(block devices) ,包括硬盘、分区、U盘、SSD 等,可以得知nvme0n1p1的高速硬盘目前是挂载在data目录下;

结果解读:
-
NAME
:设备名称 -
TYPE
:设备类型(disk
是物理磁盘,part
是分区) -
MOUNTPOINT
:当前挂载在哪个目录
🧩 lsblk
的作用总结:
功能 | 说明 |
---|---|
查看磁盘和分区结构 | 显示硬盘、分区、挂载点等信息 |
不显示RAM | 与 df 不同,它只关注磁盘类设备,不显示内存使用 |
可以显示文件系统类型、挂载点等 | 加参数 -f 可以显示 FSTYPE、LABEL、UUID 等 |
辅助挂载/格式化 | 常与 mount 、mkfs 、fstab 配合使用 |
🔹 2、确认要迁移新磁盘是 ext4
bash
lsblk -f # 输出的 FSTYPE 那里显示ext4即可
确认 FSTYPE
是 ext4
,如果没有格式化,执行:
bash
sudo mkfs.ext4 /dev/nvme0n1p1
⚠️ 这将清空分区!
🔹 3、创建临时挂载点并挂载新分区
bash
sudo mkdir /mnt/new_home
sudo mount /dev/nvme0n1p1 /mnt/new_home
这步首先在 /mnt
目录下创建一个名为 new_home
的空目录,用作临时挂载点。
📌 说明:
-
/mnt
是 Linux 中推荐用来临时挂载其他设备的标准目录。 -
你不能直接把分区挂载到
/home
,因为/home
当前正在使用。 -
所以你先创建
/mnt/new_home
,后续可以把目标分区挂载到这里进行数据操作。
将你的 NVMe 磁盘分区(/dev/nvme0n1p1
)挂载到刚刚创建的 /mnt/new_home
。
📌 说明:
-
mount
是 Linux 的挂载命令,它将一个磁盘分区关联到系统目录结构中。 -
挂载后,你就可以像访问普通文件夹一样访问该磁盘内容,例如:
bash
ls /mnt/new_home
- 这个操作是临时生效的 ,重启后会失效,除非写入到
/etc/fstab
。
🔹 4、复制当前 /home
数据到新分区
bash
sudo rsync -aXS --progress /home/ /mnt/new_home/
确保所有文件完整复制,包括权限和软连接。
🔧 参数说明
参数 | 功能 |
---|---|
-a |
归档模式,保留文件的所有属性(权限、时间戳、符号链接等) |
-X |
保留扩展属性(如 ACL、SELinux 安全上下文) |
-S |
稀疏文件优化(sparse file),节省磁盘空间 |
--progress |
显示每个文件的复制进度(用于大文件时很有用) |
🔹 5、备份并编辑 /etc/fstab
bash
sudo cp /etc/fstab /etc/fstab.bak
sudo vim /etc/fstab
前面我们知道/data目录是挂载在NVMe 高速硬盘 /dev/nvme0n1p1上的,所以我们只需要把这里的/data修改为/home即可;
该文件每列的说明如下:
列 | 说明 |
---|---|
file system | 分区标识(设备路径或 UUID) |
mount point | 挂载点(系统目录) |
type | 文件系统类型(如 ext4 , vfat , swap ) |
options | 挂载选项(如 defaults , ro , noatime ) |
dump | 是否需要 dump 备份(一般为 0) |
pass | 是否在开机时进行 fsck 检查(0=不检,1=优先,2=其次) |
🔹 6、准备切换挂载点
bash
sudo mv /home /home.bak # 临时备份旧 home:把当前系统中的 /home 目录重命名为 /home.bak(备份),为新的 /home 腾出挂载点
sudo mkdir /home # 创建空目录用于挂载:创建一个新的空 /home 目录,准备挂载新的 /home(此时挂载的是 /dev/nvme0n1p1)
sudo mount -a # 重新挂载所有文件系统:按照 /etc/fstab 中的配置重新挂载所有文件系统,此时 /dev/nvme0n1p1 应该会挂载到新建的 /home 上
🔹 7、验证挂载是否成功
bash
df -h /home
输出如下则说明/home挂载到了 /dev/nvme0n1p1
,成功 ✅

🔹 8、清理旧的 /home
如果一切正常,则可以删除:
bash
sudo rm -rf /home.bak
实现效果:
-
所有用户的主目录都在
/dev/nvme0n1p1
上 -
系统分区
/dev/sda4
不再承担/home
的存储负担 -
新建用户默认目录
/home/username
也会自动位于新磁盘上
🔹 9、删除临时挂载目录/mnt/new_home
(1)卸载 /mnt/new_home
(保险起见)
bash
sudo umount /mnt/new_home
⚠️ 如果你之前用 mount
挂载了 /dev/nvme0n1p1
到这里,这一步可以释放它。
(2)删除临时目录
bash
sudo rmdir /mnt/new_home
补充说明:
-
rmdir
只能删除空目录(它应该是空的) -
如果你不执行
umount
,目录是可以删除的,但推荐先umount
更安全 -
删除这个目录不会影响
/home
,因为新/home
现在指向的是分区,而不是/mnt/new_home
🔹 10、卸载data
bash
lsblk
# 若输出如下,则说明/dev/nvme0n1p1 同时挂载在两个地方: /home 和 /data
# └─nvme0n1p1 259:1 0 3.5T 0 part /home
# /data
sudo umount /data # 卸载data
最终输出如下即可,说明修改成功:
