如何将 /var 移动到另一个现有分区?

Jér*_*mie 20 partition debian

我有一个 / 分区,其中包含 /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)


Ant*_*gan 6

/var无需更改为单用户模式即可移动

\n\n

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

\n\n

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

\n\n

为新var卷创建文件系统,安装它(使用临时目录)并将文件从当前文件系统复制/var到新文件系统。使用 复制文件时rsync,使用其-a, --archive选项来保留时间戳、所有权、模式等,并使用其-X, --xattrs选项来保留扩展属性,例如 AppArmor 和 SELinux 使用的安全标签。

\n\n
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

更新文件系统表

\n\n

/var通过将以下行添加到 来配置新文件系统以用作新的安装点/etc/fstab。请注意,0用作密码(最后一个字段),以便fsck在一定次数的重新启动后,文件系统不会自动检查\xe2\x80\x99(我\xe2\x80\x99ve无权登录到服务器)在单用户模式下)。

\n\n
/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于我无法将 \xe2\x80\x99 更改为单用户模式,因此重新启动计算机以将此新卷用作/var.

\n\n

从根文件系统恢复磁盘空间

\n\n

计算机重新启动后,执行以下步骤清理临时目录并/var从根文件系统中删除旧文件:

\n\n
    \n
  1. 删除临时挂载点:

    \n\n
    sudo rmdir /var.new\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. /var创建一个新的挂载点,以创建根文件系统上旧目录上文件的替代路径(it\xe2\x80\x99s 当前为 \xe2\x80\x9cmasked\xe2\x80\x9d 由/var安装在目录上的新文件系统):

    \n\n
    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)
  4. \n
\n


mdp*_*dpc 5

您还可以使用:

 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 的东西容易得多。