[AWS] EC2インスタンス作成(CentOS6) 3/3


Create: 2015/05/06
LastUpdate: 2015/05/06

CentOS6の公式AMIを使用して、EC2インスタンスを作ります。
CentOS6の公式AMIは無料で利用できますが、EC2インスタンスは使用した分だけ課金されます。

ここで作成するEC2インスタンスは、VPCに作成し、自宅からインターネットを経由してSSH接続できるようにします。
リージョンはどこでもいいのですが、今回は、「東京」より安い、「バージニア北部(米国)」を使用しています。

VPC、サブネットの作り方は以下のページが詳しいです。
EC2インスタンスの作り方は、以下のページが詳しいです。

[構築手順]
  1. EC2インスタンスの作成
  2. OSの日本語環境設定
  3. ボリューム拡張


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
以上で作業完了です。
あとは、不要になったスナップショットと拡張前のボリュームは削除します。