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


16

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

Answers:


19

进入单用户模式,并确保任何写入过程均已/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

ks!如何进入单用户模式?“ var”文件夹会保留在/ home中吗?
杰里米

是的,/home/var如果您以这种方式解决问题,那么总会有一个目录。通过重新引导并从“引导”菜单中选择单用户模式,可以进入单用户模式的一种方法。
Zoredache

我不确定这是否会一直有效。如果您使用的是较新的版本(比较简陋),则可以使用它,因为它具有/ run文件系统。OTOH:在引导过程的早期,可以在/ var进行绑定挂载之前打开文件。
cstamas 2012年

1
@cstamas,支持 / var在单独的文件系统,并且一直存在。在FHS和官方的Debian文档中甚至建议将/ var放在单独的位置上是一件好事。
Zoredache 2012年

好吧,我认为你是对的。对我来说,用绑定安装架来做这件事真是奇怪。
cstamas 2012年

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

这似乎比弄乱fstab和mount东西容易得多。


1
不知道为什么有人会对此否决。这将完全正常。一个符号链接应该可以正常工作。我只是将绑定挂载用于其他用途,因此我倾向于首先考虑这些内容。
Zoredache

1
除此之外,它可能不那么安全,但实际上确实有效。在将其投入生产之前,我最近在机器上完成了此操作。如果这是一台正在使用中的计算机或正在运行许多进程的计算机,则应谨慎使用。就我而言,这是一台仅运行tomcat的新服务器。
AJ布朗

1
使用符号链接/ var可以,但是我不这样做,而是希望在/ etc / fstab中放置一个条目,以记住自己在哪个分区/卷上放置了什么以及为什么放置(可以添加注释)。如果我需要更改硬件中的某些内容,那么对我来说,这种方式也更容易理解。
盖洛斯2014年

1
我看不到这将如何工作。我希望它能正常工作,但是init之类的基本功能使用/ var,不是吗?
Sue Spence,

1

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

当我接管由雇主托管公司为我提供的新虚拟服务器时,我为其创建了额外的逻辑卷varhome该逻辑卷是根分区中的常规目录。由于虚拟服务器提供商没有提供类似于KVM的界面,因此我可以通过该界面以单用户模式访问服务器,因此上述答案不适用于我的设置。我希望这个答案对类似情况下的其他人有用(我保留了LVM详细信息,但是可以忽略这些详细信息,因为在逻辑卷或磁盘分区上创建新文件系统都没有特别关系)。

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

为新var卷创建文件系统,将其挂载(使用临时目录),然后将文件从当前卷复制/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/

更新文件系统表

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

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

由于无法更改为单用户模式,因此请重新引导计算机以将该新卷用作/var

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

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

  1. 删除临时安装点:

    sudo rmdir /var.new
    
  2. 创建一个新的挂载点,以创建/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/
    
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.