![LVM - 将 ./home ./var ./srv 重新定位到同一分区](https://linux22.com/image/13433/LVM%20-%20%E5%B0%86%20.%2Fhome%20.%2Fvar%20.%2Fsrv%20%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D%E5%88%B0%E5%90%8C%E4%B8%80%E5%88%86%E5%8C%BA.png)
我使用 CentOS-8 作为虚拟化主机(所以我想避免安装太多应用程序) 1x 驱动器,LVM 文件系统
全新安装;我创建了./boot
、./boot/efi
、./home
、 和./
每个都有自己的分区。
我需要哪些工具和命令将/var
、/tmp
、 和重新定位/srv
到包含 的分区/home
?
答案1
虽然可以通过复制/home
(使用mv
)下的这些目录并创建符号链接(使用ln -s
)来做到这一点,但这不是一个好主意。
对不打算成为符号链接的顶级目录进行符号链接往往会导致难以调试的问题,因为许多应用程序并不期望这种行为。例如,如果应用程序O_NOFOLLOW
在打开文件时出于安全原因使用,则在创建符号链接时该应用程序将无法工作。我见过多种发生这种情况的情况,发行版维护者(更不用说软件作者)通常对这种情况下发生的问题不感兴趣,因为它不受支持。
一般来说,最好将/
、/home
、/var
、/tmp
、 和/srv
放在一个分区上,并使用 LVM 使其可扩展,或者为您需要单独的内容创建单独的分区。
如果您已经在使用 LVM,并且想要创建其他逻辑卷作为您已使用的同一卷组的一部分,则可以找到卷组,sudo vgdisplay -c | cut -b3- | cut -d: -f1
然后创建其他逻辑卷,如下所示:
SIZE=100m # for example
DIRNAME=/srv # for example
VOLGROUP=$(sudo vgdisplay -c | cut -b3- | cut -d: -f1)
sudo lvcreate -L $SIZE -n $(basename "$DIRNAME") $VOLGROUP
sudo mkfs.ext4 /dev/mapper/$VOLGROUP-$(basename "$DIRNAME")
sudo mount /dev/mapper/$VOLGROUP-$(basename "$DIRNAME") /mnt
sudo cp -a $DIRNAME/* $DIRNAME/.* /mnt
sudo umount /mnt
# Add the new /dev/mapper/$VOLGROUP-$DIRNAME device pointing to
# $DIRNAME to /etc/fstab
您应该在单用户模式下执行此操作,然后重新启动。