在虚拟服务器上配置新的 /var 分区

在虚拟服务器上配置新的 /var 分区

我想将其存储/var在单独的分区中/。正确的设置方法是什么?

答案1

首先准备一个新的分区(例如带有partedmkfs)。

假设分区是/dev/sda5

挂载新分区:

mkdir /var2
mount /dev/sda5 /var2

同步当前变量:

rsync -a /var/ /var2

将条目添加到 /etc/fstab

/dev/sda5    /var    ext4    defaults      2 2

重启。

如果您碰巧需要返回旧的 /var,只需注释掉 fstab 中的条目即可。

答案2

在虚拟服务器上配置新的 /var 分区

当我接管由雇主的托管公司配置的新虚拟服务器时,根文件系统中没有足够的可用空间。幸运的是,他们使用了逻辑卷管理器 (LVM)细分虚拟磁盘,并且有足够的可用空间来创建新卷。我为var和创建了额外的逻辑卷home,它们曾经是根文件系统中的常规目录。由于虚拟服务器提供商没有提供类似 KVM 的界面,我可以通过该界面以单用户模式访问服务器,因此我使用了与 Aleksander 概述的方法非常相似的方法(此答案除了 LVM 特定的命令外,还包含有关恢复磁盘空间的额外详细信息)。

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

为新文件系统创建一个逻辑卷var,挂载它(使用临时目录)并将文件从当前文件系统复制/var到新文件系统:

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

由于正在运行的进程将使文件/var保持打开状态并处于使用状态,因此不能简单地将目录树移动到新文件系统。递归 ( -r) 将文件从当前/var分区复制到新文件系统,同时保留文件属性和扩展属性 (-a, --archive选项)。谨慎的用户可能会首先创建一个LVM 快照在复制之前先阅读当前卷的内容,但对于这个问题来说,这涉及太多题外的细节。

sudo cp -ra /var/ /var.new/

或者,可以使用 复制文件rsync,并使用其-a, --archive选项保留时间戳、所有权、模式等,以及其-X, --xattrs选项保留扩展属性,例如 AppArmor 和 SELinux 使用的安全标签:

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(新文件系统使用/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/

相关内容