如何更改 AWS EBS 卷文件系统类型
How to change AWS EBS volume filesystem type
EBS 卷作为 ext4
附加在 /opt/apps
上。目前没有关于它的数据。如何将文件系统类型更改为 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
这并非特定于 AWS EBS。 Amazon 为您提供了一个名为 EBS 的 "disk",附加到 /dev/xvdb。然后,随意将它挂载到任何地方(/opt/apps,或 /data)并用你想要的文件系统格式化它。
这个页面可以帮助你
http://ask.xmodulo.com/create-mount-xfs-file-system-linux.html
看到您有两种选择来实现您的用例。
您可以将根卷转换为 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
中)。
EBS 卷作为 ext4
附加在 /opt/apps
上。目前没有关于它的数据。如何将文件系统类型更改为 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
这并非特定于 AWS EBS。 Amazon 为您提供了一个名为 EBS 的 "disk",附加到 /dev/xvdb。然后,随意将它挂载到任何地方(/opt/apps,或 /data)并用你想要的文件系统格式化它。
这个页面可以帮助你 http://ask.xmodulo.com/create-mount-xfs-file-system-linux.html
看到您有两种选择来实现您的用例。
您可以将根卷转换为 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
中)。