EC2上でLVMによるディスクの統合

Amazon EC2で、Instance StoreタイプのLarge Instanceにした場合、使えるディスクの容量は、850GBとなっている。
だけど、dfのコマンド叩いてみても、/ と /mnt 合わせても、420GB程度にしか見えない。
どういうことかと、さんざん調べた結果、/mnt にマウントされてる、/dev/sdb の他に、/dev/sdc ってのがあって、
それを、適当なとこにマウントすれば、合わせて、820GBになるとのこと。

確かに、合計サイズとしては、850GBなんだけど、どうしても420GB×2じゃ、都合が悪かった。
そこで、2つのディスクを1つのディスクに見せかけて何とか、デカイ容量にしようと企んだ。


LVM2を使ってやったので、以下は、その作業ログ。
環境は、Ubuntu 10 Server(x86_64)。

  • まずは、LVMをインストール
$ sudo apt-get install lvm2
  • モジュールのロード
$ sudo modprobe dm-mod
  • 物理ボリューム(PV)の作成
$ sudo pvcreate /dev/sdb 
  Can't open /dev/sdb exclusively.  Mounted filesystem?   #マウントされんじゃねーの?って怒られた

# マウント解除
$ sudo umount /mnt

# 改めて、/dev/sdb と /dev/sdc  のPV作成
$ sudo pvcreate /dev/sdb 
  Physical volume "/dev/sdb" successfully created
$ sudo pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created

# 確認
$ sudo pvscan
  PV /dev/sdb                      lvm2 [419.97 GiB]
  PV /dev/sdc                      lvm2 [419.97 GiB]
  Total: 2 [839.93 GiB] / in use: 0 [0   ] / in no VG: 2 [839.93 GiB]
  • ボリュームグループ(VG)の作成
# vkvsって名前で、/dev/sdv と /dev/sdc でグループ作成
$ sudo vgcreate vkvs /dev/sdb /dev/sdc 
  Volume group "vkvs" successfully created

# 確認
$ sudo vgs
  VG         #PV #LV #SN Attr   VSize   VFree  
  vkvs   2   0   0 wz--n- 839.93g 839.93g
  • 論理ボリューム(LV)の作成
# lkvsって名前で、LV作成(サイズは、適当に)
$ sudo lvcreate -L 835G -n lkvs vkvs
  Logical volume "lkvs" created

# 確認
$ sudo lvscan
  ACTIVE            '/dev/vkvs/lkvs' [835.00 GiB] inherit
$ sudo mkfs.ext3 -j /dev/vkvs/lkvs
  • さて、いよいよマウントしてみる
$ sudo mount /dev/vkvs/lkvs /mnt

$ df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda1              9.9G  1.4G  8.0G  15% /
〜〜略〜〜
/dev/mapper/vkvs-lkvs  822G  201M  780G   1% /mnt

よし。成功だー!
あとは、残作業。


  • fstab に書き込んで、次回起動時からマウントされるように設定
$ cp /etc/fstab /etc/fstab.old

$ emacs /etc/fstab
# /etc/fstab: static file system information.
# <file system>                                 <mount point>   <type>  <options>       <dump>  <pass>
proc                                            /proc           proc    nodev,noexec,nosuid 0       0
/dev/sda1                                       /               ext3    defaults            0       0
/dev/vkvs/lkvs                                  /mnt            auto    defaults            1       2      # <= 追記
  • module を起動時に、loadされるように設定
$ sudo emacs /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

# LP: #450463
acpiphp
dm-mod       # <= 追記
  • 再起動してみる
$ sudo reboot

$ df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda1              9.9G  1.4G  8.0G  15% /
〜〜略〜〜
/dev/mapper/vkvs-lkvs  822G  201M  780G   1% /mnt

やった。これで、次回起動時から(AMI作ってたら?Rebootしても?)850GBに近い容量のディスクをマウントした状態で使えるぞ!