【问题标题】:How to change AWS EBS volume filesystem type如何更改 AWS EBS 卷文件系统类型
【发布时间】:2016-07-11 16:32:11
【问题描述】:
EBS 卷在/opt/apps 上附加为ext4。目前没有关于它的数据。如何将文件系统类型更改为xfs 并将新的挂载点分配给/data?
[centos@ip-10-24-xx-xxx ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 xfs 8.0G 1.4G 6.7G 17% /
devtmpfs devtmpfs 7.3G 0 7.3G 0% /dev
tmpfs tmpfs 7.2G 0 7.2G 0% /dev/shm
tmpfs tmpfs 7.2G 17M 7.2G 1% /run
tmpfs tmpfs 7.2G 0 7.2G 0% /sys/fs/cgroup
/dev/xvdb ext4 99G 61M 94G 1% /opt/apps
tmpfs tmpfs 1.5G 0 1.5G 0% /run/user/1000
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
ext4
xfs
【解决方案1】:
看到您有两种选择来实现您的用例。
您可以将根卷转换为 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 中)。