はじめに

cloudpackくどう です。

今回は、Amazon EBS のパーティション小手先技です。
通常、パーティションを分ける場合は新たにEBSボリュームを追加し分けることが多いと思います。しかし、SSDの場合には容量によってIOPSが設定されるため、ひとつのボリュームで大きくとった方がお得です。そこで、ボリュームを分けるひとつ方法として解説していきます。

容量が300GBのEBSで、AMIはCentOS(hvm)です。

hvmの場合って自動的にresizeしてくれないんですよね orz

作業順序

  1. ①最初はルートパーティションは8GB
  2. ②後ろから200GBを確保
  3. ③ルートパーティションを100GBに拡張

ひとつのEBSを分割してみますよ: 作業手順

後ろから200GBを確保

最初にパーティションの変更を行うめ parted をインストールします。

# yum install parted

partedを起動します。

# parted
GNU Parted 2.1
/dev/xvda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。

MB表示にします。

(parted) unit B

現在のパーティションを表示します。

(parted) print
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvda: 322122547200B
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了         サイズ       タイプ   ファイルシステム  フラグ
 1    32256B  8589934591B  8589902336B  primary  ext4              boott

パーティションを作成します。
開始は後ろから200GBを確保します。

(parted) mkpart
パーティションの種類? primary/プライマリ/extended/拡張? primary
ファイルシステムの種類? [ext2]? ext4
開始? 107374182400B
終了? 322122547199B
警告: WARNING: the kernel failed to re-read the partition table on /dev/xvda (デバイスもしくはリソースがビジー状態です). As a result, it may not reflect all of your changes
until after reboot.

再起動します。

(parted) quit
# reboot

ファイルシステム作成します。 xvda2 が作成されているので ext4 にします。

# mkfs.ext4 /dev/xvda2
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
--省略--
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

parted で確認します。

(parted) print
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvda: 322GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 32.3kB 8590MB 8590MB primary ext4 boot
2 117GB 322GB 205GB primary ext4

マウントしてみましょう。 fstab に以下を追加。

# vi /etc/fstab
/dev/xvda2 /mnt ext4 defaults 0 2
# mount -a

マウントを確認します。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  743M  6.7G  10% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
/dev/xvdc        37G  177M   35G   1% /media/ephemeral1
/dev/xvda2      197G   60M  187G   1% /mnt

ルートパーティションを100GBに拡張

確認が行えたら、次にルート側を拡張します。
dracut-modules-growroot をインストールします。

# yum install dracut-modules-growroot

以下がインストールされます。

  • cloud-utils-growpart
  • dracut-modules-growroot

コマンドでパーティションを拡張します。

# dracut --force --add growroot /boot/initramfs-$(uname -r).img

参考:CentOS on Amazon EC2 でディスクサイズ変更しても変わらないときの対処方法

起動を確認した場合は

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       99G  755M   93G   1% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
/dev/xvdc        37G  177M   35G   1% /media/ephemeral1
/dev/xvda2      197G   60M  187G   1% /mnt

自動的にリサイズされるAMIの場合は方法が異なります。
最初にルートパーティション分のEBSを確保し以下の行を削除し、parted で調整しましょう。

# vi /etc/cloud/cloud.cfg
– growpart
– resizefs

まとめ

安価にひとつのEBSで少々パフォーマンスを向上させたいときにいかがでしょうか。

元記事はこちらです。
ひとつのEBSを分割してみますよ