cio*_*y23 82
1. 首先,您需要一些未分配的空间来为每个挂载点(/var、/home、/tmp)创建分区。为此使用 Gparted。
2. 然后你需要为这些分区创建文件系统(也可以用 Gparted 完成)或使用:
mkfs.ext4 /dev/sdaX
Run Code Online (Sandbox Code Playgroud)
例如在 /dev/sdaX 设备上创建一个新的 ext4 文件系统(用你自己的设备替换 /dev/sdaX)
3. 在 /mnt 下挂载新的文件系统
mkdir /mnt/var
mount /dev/sdaX /mnt/var
Run Code Online (Sandbox Code Playgroud)
4.进入单用户模式,以便在此过程中目录上没有rw活动
init 1
Run Code Online (Sandbox Code Playgroud)
5. 输入您的根密码。
6. 只备份 var 中的数据(不是 /var 目录本身)
cd /var
cp -ax * /mnt/var
Run Code Online (Sandbox Code Playgroud)
7. 成功传输数据后,重命名 /var 目录。
cd /
mv var var.old
Run Code Online (Sandbox Code Playgroud)
8.新建var目录
mkdir var
Run Code Online (Sandbox Code Playgroud)
9. 卸载新分区。
umount /dev/sdaX
Run Code Online (Sandbox Code Playgroud)
10. 重新挂载为 /var
mount /dev/sdaX /var
Run Code Online (Sandbox Code Playgroud)
11. 编辑/etc/fstab 文件以包含新分区,/var 是挂载点,以便在启动时自动挂载。
/dev/sdaX /var ext4 defaults 0 0
Run Code Online (Sandbox Code Playgroud)
12. 对 /home 和 /tmp 重复步骤 1-11。
13.最后回到多任务模式。
init 5
Run Code Online (Sandbox Code Playgroud)
Fab*_*ian 20
如果你想在同一个分区上使用它们,你可以使用LVM或三个简单的绑定安装。
要创建基于绑定的解决方案,您
/mnt/data移动您要移动的所有文件夹。使用cpandmv dir dir.old可能更安全,但因为我是在安装后这样做的,所以对我来说并不重要。
mv /home /mnt/data/
mv /var /mnt/data/
Run Code Online (Sandbox Code Playgroud)在 fstab 中创建适当的绑定挂载条目,例如我有
UUID=01234567-89abc-def0-1234-567890abcde /mnt/data ext4 noatime,nodiratime,relatime 0 0
# Binds
/mnt/data/opt /opt none bind 0 0
/mnt/data/home /home none bind 0 0
/mnt/data/usr /usr none bind 0 0
Run Code Online (Sandbox Code Playgroud)重启
我个人要么使用@Fabian 的绑定安装解决方案,要么使用符号链接:
/etc/fstab为新分区创建条目(用于为新分区blkid获取正确的 UUID,不要忘记mkdir /mnt/data):
UUID=01234567-89abc-def0-1234-567890abcde /mnt/data ext4 defaults 0 0
Run Code Online (Sandbox Code Playgroud)使用mount -a或类似的东西挂载新分区
将原始文件夹移动到新分区:
mv /var /mnt/data/
mv /home /mnt/data/
# ... (you get the point)
Run Code Online (Sandbox Code Playgroud)创建符号链接
ln -s /mnt/data/var /var
ln -s /mnt/data/home /home
# ...
Run Code Online (Sandbox Code Playgroud)虽然绑定贴装方法可能是最好的做法解决方案,我那种喜欢这一个,因为你不不必要地延长最终df和mount分区列表。