如何在单独的分区上存储/ var?

我想将/var存储在/var的单独分区上。 设置它的正确方法是什么?

首先准备一个新分区(例如,使用partedmkfs )。

假设分区是/ dev / sda5

挂载新分区:

 mkdir /var2 mount /dev/sda5 /var2 

同步您当前的var:

 rsync -a /var/ /var2 

将条目添加到/ etc / fstab

 /dev/sda5 /var ext4 defaults 2 2 

重启。

如果您碰巧需要返回给您,您的旧/ var只会注释掉fstab中的条目。

当我接管由我的雇主的托管公司为我配置的新虚拟服务器时,我为varhome创建了额外的逻辑卷,这些卷是根分区中的常规目录。 由于虚拟服务器提供程序没有提供类似KVM的接口,我可以通过该接口以单用户模式访问服务器,因此我使用了与Aleksander概述的方法非常相似的方法(此答案包含有关恢复磁盘空间的额外详细信息)除了特定于LVM的命令之外)。

使用LVM创建和使用新的/ var文件系统

为新var卷创建文件系统,挂载它(使用临时目录)并将文件从当前/var复制到新文件系统。 使用rsync复制文件时,请使用其-a, --archive选项保留时间戳,所有权,模式等,并使用其-X, --xattrs选项保留扩展属性,例如AppArmor使用的安全标签和SELinux的。

 sudo lvcreate -L 60GB -n var VolGroup00 sudo mkfs.ext4 /dev/VolGroup00/var sudo mkdir /var.new sudo mount /dev/VolGroup00/var /var.new sudo rsync -raX /var/ /var.new/ 

更新文件系统表

通过将以下行添加到/etc/fstab将新文件系统配置为/var的新挂载点。 请注意, 0用作传递号(最后一个字段),以便在一定次数的重新启动后不会自动检查文件系统( fsck )(我无法以单用户模式登录服务器) 。

 /dev/mapper/VolGroup00-var /var ext4 defaults 0 0 

由于我无法更改为单用户模式,因此请重新启动计算机以将此新卷用作/var

从根文件系统恢复磁盘空间

重新启动计算机后,执行以下步骤以清除临时目录并从根文件系统中删除旧的/var文件:

  1. 删除临时挂载点:

     sudo rmdir /var.new 
  2. 创建一个新的挂载点,以创建根文件系统上旧/var目录上的文件的备用路径(它当前由目录上安装的新/var文件系统“屏蔽”):

     sudo mkdir /old-root sudo mount /dev/mapper/VolGroup00-root /old-root/ sudo rm -rf /old-root/var/* sudo umount /old-root/ sudo rmdir /old-root/