読者です 読者をやめる 読者になる 読者になる

exlar's IT note

ITやスマートデバイスを中心とした趣味情報の寄せ集め

VMware (ESXi) で増量したディスクをLVMに組み込む方法

VMware(ESXi)上の仮想マシン CentOS 6.4 をファイルサーバとして利用しているが、標準のディスク割り当てでインストールをしたら /home 領域が過剰に大きくなってしまった。ここで再インストールをしておけば手間はかからなかったのだが、この状態でしばらく運用してしまったのでそれも面倒。

幸い標準でLVMが採用されているので、ディスクサイズを調整して /mnt 領域の容量を確保することにした。

現在の状態と目標

図1のようにCentOS領域は1.2TBである。同一HDD内に600GBの空き容量があったので、これをCentOSに割り当てることとした。今回はシンプロビジョニングを利用しているのでディスクサイズの拡張とするが、新規ディスクの割り当て(増設する)でもほぼ同じ手順と思われる。そしてLVMにて2つの領域を1つであるかのように利用する(図2)。

f:id:exlair:20131208150119p:plain
図1 現在の使用領域と新規割り当てサイズ

f:id:exlair:20131208150126p:plain
図2 LVMで複数領域を統合

f:id:exlair:20131208150134p:plain
図3 パーティションの縮小と拡張

(Step.1) LVM構築の大まかな流れ

  1. ディスクのパーティショニング(図1の状態)
  2. 物理ボリューム(PV)の作成
  3. ボリュームグループ(VG)の作成(図2の状態)
  4. 論理ボリューム(LV)の作成
  5. ファイルシステムの作成
  6. マウント

(Step.1-1) ディスクパーティショニング

vSphere client にて仮想マシンのディスクサイズを拡張。先ずは拡張ディスク分の新規パーティションを作成する。

ディスク拡張前後で fdisk -l を実行してサイズ変更されていることを確認すると良い。

sudo fdisk /dev/sda

p (テーブル表示で確認)

n (新規)

p (テーブル表示で確認)

領域番号 (1-4): 3 (既に1,2があるので3を作成)

p (テーブル表示で確認)

t (LVMに変更する為)

領域番号 (1-4): 3

L

16進数コード (L コマンドでコードリスト表示): 8e

p (テーブル表示で確認)

コマンド (m でヘルプ): w
領域テーブルは交換されました!

# リブートする必要がある
shutdown -r now

(Step.1-2 ~3) 物理ボリューム(PV)の作成, VGの作成

以上でパーティションが作成された。続いてそのパーティションを使ってLVMのディスクを拡張します。

pvcreate /dev/sda3
vgextend vg_cent /dev/sda3

※ ここで出てくる vg_cent とは、インストール時に設定された名前。仮想マシンのホスト名から自動的に設定されている様子(今回の仮想マシンホスト名は cent である為、vg_centとなる)

(参考)実行結果のコピー

$ sudo fdisk -l /dev/sda

(中略)

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64      156651  1257778176   8e  Linux LVM
/dev/sda3          156651      248029   734001742+  8e  Linux LVM

$ sudo pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created

$ sudo vgextend vg_cent /dev/sda3
  Volume group "vg_cent" successfully extended

$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_cent
  PV Size               1.17 TiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              307074
  Free PE               0
  Allocated PE          307074
  (一部省略)

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               vg_cent
  PV Size               700.00 GiB / not usable 2.58 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              179199
  Free PE               179199
  Allocated PE          0
  (一部省略)

(Step.1-4 ~5) 論理ボリューム(LV)の作成

/mnt用に新規 Logical Volume (lv_mnt) を作成する。ここでは割り当てたディスクサイズ600GBを指定している。その後、ファイルシステムを作成する。

lvcreate -L 600G -n lv_mnt vg_cent
 # (参考) `-l 100%FREE` この方法で100%使えるようだが上記の通りサイズ指定した

mkfs.ext4 /dev/vg_cent/lv_mnt

実行結果

$ sudo lvdisplay -C
  LV      VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_home vg_cent -wi-ao---  1.12t                                             
  lv_root vg_cent -wi-ao--- 50.00g                                             
  lv_swap vg_cent -wi-ao---  3.88g

$ sudo lvcreate -L 600G -n lv_mnt vg_cent
  Logical volume "lv_mnt" created

$ sudo lvdisplay -C
  LV      VG      Attr      LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_home vg_cent -wi-ao---   1.12t                                             
  lv_mnt  vg_cent -wi-a---- 600.00g                                             
  lv_root vg_cent -wi-ao---  50.00g                                             
  lv_swap vg_cent -wi-ao---   3.88g

(Step.1-6) マウントの設定

fatabに記載して仮想マシンを再起動する。

$ sudo vi /etc/fstab
+ /dev/mapper/vg_cent-lv_mnt    /mnt        ext4    defaults        1 3

reboot

Step.2 パーティションサイズの調整

記事が長くなったので別に記載
LVMでパーティションサイズを調整(縮小・拡張)する - exlair's diary (hatenablog)