我有一个 / 分区,其中包含 /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
Run Code Online (Sandbox Code Playgroud)
如何将 /var 文件夹从 sda1 移动到 sda2 ?
Zor*_*che 22
进入单用户模式,并确保任何进程写入/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
Run Code Online (Sandbox Code Playgroud)
/var
无需更改为单用户模式即可移动当我接管由我的雇主\xe2\x80\x99s 托管公司为我配置的新虚拟服务器时,我为其创建了额外的逻辑卷,var
并且home
这些卷一直是根分区中的常规目录。由于虚拟服务器提供商没有提供类似 KVM 的接口,我可以通过该接口以单用户模式访问服务器,因此上述答案不适用于我的设置。我希望这个答案对处于类似情况的其他人有用(我保留了 LVM 详细信息,但可以跳过这些详细信息,因为它与新文件系统是在逻辑卷还是磁盘分区上创建的 \xe2\x80\x99s 并不特别相关)。
/var
通过 LVM创建并使用新的文件系统为新var
卷创建文件系统,安装它(使用临时目录)并将文件从当前文件系统复制/var
到新文件系统。使用 复制文件时rsync
,使用其-a, --archive
选项来保留时间戳、所有权、模式等,并使用其-X, --xattrs
选项来保留扩展属性,例如 AppArmor 和 SELinux 使用的安全标签。
sudo lvcreate -L 60GB -n var VolGroup00\nsudo mkfs.ext4 /dev/VolGroup00/var\nsudo mkdir /var.new\nsudo mount /dev/VolGroup00/var /var.new\nsudo rsync -raX /var/ /var.new/\n
Run Code Online (Sandbox Code Playgroud)\n\n/var
通过将以下行添加到 来配置新文件系统以用作新的安装点/etc/fstab
。请注意,0
用作密码(最后一个字段),以便fsck
在一定次数的重新启动后,文件系统不会自动检查\xe2\x80\x99(我\xe2\x80\x99ve无权登录到服务器)在单用户模式下)。
/dev/mapper/VolGroup00-var /var ext4 defaults 0 0\n
Run Code Online (Sandbox Code Playgroud)\n\n由于我无法将 \xe2\x80\x99 更改为单用户模式,因此重新启动计算机以将此新卷用作/var
.
计算机重新启动后,执行以下步骤清理临时目录并/var
从根文件系统中删除旧文件:
删除临时挂载点:
\n\nsudo rmdir /var.new\n
Run Code Online (Sandbox Code Playgroud)/var
创建一个新的挂载点,以创建根文件系统上旧目录上文件的替代路径(it\xe2\x80\x99s 当前为 \xe2\x80\x9cmasked\xe2\x80\x9d 由/var
安装在目录上的新文件系统):
sudo mkdir /old-root\nsudo mount /dev/mapper/VolGroup00-root /old-root/\nsudo rm -rf /old-root/var/*\nsudo umount /old-root/\nsudo rmdir /old-root/\n
Run Code Online (Sandbox Code Playgroud)您还可以使用:
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
Run Code Online (Sandbox Code Playgroud)
这似乎比搞乱 fstab 和 mount 的东西容易得多。