如何将/ var存储在单独的分区上?


13

我想存储/var在与分开的分区上/。进行此设置的正确方法是什么?

Answers:


17

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

说分区是/ dev / sda5

挂载新分区:

mkdir /var2
mount /dev/sda5 /var2

同步您当前的变量:

rsync -a /var/ /var2

将条目添加到/ etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

重启。

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


1
我将添加一些信息以恢复旧版本的空间/var:从livecd开始,将分区安装在已安装的系统上,/然后rm -rf /var/*
enzotib

1
好点子。或者,您可以/在当前系统运行时将其安装到其他位置(但在重新引导后)。然后,您可以随意/var删除旧文件
Aleksandr Levchuk 2011年

1
我曾经也想知道这些。第一个是真正过时且没有效果的东西,第二个在启动时扫描ext时控制fsck的顺序。我不再关注他们了。只需输入1 1,因为语法需要它。
2011年

2
重启30次后,应放2 2来让/ var之类的/ fsck扫描在/ var之前。否则,如果/ var失败并要求您在单个用户外壳程序中手动修复问题-那么您将没有任何文件系统。好玩的东西。
2011年

2
建议不要在fstab中使用UUID吗?我得到了合适的使用blkid -o list -s UUID,但我认为您需要使用sudo进行运行
steevc 2012年

2

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

当我接管由雇主托管公司提供的新虚拟服务器时,根文件系统中没有足够的可用空间。幸运的是,他们使用逻辑卷管理器(LVM)来细分虚拟磁盘,并且有足够的可用空间来创建新卷。我创建额外的逻辑卷的varhome其曾在根文件系统定期目录。由于虚拟服务器提供商没有提供类似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/

很好地解释了所涉及的选项。但是,您使用lvcreate并且mkfs.ext4没有解释使用什么或为什么使用。也许您可以简单地说出来,因为它们不是答案的主要主题,因此是用于创建新分区。
PhoneixS

感谢您提供@PhoneixS的反馈,我已经编辑了答案以使其更清楚并提供其他上下文信息。
Anthony Geoghegan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.