将Amazon EC2 ext4 EBS卷转换为XFS文件系统


8

我需要将Amazon EC2 ext4文件系统转换为XFS文件系统,这样我才能拍摄一致的快照并将其发送到S3。我在美国东部地区使用具有i686架构的ubuntu服务器10.10的自定义小图像。问题在于,我仅对所有文件使用一个EBS驱动器,现在却让我头疼,因为从ssh登录到实例时,我无法真正卸载,格式化驱动器或对其执行任何操作。我的猜测是我需要以某种方式将EBS卷拆分为2,然后将/ var / www和/ var / lib移至第二个EBS卷,然后将其转换为XFS。我正在使用apache2,mysql,ispconfig,bind,postfix,courier,pureftp(http://www.howtoforge.com/perfect-server-ubuntu-10.10-maverick-meerkat-ispconfig-3

谢谢。

Answers:


9

您可以将根卷转换为XFS或创建第二个卷。就我个人而言,我更喜欢后者,因为它提供了更大的灵活性。

选项1:将根卷转换为XFS

  1. 停止实例(不终止)(我们称其为实例A)
  2. 启动一个新实例(我们称其为实例B)
  3. 从实例A分离根卷并将其附加到实例B
  4. 创建第二个EBS卷,将其附加到实例B
  5. 将新的EBS卷格式化为XFS(xfsprogs如果尚未安装,则安装)
  6. 将所有数据从第一个卷复制到新的卷(例如使用 rsync -aHAXxSP /source /target
  7. 从实例B分离新卷,并将其作为实例A的根卷附加
  8. 启动实例A
  9. 终止实例B(原始根卷应保留下来,一直保留直到您满意为止)。

将根卷附加到另一个实例的原因是要获得一致性,而使用该卷将很难做到这一点。

选项2:将数据移至第二个EBS卷

  1. 创建第二个EBS卷并将其附加到您的实例;将其格式化为XFS并挂载
  2. 确定要移至新卷的目录(要考虑的目录包括:/ var / log,/ var / lib / mysql,/ var / www,/ var / spool / mail,/ var / vmail)
  3. 停止尽可能多的服务以删除写锁
  4. 使用lsof | grep /path/to/dir检查剩余写锁
  5. 将目录移到新的EBS卷
  6. 安装将新目录绑定到其旧位置(即mount -o bind /mnt/path/to/dir /orig/path/to/dir
  7. 对每个目录重复
  8. 启动您的服务以确保一切正常
  9. 编辑/etc/fstab文件以使挂载点永久化;例如:/mnt/path/to/dir /orig/path/to/dir bind defaults,noatime,bind 0 0

重新启动以确保所有内容都可以持续存在并正常运行。您可能还需要考虑将根卷减小一点,因为希望从中删除所有数据后,根卷不应该增加(或更改)太多。

(请注意,可能使用fsfreeze中包含冻结ext4文件系统util-linux-ng)。


谢谢,我将选择第一种方法,因为如果出现问题,我不确定是否可以使用第二种方法从备份中还原。
jaz 2011年

您可以独立还原每个EBS卷-您可以分别保存两个卷的快照,以还原所需的任何一个。Amazon的EBS快照是差异的和压缩的,因此使用的总空间与两个卷而不是一个上的数据应该没有太大差异。
cyberx86

1
对于选项1:由于“ cloudimg-rootfs”标签对于XFS太长,因此最新的ubuntu版本将无法启动。您需要通过缩短其使用的标签来解决此问题;从以下链接执行以下步骤:将/ dev / xvdf设备标记为“ /”。只需运行:xfs_admin -L \ / / dev / xvdf在/ xfs目录中挂载/ dev / xvdf。被关联到新XFS卷(/ XFS / etc / fstab文件)编辑fstab文件,并确保关联/体积标注/和XFS文件系统配置为根挂载点从这里开始:jsianes.blogspot.com/2014/06/...
JaredBroad 2014年
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.