hidemium's blog

日々学んだことをアウトプットする。

VMwareでUbuntuのディスク容量を拡張する

VMware上のUbuntuサーバでDockerのイメージを色々作っていたら、ディスク容量がいつのまにか少なくなっていたので、ディスク容量の拡張を行いました。

構成

Ubuntu 12.04
※上記のサーバはVMware ESXi 5.1上で動作しています。

VMware

サーバを停止

サーバのハードウェアを追加するため、サーバをシャットダウンしておきます。

$ sudo shutdown -h now

仮想ディスクを拡張する

  1. 対象の仮想サーバを右クリックし、「設定の編集」をクリックします。
  2. ハードウェアタブ>追加ボタンをクリックします。
  3. ハードウェアの追加>ハードディスクを選択し、次へをクリックします。
  4. 新規仮想ディスクを作成を選択し、次へをクリックします。
  5. 追加するディスク容量とディスクプロビジョニングを入力し、次へをクリックします。
  6. 詳細オプションはなにも変更せず、次へをクリックします。
  7. 設定内容を確認し、終了をクリックする。
  8. 対象の仮想サーバを右クリックし、電源>パワーオンをクリックします。

※仮想ディスクの容量拡張がなぜかできなかったため、新たな仮想ディスクを追加しています。

ディスク容量の拡張

Ubuntuサーバのパーティション構成は、OSインストール時のデフォルト設定であるため、LVM(Logical Volume Manager)を使用しています。追加した仮想ディスクを既存のボリュームグループに追加することで、ディスク容量の拡張を行います。

物理ボリュームの作成

追加した仮想ディスクのパーティションを作成します。

$ sudo parted /dev/sdb
GNU Parted 2.3
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
# パーティションテーブルを設定(printが実行できないので)
(parted) mklabel msdos
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

# 追加したディスクの全容量を新たなパーティションに
(parted) unit GB
(parted) mkpart extended 0 -1
(parted) mkpart logical 0 -1
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
 1    0.00GB  21.5GB  21.5GB  extended                    lba
 5    0.00GB  21.5GB  21.5GB  logical

# パーティションフラグをlvmに変更
(parted) set 5 lvm on
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
 1    0.00GB  21.5GB  21.5GB  extended                    lba
 5    0.00GB  21.5GB  21.5GB  logical                     lvm
(parted) quit

サーバをリブートします。

$ sudo shutdown -r now

物理ボリュームを作成します。

$ sudo ls -la /dev/sdb5
brw-rw---- 1 root disk 8, 21  6月 22 12:58 /dev/sdb5
$ sudo pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created

ボリュームグループの拡張

現在のボリュームグループのサイズを確認します。

$ sudo vgdisplay -v <ボリュームグループ名>
  --- Volume group ---
  VG Size               19.76 GiB

ボリュームグループを拡張します。

$ sudo vgextend <ボリュームグループ名> /dev/sdb5

ボリュームグループが拡張されたことを確認します。

$ sudo vgdisplay -v <ボリュームグループ名>
  --- Volume group ---
  VG Size               39.75 GiB

論理ボリュームの拡張

現在の論理ボリュームのサイズを確認します。

$ sudo lvdisplay <論理ボリューム名>
  --- Logical volume ---
  LV Size                15.74 GiB

論理ボリュームを拡張します。
論理ボリュームのサイズは、エクステント数による指定を行い、無駄がないように調整します。

$ sudo lvresize -L 36616 <論理ボリューム名>
  Extending logical volume root to 35.76 GiB
  Logical volume root successfully resized

論理ボリュームが拡張されたことを確認します。

$ sudo lvdisplay <論理ボリューム名>
  --- Logical volume ---
  LV Size                35.76 GiB

ファイルシステムの拡張

現在のファイルシステムのサイズを確認します。

$ df -h
Filesystem                        Size  Used Avail Use% Mounted on
<論理ボリューム名>                 15G   14G    1G  90% /

ファイルシステムを拡張します。

$ sudo resize2fs <論理ボリューム名>
resize2fs 1.42 (29-Nov-2011)
Filesystem at <論理ボリューム名> is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of <論理ボリューム名> to 5046272 (4k) blocks.
The filesystem on <論理ボリューム名> is now 5046272 blocks long.

ファイルシステムが拡張されたことを確認します。

$ df -h
Filesystem                        Size  Used Avail Use% Mounted on
<論理ボリューム名>                 36G   14G   21G  40% /

これでディスク容量を拡張することができました。