您可以将根卷转换为XFS或创建第二个卷。就我个人而言,我更喜欢后者,因为它提供了更大的灵活性。
选项1:将根卷转换为XFS
- 停止实例(不终止)(我们称其为实例A)
- 启动一个新实例(我们称其为实例B)
- 从实例A分离根卷并将其附加到实例B
- 创建第二个EBS卷,将其附加到实例B
- 将新的EBS卷格式化为XFS(
xfsprogs
如果尚未安装,则安装)
- 将所有数据从第一个卷复制到新的卷(例如使用
rsync -aHAXxSP /source /target
)
- 从实例B分离新卷,并将其作为实例A的根卷附加
- 启动实例A
- 终止实例B(原始根卷应保留下来,一直保留直到您满意为止)。
将根卷附加到另一个实例的原因是要获得一致性,而使用该卷将很难做到这一点。
选项2:将数据移至第二个EBS卷
- 创建第二个EBS卷并将其附加到您的实例;将其格式化为XFS并挂载
- 确定要移至新卷的目录(要考虑的目录包括:/ var / log,/ var / lib / mysql,/ var / www,/ var / spool / mail,/ var / vmail)
- 停止尽可能多的服务以删除写锁
- 使用
lsof | grep /path/to/dir
检查剩余写锁
- 将目录移到新的EBS卷
- 安装将新目录绑定到其旧位置(即
mount -o bind
/mnt/path/to/dir /orig/path/to/dir
)
- 对每个目录重复
- 启动您的服务以确保一切正常
- 编辑
/etc/fstab
文件以使挂载点永久化;例如:/mnt/path/to/dir /orig/path/to/dir bind defaults,noatime,bind 0 0
重新启动以确保所有内容都可以持续存在并正常运行。您可能还需要考虑将根卷减小一点,因为希望从中删除所有数据后,根卷不应该增加(或更改)太多。
(请注意,可能使用fsfreeze
中包含冻结ext4文件系统util-linux-ng
)。