如何在 Linux 中将主目录移动到新分区或磁盘
在任何 Linux 系统上,/home
目录都是肯定会增大大小的目录之一。这是因为除 root 帐户外,系统帐户(用户)目录将驻留在 /home 中 - 这里用户将持续存储文档和其他文件。
另一个具有相同行为的重要目录是/var
,它包含日志文件,这些文件的大小会随着系统的继续运行而逐渐增大,例如日志文件、Web 文件、打印后台文件等。
当这些目录填满时,可能会导致根文件系统出现严重问题,从而导致系统启动失败或其他一些相关问题。但是,有时您只有在安装系统并配置根文件系统/分区上的所有目录后才能注意到这一点。
建议阅读: Linux 目录结构和重要文件路径解释
在本指南中,我们将展示如何将主目录移动到 Linux 中新存储磁盘上的专用分区中。
在 Linux 中安装新硬盘并对其进行分区
在继续之前,我们将简要解释如何向现有 Linux 服务器添加新硬盘。
注意:如果您已经有一个准备好操作的分区,请转到解释在目录中移动 /home
目录的步骤的部分。下面有自己的分区。
我们假设您已将新磁盘连接到系统。在硬盘上,要创建的分区数量以及分区表通常由磁盘标签类型决定,前几个字节的空间将定义MBR(主引导记录) ),它存储分区表以及引导加载程序(对于可引导磁盘)。
虽然标签类型有很多种,但 Linux 只接受两种:MSDOS MBR(大小为 516 字节)或 GPT(GUID 分区表)MBR。
我们还假设出于本指南的目的使用了新的硬盘(/dev/sdb,大小270 GB),您可能需要服务器上更大的容量庞大的用户群。
首先需要使用fdisk或parted设置磁盘标签类型;我们在此示例中使用了 GPT 标签名称。
parted /dev/sdb mklabel gpt
注意:fdisk 目前仅支持 MSDOS MBR,parted 支持这两个标签。
现在创建第一个分区 (/dev/sdb1),大小为 106GB。我们为 MBR 预留了 1024MB 空间。
parted -a cylinder /dev/sdb mkpart primary 1074MB 107GB
解释一下上面的命令:
- a – 指定分区对齐方式的选项。
- mkpart – 创建分区的子命令。
- primary – 将分区类型设置为主硬盘(其他值为逻辑或扩展)。
- 1074MB – 分区的开始。
- 107GB – 分区末尾。
现在检查磁盘上的可用空间,如下所示。
parted /dev/sdb print free
我们将创建另一个大小为 154GB 的分区 (/dev/sdb2)。
parted -a cylinder /dev/sdb mkpart primary 115GB 268GB
接下来,让我们设置每个分区上的文件系统类型。
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
要查看系统上连接的所有存储设备,请键入。
parted -l
将主目录移动到专用分区
现在我们已经添加了新磁盘并创建了必要的分区;现在是时候将 home 文件夹移动到其中一个分区了。要使用文件系统,必须将其安装到根文件系统的安装点:目标目录,例如 /home。
首先使用 df 命令在系统上列出文件系统的使用情况。
df -l
我们将首先创建一个新目录 /srv/home ,我们可以暂时挂载 /dev/sdb1 。
mkdir -p /srv/home
mount /dev/sdb1 /srv/home
然后使用 rsync 命令将 /home 的内容移动到 /srv/home (因此它们实际上将存储在 /dev/sdb1 中)或cp 命令。
rsync -av /home/* /srv/home/
OR
cp -aR /home/* /srv/home/
之后,我们将使用 diff 工具查找两个目录之间的差异,如果一切正常,则继续下一步。
diff -r /home /srv/home
然后,删除/home中的所有旧内容,如下所示。
rm -rf /home/*
接下来卸载/srv/home。
umount /srv/home
最后,我们必须同时将文件系统/dev/sdb1挂载到/home。
mount /dev/sdb1 /home
ls -l /home
上述更改仅在当前启动期间有效,请在 /etc/fstab 中添加以下行以使更改永久生效。
使用以下命令获取分区UUID。
blkid /dev/sdb1
/dev/sdb1: UUID="e087e709-20f9-42a4-a4dc-d74544c490a6" TYPE="ext4" PARTLABEL="primary" PARTUUID="52d77e5c-0b20-4a68-ada4-881851b2ca99"
知道分区 UUID 后,打开 /etc/fstab 文件添加以下行。
UUID=e087e709-20f9-42a4-a4dc-d74544c490a6 /home ext4 defaults 0 2
解释上面一行中的字段:
- UUID – 指定块设备,您也可以使用设备文件/dev/sdb1。
- /home – 这是挂载点。
- etx4 – 描述设备/分区上的文件系统类型。
- defaults – 挂载选项(此处该值表示 rw、suid、dev、exec、auto、nouser 和 async)。
- 0 – 由转储工具使用,0 表示如果文件系统不存在则不转储。
- 2 – 由 fsck 工具用于发现文件系统检查顺序,该值表示在根文件系统之后检查该设备。
保存文件并重新启动系统。
您可以运行以下命令来查看 /home 目录已成功移至专用分区。
df -hl
现在就是这样!要了解有关 Linux 文件系统的更多信息,请阅读这些与 Linux 上的文件系统管理相关的指南。
- 如何在 Linux 中删除主目录的用户帐户
- 什么是 Ext2、Ext3 和 Ext4 以及如何创建和转换 Linux 文件系统
- 确定 Linux 中文件系统类型(Ext2、Ext3 或 Ext4)的 7 种方法
- 如何通过 SSH 使用 SSHFS 挂载远程 Linux 文件系统或目录
在本指南中,我们向您解释了如何将 /home 目录移动到 Linux 中的专用分区。您可以通过下面的评论表分享有关本文的任何想法。