1

EBS 卷已附加为ext4on /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
4

2 回答 2

1

看到您有两种选择来实现您的用例。

您可以将根卷转换为 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

重新启动以确保一切持续存在并正常运行。您可能还需要考虑将根卷缩小一点,因为希望它不会随着从其中删除的所有数据而增长(或变化)太多。

(As a point of mention, it may be possible to freeze an ext4 file system using fsfreeze, which is included in util-linux-ng).

于 2016-07-11T17:15:01.907 回答
0

这并非特定于 AWS EBS。Amazon 为您提供了一个名为 EBS 的“磁盘”,附加到 /dev/xvdb。然后,随意将其挂载到任何地方(/opt/apps 或 /data)并使用您想要的文件系统对其进行格式化。

这个页面可以帮助你 http://ask.xmodulo.com/create-mount-xfs-file-system-linux.html

于 2016-07-11T16:52:55.670 回答