轉換實例存儲支持爲EBS支持的AMI

轉換實例存儲支持爲EBS支持的AMIhtml

注:不能將實例存儲支持的Windows AMI 轉換爲 EBS 支持的 AMI。而且,你只能轉換你所擁有的 AMI。vim

1. 從一個EBS支持的AMI啓動一個Amazon Linux 實例。架構

2. 上傳用於捆綁實例存儲支持的 AMI 的 X.509 證書的私鑰 。(此私鑰將確保只有你能訪問你的AMI。)編輯器

3. 爲你的 Key ID 和 Secret Key 設置環境變量:ide

[ec2-user ~]$ export AWS_ACCESS_KEY=your_access_key_id
[ec2-user ~]$ export AWS_SECRET_KEY=your_secret_access_key

4. 爲你的新 AMI 準備 EBS 卷測試

a. 在相同的 AZ 建立一個空的 EBS(容量必須等於或大於要複製的實例存儲根卷的大小)ui

[ec2-user ~]$ ec2-create-volume --size 10 --region us-west-2 --availability-zone us-west-2b
VOLUME    volume_id    10        us-west-2b    creating    2014-01-24T23:11:45+0000    standard

注意命令返回的 Volume ID。spa

b. 將新建的 EBS 卷附加到前述 EBS 支持的實例:code

[ec2-user ~]$ ec2-attach-volume volume_id -i instance_id --device /dev/sdb --region us-west-2
ATTACHMENT    volume_id    instance_id    /dev/sdb    attaching    2014-01-24T23:15:34+0000

5. 將基於實例存儲的AMI的捆綁下載到 EBS 支持的實例:xml

ec2-download-bundle -b my-s3-bucket/bundle_folder/bundle_name -m image.manifest.xml -a $AWS_ACCESS_KEY -s $AWS_SECRET_KEY --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle

6. 從捆綁重建鏡像文件:

ec2-unbundle -m image.manifest.xml --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem

7. 拷貝鏡像文件到新附加的 EBS 卷:

sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M

8. 探測全部解除捆綁的新分區的卷:

sudo partprobe /dev/sdb

9. 列出塊儲存設備以查找要掛載的設備名稱

[ec2-user bundle]$ lsblk
NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda    202:0    0   8G  0 disk
└─/dev/sda1 202:1    0   8G  0 part /
/dev/sdb    202:80   0  10G  0 disk
└─/dev/sdb1 202:81   0  10G  0 part

在此示例中,要掛載的分區是 /dev/sdb1,但您的設備名稱可能有所不一樣。若是您的卷未分區,則要掛載的設備相似於 /dev/sdb(沒有設備分區尾部數字)。

10. 爲新 Amazon EBS 卷建立安裝點並安裝該卷

[ec2-user bundle]$ sudo mkdir /mnt/ebs
[ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs

11. 使用經常使用文本編輯器(如 vim 或 nano)打開 EBS 捲上的 /etc/fstab 文件,並刪除任何實例存儲(短暫)卷條目。因爲 Amazon EBS 卷安裝在 /mnt/ebs 上,fstab 文件位於 /mnt/ebs/etc/fstab 中

[ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
#
LABEL=/     /           ext4    defaults,noatime  1   1
tmpfs       /dev/shm    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
/dev/sdb        /media/ephemeral0       auto    defaults,comment=cloudconfig    0       2

在上面的示例中,應刪除最後一行。

12. 從實例中卸載和分離該卷

[ec2-user bundle]$ sudo umount /mnt/ebs
[ec2-user bundle]$ ec2-detach-volume volume_id --region us-west-2
ATTACHMENT    volume_id    instance_id    /dev/sdb    detaching    2014-01-24T23:15:34+0000

13. 按以下所示重新 Amazon EBS 卷建立 AMI

a. 建立新 Amazon EBS 卷的快照。

[ec2-user bundle]$ ec2-create-snapshot --region us-west-2 -d "your_snapshot_description" -O $AWS_ACCESS_KEY -W $AWS_SECRET_KEY volume_id
SNAPSHOT    snapshot_id    volume_id    pending    2014-01-25T00:18:48+000    1234567891011    10    your_snapshot_description

b. 檢查快照是否完整。

[ec2-user bundle]$ ec2-describe-snapshots --region us-west-2 snapshot_id
SNAPSHOT    snapshot_id    volume_id    completed    2014-01-25T00:18:48+0000    100%    1234567891011    10    your_snapshot_description

c. 使用 ec2-describe-images 命令肯定在原始 AMI 上使用的處理器架構、虛擬化類型和內核映像 (aki)。對於此步驟,您須要實例存儲支持的原始 AMI 的 AMI ID。

[ec2-user bundle]$ ec2-describe-images --region us-west-2 ami-id
IMAGE    ami-8ef297be    amazon/amzn-ami-pv-2013.09.2.x86_64-s3    amazon    available    public    x86_64    machine    aki-fc8f11cc    instance-store    paravirtual    xen

在此示例中,架構是 x86_64,內核映像 ID 是 aki-fc8f11cc。在如下步驟中使用這些值。若是上面命令的輸出還列出 ari ID,請記下該 ID。

d. 使用新 Amazon EBS 卷的快照 ID 和上一步中獲得的值註冊新 AMI。若是前一命令輸出列出了 ari ID,請經過 --ramdisk ari_id 將其包括在後續命令中。

[ec2-user bundle]$ ec2-register --region us-west-2 -n your_new_ami_name -s snapshot_id --virtualization-type hvm -a x86_64 --kernel aki-fc8f11cc
IMAGE    new-ami-id

14. (可選)測試了您能夠重新 AMI 啓動實例以後,您能夠刪除爲此過程建立的 Amazon EBS 卷。

$ ec2-delete-volume volume_id

參見:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-instance-store.html

相關文章
相關標籤/搜索