Answers:
进入单用户模式,并确保任何写入过程均已/var
停止。(请检查lsof | 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
/home/var
如果您以这种方式解决问题,那么总会有一个目录。通过重新引导并从“引导”菜单中选择单用户模式,可以进入单用户模式的一种方法。
您还可以使用:
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东西容易得多。
/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
从根文件系统中删除旧文件:
删除临时安装点:
sudo rmdir /var.new
创建一个新的挂载点,以创建/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/