Create: 2015/05/06
LastUpdate: 2015/05/06
CentOS6の公式AMIを使用して、EC2インスタンスを作ります。
CentOS6の公式AMIは無料で利用できますが、EC2インスタンスは使用した分だけ課金されます。
ここで作成するEC2インスタンスは、VPCに作成し、自宅からインターネットを経由してSSH接続できるようにします。
リージョンはどこでもいいのですが、今回は、「東京」より安い、「バージニア北部(米国)」を使用しています。
VPC、サブネットの作り方は以下のページが詳しいです。
EC2インスタンスの作り方は、以下のページが詳しいです。
[構築手順]
- EC2インスタンスの作成
- OSの日本語環境設定
- ボリューム拡張
3.ボリューム拡張
CentOSの公式AMIのデフォルトのボリュームサイズを増やしても、自動的に拡張しませんでした。手作業で、パーティションとファイルシステムを拡張する必要があります。以下のページを参考にしました。
ルートボリューム(/dev/xvda1)をマウントした状態で拡張することはできないので、EBSのスナップショットから新規ボリュームを複製して拡張し、ボリュームを入れ替えます。
3.1.ディスクの初期状態確認
lsblk コマンドを使用して、インスタンスにアタッチされたすべてのデバイスおよびパーティションをリストします。インスタンス作成時にボリュームサイズを10GBに設定しましたが、パーティションは拡張されず、デフォルトの8GBのままです。
[root@ip-10-0-0-218 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
└─xvda1 202:1 0 8G 0 part /
ファイルシステムを確認します。ext4 です。[root@ip-10-0-0-218 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.9G 797M 6.7G 11% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
3.2.EBSのスナップショット作成
EBSのスナップショットを作成します。
[インスタンス]の詳細を表示して、[ルートデバイス]の /dev/sda1 をクリックします。
[EBS ID] をクリックします。
ボリュームを選択して右クリックし、メニューから [スナップショット作成]を選択します。
[Name] を入力して、[作成]をクリックします。
[閉じる]をクリックします。
[スナップショット]をクリックすると、作成したスナップショットが表示されます。
このスナップショットからルートデバイスを復元できます。
3.3.ブートデバイスの指定方法を UUID から LABEL に変更
CentOS6のデフォルトでは、UUIDでブートデバイスを指定してマウントします。ルートデバイスを複製して同じUUIDをもつ2のボリュームを、同じインスタンスにアタッチすると、どちらからブートされるかわかりません。そこで、ブートするデバイスを特定できるように拡張しない現在マウントされているボリュームにラベル名をつけて、LABEL でブートデバイスを指定するようにします。
ルートデバイスにラベル名として "/" を設定します。
[root@ip-10-0-0-218 ~]# e2label /dev/xvda1
[root@ip-10-0-0-218 ~]# e2label /dev/xvda1 /
[root@ip-10-0-0-218 ~]# e2label /dev/xvda1
/
/etc/fstab を以下のように修正します。LABEL名でマウントするようにします。[root@ip-10-0-0-218 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Sep 29 22:18:18 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
LABEL=/ / ext4 defaults 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
/boot/grub/menu.lstを以下のように修正します。LABEL名でブートするようにします。[root@ip-10-0-0-218 ~]# cat /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/vda1
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=1
serial --unit=0 --speed=115200
terminal --timeout=1 serial console
title CentOS (2.6.32-431.29.2.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-431.29.2.el6.x86_64 ro root=LABEL=/ rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 crashkernel=auto SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-2.6.32-431.29.2.el6.x86_64.img
インスタンスを再起動して、SSHログインできることを確認します。3.4.新規ボリューム作成とアタッチ
EBSのスナップショットから新しいボリュームを復元してインスタンスにアタッチします。
上記3.2で作成したスナップショットを右クリックして、メニューから[ボリュームの作成]を選択します。
ここでボリュームのタイプやサイズを変更できます。
[アベイラビリティーゾーン]はインスタンスと同じ場所にします。
今回は何も変更せずに[作成]をクリックします。
[閉じる]をクリックします。
作成したボリュームをインスタンスにアタッチする前に、インスタンスを停止します。
新しく作成したボリュームは、[状態]が "available" です。
新しいボリュームを選択して右クリックし、メニューから[ボリュームのアタッチ]を選択します。
[インスタンス]の入力欄をクリックするとインスタンス一覧が表示されるので、"CentOS6"を選択します。
[デバイス]には、 "/dev/sdf" を入力します。
[アタッチ]をクリックします。
[状態]が "in-use" にかわります。
インスタンスの [ブロックデバイス] でデバイスが2つあることを確認して起動します。
3.5.パーティションの拡張
新しく作成したボリュームのパーティションを拡張します。データは壊れないのでバックアップはしません。
デバイスの状態を確認します。デバイスは2つです。
[root@ip-10-0-0-218 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 10G 0 disk └─xvdf1 202:81 0 8G 0 partラベル名を確認します。ルートデバイス(/dev/xvda1)にラベル名が設定されていればOKです。
[root@ip-10-0-0-218 ~]# e2label /dev/xvda1
/
[root@ip-10-0-0-218 ~]# e2label /dev/xvdf1
パーティションの拡張に使用するツールをインストールします。[root@ip-10-0-0-218 ~]# yum install parted/dev/xvdf のパーティションを拡張して、空き容量を全部使用します。
[root@ip-10-0-0-218 ~]# parted /dev/xvdf GNU Parted 2.1 /dev/xvdf を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) unit s (parted) print モデル: Xen Virtual Block Device (xvd) ディスク /dev/xvdf: 20971520s セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 16777215s 16775168s primary ext4 boot (parted) rm 1 (parted) mkpart primary 2048s 100% (parted) print モデル: Xen Virtual Block Device (xvd) ディスク /dev/xvdf: 20971520s セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 20971519s 20969472s primary ext4 (parted) set 1 boot on (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。拡張したパーティションをチェックします。
[root@ip-10-0-0-218 ~]# e2fsck -f /dev/xvdf1 e2fsck 1.41.12 (17-May-2010) /dev/xvdf1: recovering journal Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/xvdf1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/xvdf1: 18346/524288 files (0.2% non-contiguous), 236852/2096896 blocksパーティションが拡張されたことを確認します。
[root@ip-10-0-0-218 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 10G 0 disk
└─xvdf1 202:81 0 10G 0 part
3.6.ファイルシステムの拡張
新しく作成したボリュームのファイルシステムを拡張します。データは壊れないのでバックアップはしません。
/dev/xvdf1 をマウントします。
[root@ip-10-0-0-218 ~]# mount /dev/xvdf1 /mntファイルシステム状態を表示すると以下のとおり。拡張されていません。
[root@ip-10-0-0-218 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.9G 839M 6.7G 11% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
/dev/xvdf1 ext4 7.9G 797M 6.7G 11% /mnt
ファイルシステムを拡張します。[root@ip-10-0-0-218 ~]# resize2fs /dev/xvdf1 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/xvdf1 is mounted on /mnt; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/xvdf1 to 2621184 (4k) blocks. The filesystem on /dev/xvdf1 is now 2621184 blocks long.ファイルシステム状態を表示すると以下のとおり。拡張されました。
[root@ip-10-0-0-218 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.9G 839M 6.7G 11% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
/dev/xvdf1 ext4 9.9G 797M 8.6G 9% /mnt
念のため、/dev/xvdf1 のファイルを参照してみます。ファイルが表示されればOKです。[root@ip-10-0-0-218 ~]# cat /mnt/etc/fstab # # /etc/fstab # Created by anaconda on Mon Sep 29 22:18:18 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=dcb1645e-05a6-4311-8bce-a9c12bec5801 / ext4 defaults 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
3.7.ボリュームの入れ替え
インスタンスを停止して、拡張したボリュームでブートするようにボリュームを入れ替えます。
ボリュームを全部、デタッチします。ボリュームを選択してメニューから[ボリュームのデタッチ]を選択します。
[デタッチする]をクリックします。
ボリュームの[状態]が、全部、"available" であることを確認します。
拡張したボリュームを選択して右クリックし、メニューから[ボリュームのアタッチ]を選択します。
[インスタンス]の入力欄をクリックするとインスタンス一覧が表示されるので、"CentOS6" を選択します。
[デバイス]には、"/dev/sda1" を入力します。
[アタッチ]をクリックします。
拡張したボリュームの[状態]が、"in-use" であることを確認します。
ブロックデバイスが1つであることを確認して、インスタンスを起動します。
3.8.ディスク拡張の確認
デバイスの状態を確認します。パーティションが 10G に拡張されています。
[root@ip-10-0-0-218 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
└─xvda1 202:1 0 10G 0 part /
ファイルシステムを確認します。Size が 9.9G なので拡張されています。[root@ip-10-0-0-218 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 9.9G 797M 8.6G 9% /
tmpfs tmpfs 498M 0 498M 0% /dev/shm
UUIDでデバイスをマウントすることを確認します。[root@ip-10-0-0-218 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Sep 29 22:18:18 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=dcb1645e-05a6-4311-8bce-a9c12bec5801 / ext4 defaults 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
以上で作業完了です。あとは、不要になったスナップショットと拡張前のボリュームは削除します。