我有一个/分区,其中包含/ 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?
进入单用户模式,并确保写入/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
你也可以使用:
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和安装东西容易得多。
/var
而不改变到单用户模式 当我接pipe了由我的雇主托pipe公司为我提供的一个新的虚拟服务器时,我为var
和home
创build了额外的逻辑卷,它们是根分区中的常规目录。 由于虚拟服务器提供商没有提供类似于KVM的界面,我可以通过该界面以单用户模式访问服务器,因此上述答案不适用于我的设置。 我希望这个答案在类似情况下对其他人有用(我已经保存了LVM的细节,但是这些可以被忽略,因为新的文件系统是在逻辑卷还是磁盘分区上创build的)。
/var
文件系统 为新var
卷创build文件系统,将其挂载(使用临时目录),并将文件从当前/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
将新文件系统configuration为用作/var
的新装入点。 请注意, 0
用作通过编号(最后一个字段),以便在重新启动一定次数后文件系统不会自动检查( fsck
)(我无法以单用户模式login到服务器) 。
/dev/mapper/VolGroup00-var /var ext4 defaults 0 0
由于我无法更改为单用户模式,请重新启动计算机以将此新卷用作/var
。
机器重新启动后,执行以下步骤清理临时目录,并从根文件系统中删除旧的/var
文件:
删除临时安装点:
sudo rmdir /var.new
创build一个新的挂载点,以创build根文件系统上旧/var
目录上的文件的替代path(目前,挂载在目录上的新的/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/