[小ネタ] Amazon Linux の /home に追加EBSをマウントする手順

2016.09.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは菊池です。

今回はタイトルそのまま、Amazon LinuxのEC2で追加EBSを/homeにマウントする際の注意点と手順です。

オンプレ環境で新規にOSをインストールする場合には何も問題のない作業ですが、AWSでは提供されるAMIから起動するため、単一のルートボリューム(/dev/xvda)にインストールされています。何も考えずに追加したEBSを/homeにマウントすると、ec2-userの公開鍵(authorized_keys)にアクセスできなくなり、sshログインが不可能になったりしますので、少し工夫が必要です。

大まかな手順は以下の通りです。

  1. 追加EBSをアタッチしてEC2を起動
  2. 追加EBSにファイルシステムを作成し一度、別のマウントポイントにマウント
  3. /home以下のファイル/ディレクトリを追加したボリュームに移動
  4. 追加ボリュームをアンマウントし、/homeにマウント

EBS追加して起動

まずは追加EBSをアタッチしてインスタンスを起動します。

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdf 202:80 0  10G 0 disk
xvda1 202:1 0 8G 0 disk /

ルートボリュームがxvda1で、追加されたEBSはxvdfとして認識されています。この時点ではまだマウントされていません。

$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 7.8G 962M 6.8G 13% /
devtmpfs 3.7G 60K 3.7G 1% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm

追加したボリュームにファイルシステムを作成し、一度別のマウントポイントでマウントします。

ファイルシステムを作成。

$ sudo su -
# mkfs -t ext4 /dev/xvdf
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: b36b45b0-9655-4c64-b394-8efcda7e316b
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

#

/mnt/dataにマウント

# mkdir /mnt/data
# mount /dev/xvdf /mnt/data
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 1.2G 6.5G 16% /
devtmpfs 490M 60K 490M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
/dev/xvdf 9.8G 23M 9.2G 1% /mnt/data

/homeのデータを追加ボリュームへ移動

追加したボリュームへ、すでにある/homeのデータを移動させます。

# cd /home
# cp -av * /mnt/data
‘ec2-user’ -> ‘/mnt/data/ec2-user’
‘ec2-user/.bashrc’ -> ‘/mnt/data/ec2-user/.bashrc’
‘ec2-user/.ssh’ -> ‘/mnt/data/ec2-user/.ssh’
‘ec2-user/.ssh/authorized_keys’ -> ‘/mnt/data/ec2-user/.ssh/authorized_keys’
‘ec2-user/.bash_logout’ -> ‘/mnt/data/ec2-user/.bash_logout’
‘ec2-user/.bash_profile’ -> ‘/mnt/data/ec2-user/.bash_profile’
# ls -la /mnt/data/
total 28
drwxr-xr-x 4 root root 4096 Sep 28 06:49 .
drwxr-xr-x 3 root root 4096 Sep 28 06:49 ..
drwx------ 3 ec2-user ec2-user 4096 Sep 28 06:41 ec2-user
drwx------ 2 root root 16384 Sep 28 06:49 lost+found

これでec2-userのホームディレクトリの中身がコピーされました。

追加ボリュームを/homeへマウント

既存の/homeは不要になりますので、リネームします。

# cd
# mv /home /home_org

新たにマウントポイント/homeを作成し、追加ボリュームをアンマウント

# mkdir /home
# umount /dev/xvdf

再起動後も正しくマウントするよう、/etc/fstab/dev/xvdf /home ext4 defaults 0 2を追記します。

# cat /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/xvdf   /home       ext4    defaults        0   2

マウントの確認。

# mount -a
#

特にエラーが出なければOKです。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  1.2G  6.5G   16% /
devtmpfs         490M   60K  490M    1% /dev
tmpfs            498M     0  498M    0% /dev/shm
/dev/xvdf        9.8G   23M  9.2G    1% /home

これで追加完了です。

まとめ

以上です。

オンプレでは特に何でもない作業でも、クラウドにあるサーバではsshでログインできなくなるとどうすることもできなくなりますので、ちょっとした注意が必要です。