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

我需要将我的Amazon EC2 ext4文件系统转换为XFS文件系统,以便我可以采用一致的快照并将它们发送到S3。 我正在使用我们东方的i686架构的ubuntu服务器10.10的自定义小图像。 问题是,我只使用一个EBS驱动器的所有文件,现在它让我头痛,因为我不能真正卸载,格式化或真正做任何事情的驱动器login到实例从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 )

谢谢。

您可以将您的根卷转换为XFS或创build第二个卷。 就个人而言,我会赞成后者,因为它提供了更多的灵活性。

选项1:将根卷转换为XFS

  1. 停止你的实例(不终止)(我们称之为实例A)
  2. 开始一个新的实例(我们称之为实例B)
  3. 从实例A分离根卷并将其附加到实例B.
  4. 创build第二个EBS卷,将其附加到实例B.
  5. 将新的EBS卷格式化为XFS(如果尚未安装,则安装xfsprogs
  6. 将所有数据从第一个卷复制到新的数据(例如使用rsync -aHAXxSP /source /target
  7. 从实例B中分离新卷,并将其作为实例A的根卷连接
  8. 启动实例A.
  9. 终止实例B(原始根音量应该保持不变,直到事情按照您的喜好工作)。

将根卷附加到另一个实例的原因是为了达到一致性,这对于使用的卷来说是很困难的。

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

  1. 创build第二个EBS卷并将其附加到您的实例; 将其格式化为XFS并挂载
  2. 确定您希望移动到新卷的哪些目录(有些可以考虑包括:/ var / log,/ var / lib / mysql,/ var / www,/ var / spool / mail,/ var / vmail)
  3. 停止尽可能多的服务来删除写锁
  4. 使用lsof | grep /path/to/dir lsof | grep /path/to/dir来检查剩余的写锁
  5. 将目录移到新的EBS卷
  6. Mount将新目录绑定到其旧位置(即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

重新启动,以确保一切坚持和function,因为它应该。 您可能还想考虑缩小根音量,因为希望它不应该随着所有的数据被删除而增长(或改变)很多。

(作为提到的一点,可以使用fsfreeze util-linux-ng包含的fsfreeze来冻结一个ext4文件系统。