暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【AWS-AMI】缩小根分区并创建新的AMI

ITOpers 2021-06-28
1025

环境及需求:

1. 现在的AMI 根分区有25G

2. 25G有点多,所以想将25G缩小到12G

3. 查看磁盘信息

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/xvda1 17G 1.5G 15G 9%

tmpfs 498M 0 498M 0% dev/shm

操作步骤:

1. 挂载一块12G的新盘(/dev/xvdf)

2. 分区并格式化新磁盘

# fdisk -l

Device Boot Start End Blocks Id System

/dev/xvdf1 1 1045 8393931 83 Linux
/dev/xvdf2 1046 1566 4184932+ 82 Linux swap Solaris

# mkfs.ext4 dev/xvdf1

3. 挂载新磁盘

# mkdir new

# mount dev/xvdf1 new

# df |grep new

/dev/xvdf1 7.9G 1.2G 6.4G 16% new

4. 同步数据(将/下所有数据拷贝到新磁盘)

# rsync -auv –exclude=”/new/*” new

5. 卷标处理

查看各磁盘卷标

# e2label /dev/xvda1

/

# e2label /dev/xvdf1 (这个没有卷标,所以是空的)

#给新磁盘添加卷标

e2label /dev/xvdf1 ROOT

mkswap -L SWAP /dev/xvdf2

( # e2label /dev/xvda1 “” //删除卷标可以这样)

6. 修改并查看/new/etc/fstab(LABEL为ROOT的挂载到/,LABEL为SWAP的为swap)

# cat /new/etc/fstab

LABEL=ROOT / ext4 defaults 1 1
LABEL=SWAP swap swap defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

7. 修改并查看/new/boot/grub/grub.conf(从LABEL为ROOT的启动)

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.32-431.3.1.el6.x86_64)

root (hd0,0)

kernel /boot/vmlinuz-2.6.32-431.3.1.el6.x86_64 ro root=LABEL=ROOT console=ttyS0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us

initrd /boot/initramfs-2.6.32-431.3.1.el6.x86_64.img

8. 确保网卡是DHCP

# cat /new/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet

9. 创建snapshot

pending需要一段时间(取决于磁盘的大小),记住创建的snapshot的ID,后面要用

9. 创建完成后,基于这个snapshot注册一个AMI

# ec2-register -n “CentOS6.5-x64-base-12G” -d “CentOS6.5-x64-base-12G” -a x86_64 –root-device-name /dev/sda -b /dev/sda=snap-f13d641e:12:true –kernel aki-503e7402 –region ap-southeast-1 --virtualization-type hvm
-O AKIXXXXXXXXXXXXX -W xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


10. 备注:

  • 系统要运行ec2-register命令,需要安装java环境和aws-api的包,官方命令详解:

http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-RegisterImage.html

  • -b /dev/sda=snap-f13d641e:12:true 表示sda是由snap-f13d641e这个snapshot克隆来的,12是磁盘容量

  • –kernel aki-503e7402 不同地区和不是系统位数用的aki名是不一样的,更多AKI详见如下链接

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html#AmazonKernelImageIDs

  • -O AKIXXXXXXXXXXXXX -W xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    创建一个用户,授权可以执行ec2-register命令,并记住它的key

文章转载自ITOpers,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论