CentOS 和将 /var 移动到新磁盘/分区

CentOS 和将 /var 移动到新磁盘/分区

稍旧的系统,大约 2 年前。运行 CentOS

我注意到我已经/var使用了很多空间,而且都是好东西……所以删除空间并不是解决办法。

有没有简单/安全的方法可以移动/var到新安装的磁盘而不破坏操作系统?我知道如何添加磁盘并正确格式化它们,只是/var以前从未真正尝试过移动到新目的地。

我读过 Server Fault 和其他网站上的文章,但它们对于具体如何解决这一问题没有给出明确的答案。它们通常建议停止进程等。但没有详细说明如何安全地执行此操作,也没有说明如何确保在移动数据和装载所有内容之前正确停止所有内容。

已经检查过这个:

将 /var 移至新的磁盘组

不想做会严重破坏 MySQL 的事情。谢谢!

更新:

文件系统信息:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-centos6_root
                       47G   41G  4.0G  92% /
tmpfs                 3.9G  500K  3.9G   1% /dev/shm
/dev/vda1             276M  199M   64M  76% /boot
/dev/vdb1             197G  119G   68G  64% /home
/dev/vdd1             197G   95G   93G  51% /home2
/dev/vde1              99G  8.1G   86G   9% /home3
/usr/tmpDSK           2.0G   40M  1.8G   3% /tmp

坐骑详细:

# cat /etc/fstab
/dev/vg_centos6/centos6_root /                  ext4    usrjquota=quota.user,jqfmt=vfsv0        1 1
/dev/vda1                  /boot                ext3    defaults        1 2
/dev/vdb1   /home   ext4    usrjquota=quota.user,jqfmt=vfsv0    0   0
/dev/vdd1       /home2   ext4    usrjquota=quota.user,jqfmt=vfsv0        0       0
/dev/vde1       /home3   ext4    usrjquota=quota.user,jqfmt=vfsv0        0       0
tmpfs                      /dev/shm             tmpfs   defaults        0 0
devpts                     /dev/pts             devpts  gid=5,mode=620  0 0
sysfs                      /sys                 sysfs   defaults        0 0
proc                       /proc                proc    defaults        0 0
/dev/mapper/vg_centos6-lv_swap swap swap defaults 0 0
/usr/tmpDSK             /tmp                    ext3    defaults,noauto        0 0

据我所见,/var它肯定位于根分区上。我希望改变这一点。

答案1

好消息是,您的系统可能是虚拟机,可以通过设备文件节点名(例如)得知,如果它来自 iSCSI 存储,/dev/vdb它将简化我们的程序,无需使用任何专门的工具(例如)。iscsi-initiator-utils

CentOS 提供了最小安装包含对我们而言最重要的工具的媒体rsync。如果您使用的是 CentOS 6 并使用 64 位系统,那么您可以通过选择镜子例如,。然后,你可以从这里大小不超过 400 MB。有关其他步骤的指导原则如下:

  • 准备备用磁盘。将新磁盘连接到虚拟机并照常格式化。您已经写道您知道如何执行此操作。

  • 启动进入救援模式. 正常关闭虚拟机并启动最小 ISO。提供的安装选项之一是救援已安装的系统。选择它将允许我们从 CD 启动,而无需任何进程写入您的/var目录。这将为我们提供一个安全的环境,将数据从旧磁盘传输到新磁盘。在进入 shell 提示符之前,您必须浏览几个菜单。括号中的项目对我来说最有意义。请选择您认为合适的项目。

    • 选择语言。[英语]
    • 键盘类型 [us]
    • 您是否要启动此系统上的网络接口?[否]。我们可以这样做,因为您位于虚拟机上,并且新磁盘无需网络连接即可使用。
    • 救援环境...[跳过]。这是一个较长的对话。只需选择跳过即可。
    • 启动 shell
  • 传输数据。假设新磁盘上存储新/var数据的设备节点是/dev/vdc1,旧根分区中保存目录的节点/var/dev/vda2。创建临时挂载点并复制数据:

    mkdir /mnt/var /mnt/var_old
    mount /dev/vda2 /mnt/var_old
    mount /dev/vdc1 /mnt/var
    rsync -a /mnt/var_old/ /mnt/var/
    
  • 移动旧的 /var. 移走旧/var目录并创建一个新的空挂载点:

    mv /mnt/var_old/var /mnt/var_old/var.old
    mkdir /mnt/var_old/var
    
  • 编辑 fstab. 设置/etc/fstab以便新磁盘上的文件系统挂载在 上/var。给定上述设备节点,将如下条目添加到/mnt/var_old/etc/fstab

    /dev/vdc1 /var    ext4    defaults        1 2
    
  • 重启exit在 shell 提示符下键入并选择重新启动 VM。然后启动常规操作系统安装,而不是最小 CD。

如果一切顺利,您的旧/var数据将存在/var.old/var包含所有数据,可供使用。如果您愿意,您可以/var.old在正常运行几天后删除。

答案2

我很喜欢民主党的答案,但对于 Centos 7 上的 LVM,我想为那些不知道的人添加以下步骤:

启动救援媒体。退出到 shell。

扫描卷组: lvm vgscan -v

激活所有卷组: lvm vgchange -a y

列出逻辑卷: lvm lvs –all

有了这些信息和激活的卷,您应该能够安装这些卷: mount /dev/volumegroup/logicalvolume /mountpoint

这是以下说明的副本:http://jim-zimmerman.com/?p=587

并注意 rsync 如何创建其目标目录。将 /old/var 复制到 /new/var 会创建 /new/var/var,这让我很头疼,因为我必须重组我的新 var 以便 CentOS 满意 :)

答案3

挂载新的分区/mnt,然后rsync --progress /var /mnt,当这一切已经完成时,umount /mnt编辑/etc/fstab新的 var 分区和reboot

答案4

答案是肯定的!

我的动机与你的不同,很可能 - 我尽我所能将写入操作从系统磁盘中完全移除,以延长它们所依赖的 SSD 的使用寿命。

为此,我只需准备环境,在其他磁盘(无论是 HDD 还是其他 SSD)上创建磁盘结构,然后移动数据,然后启动到恢复模式/救援模式(无论您的版本要求什么),然后使用rsync以使磁盘空间相等,执行mv /var /var.old(只是为了确保),然后ln -s对新位置执行操作,然后启动。您已完成!

如果出了什么问题,可以通过再试一次轻松解决...

相关内容