如何调整EC2配置和EBS磁盘

应当有一个选项或一种方式,帮助我们快速推翻之前的想法,去尝试更好更合理的东西,这就是云带给我们的意义。

-- D.C

调整EC2配置

假设我们已经创建好了一台EC2,流程也已经部署好了,但是我发现配置太低/高了,因为某种偏执的原因,我就是不想创建镜像ami再从这个ami启动一个新的ec2,对!我就是要修改原来那个,怎么办呢?

ec2stop

ec2

ec2

调整EBS盘

假设我们给ec2预设的盘太小,需要扩容怎么办呢?有两种方案:

  1. 重新创建一个新磁盘,attach上去,不需要重启ec2。
  2. 调整现在磁盘的大小,需要重启ec2。

1. 重新创建磁盘

ebs_console

ec2_az

ebs_new_setting

ebs_attach

ebs_attach

ebs_attach_ec2

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G   72K  3.8G   1% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
/dev/nvme0n1p1   50G   28G   22G  56% /

[注意]: 以下命令省略了 重启后自动附加附加卷 的命令,需要的同学请完整参阅这篇文章。

$ lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   50G  0 disk
├─nvme0n1p1   259:1    0   50G  0 part /
└─nvme0n1p128 259:2    0    1M  0 part
nvme1n1       259:3    0  100G  0 disk

$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: data

$ sudo yum install xfsprogs

$ sudo mkfs -t xfs /dev/nvme1n1
meta-data=/dev/nvme1n1           isize=512    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

$ sudo mkdir /data
$ sudo mount /dev/nvme1n1 /data

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G   72K  3.8G   1% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
/dev/nvme0n1p1   50G   28G   22G  56% /
/dev/nvme1n1    100G  135M  100G   1% /data

$ sudo chown -R ec2-user.ec2-user /data
$ touch /data/1.txt
$ ls /data
1.txt

2. 调整现有EBS磁盘

ebs_rootdisk

ebs_rootdisk_modify

ebs_rootdisk_modsetting

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G   72K  3.8G   1% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
/dev/nvme0n1p1   50G   28G   22G  56% /

[选项1] 重启ec2。

[选项2] 不重启机器,登录ec2:

Step1 先用以下命令看下调整的磁盘属于哪种类型:

[ec2-user ~]$ sudo file -s /dev/nvme?n*
/dev/nvme0n1:     x86 boot sector ...
/dev/nvme0n1p1:   SGI XFS filesystem data ...
/dev/nvme0n1p128: data
/dev/nvme1n1:     SGI XFS filesystem data ...

Step2 如果发现磁盘下面还有分区,那要用 growpart 命令先扩分区[option]

[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  30G  0 disk /data
nvme0n1       259:1    0  16G  0 disk
└─nvme0n1p1   259:2    0   8G  0 part /
└─nvme0n1p128 259:3    0   1M  0 part

[ec2-user ~]$ sudo growpart /dev/nvme0n1 1

[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  30G  0 disk /data
nvme0n1       259:1    0  16G  0 disk
└─nvme0n1p1   259:2    0  16G  0 part /
└─nvme0n1p128 259:3    0   1M  0 part

Step3 扩展文件系统

#如果是扩展 ext2、ext3 或 ext4 文件系统
[ec2-user ~]$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/xvda1       8.0G  1.9G  6.2G  24% /
/dev/xvdf1       8.0G   45M  8.0G   1% /data

#使用 resize2fs 命令扩展每个卷上的文件系统
[ec2-user ~]$ sudo resize2fs /dev/xvda1
[ec2-user ~]$ sudo resize2fs /dev/xvdf1
#再次使用 df -h 命令来验证每个文件系统是否反映增加的卷大小
[ec2-user ~]$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/xvda1        16G  1.9G  14G  12% /
/dev/xvdf1        30G   45M  30G   1% /data

#如果是XFS系统
$ sudo yum install xfsprogs
#使用 xfs_growfs 命令扩展每个卷上的文件系统
$ sudo xfs_growfs -d /

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G   72K  3.8G   1% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
/dev/nvme0n1p1   99G   28G   72G  28% /

参考资料

条条大路通罗马。