我有一个 / 分区,其中包含 /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
从根文件系统中删除旧文件:
删除临时挂载点:
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/