/var无需切换到单用户模式即可移动

/var无需切换到单用户模式即可移动

我有一个 / 分区,其中包含 /var,但空间太小。我有一个现有分区,空间足够。

这是我的df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

如何将 /var 文件夹从 sda1 移动到 sda2?

答案1

进入单用户模式,并确保任何写入进程/var都已停止。(使用 检查lsof -n | grep /var

  • mkdir -p /home/var
  • rsync -va /var/. /home/var/.
  • mv /var /var.old#/var.old完成后您可以删除以回收空间
  • mkdir -p /var
  • mount -o bind /home/var /var
  • 更新您的/etc/fstab以使绑定安装永久生效。

/etc/fstab

 /home/var /var        none    bind

答案2

您还可以使用:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

这看起来比摆弄 fstab 和 mount 东西要容易得多。

答案3

/var无需切换到单用户模式即可移动

当我接管雇主的托管公司为我配置的新虚拟服务器时,我为和创建了额外的逻辑卷,var这些home逻辑卷是根分区中的常规目录。由于虚拟服务器提供商没有提供类似 KVM 的界面,我可以通过该界面以单用户模式访问服务器,因此上述答案不适用于我的设置。我希望这个答案对处于类似情况的其他人有用(我保留了 LVM 详细信息,但可以跳过这些,因为新文件系统是在逻辑卷还是磁盘分区上创建的并不特别重要)。

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

为新卷创建文件系统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/

更新文件系统表

/var通过在 中添加以下行,配置要用作 的新挂载点的新文件系统/etc/fstab。请注意,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/
    

相关内容