Linuxのディスク増設(LVM)

Linux Tips

結構前になりますが、Linuxサーバにディスク増設した際の手順をまとめておきます。
gparted を利用しています。

はじめに

結構前になりますが、KVMホストのディスク容量が少なくなってきた際にハードディスクを増設しました。
手順メモ、及び、いくつかのスクリーンショットは取ってあったのですが、記事としてまとめておきます。

Linux にディスクを増設する場合、fdisk を利用した説明が多いような気がするのですが、ここでは gparted を利用する手順を示します。( グラフィカルなツールなので fdisk よりは初心者にも取っ付きやすいのではないかと思われます )。

※とはいえ、gparted だけでは完結せずにコマンドラインでの操作も必要になるんですが...

※gparted は 0.14.0 で LVMの Read/Write サポートが追加されている。
参考 : GPrated 0.14.0 (2012-10-10) - Release note

※gpartedのメニューから [表示] > [サポートするファイルシステム] をクリックする事でサポートするファイルシステムは確認できます。

 

環境

環境は以下です。
gparted を利用するため X Windows が動作する環境が必要です。

OS CentOS 6.7
gparted 0.19.1

手順

gparted のインストール

gparted がインストールされていない場合インストールします。

  1. epel リポジトリからインストールします。epel がインストールされていない場合インストールします。
    # yum install epel-release
    
  2. gparted をインストールします。
    # yum install gparted
    

パーティションの作成

gparted を利用してパーティションを作成します。

  1. X Windows 上でターミナルを実行します。
  2. ターミナルから gprated を起動します。
    # gparted &
    

    gparted

  3. gparted が起動したら、追加したディスクを選択します。
    メニューから [GParted] > [デバイス] > [追加したデバイス] をクリックします。

    ※下図は 追加したデバイス="/dev/sdb" を選択した状態

    gparted

    "未割り当て"、パーティションテーブルも "認識できません" 状態である事が確認できます。

  4. パーティションテーブルを作成します。
    メニューから [デバイス] > [パーティションテーブルの作成] をクリックします。
    警告/確認ダイアログが表示されるので、形式を確認して[適用]ボタンをクリックします。

    ※2TB以上の場合gptを選択する必要があるが、今回のディスクの場合2TB未満なのでmsdosを選択。

  5. パーティションテーブルが作成されたら、パーティションを作成します。
    メニューから [パーティション] > [New] をクリックします。
    新規パーティションの作成ウィンドウが表示されるので、ファイルシステムに "lvm2 pv" を選択し、[追加]ボタンをクリックします。

    gparted

    lvm2 pv のパーティションが追加されます。

    ※サイズを指定しない場合、追加したディスクの全てを利用して単一パーティションを作成します。分割したい場合は適宜サイズを調整しましょう。

  6. メニューから [編集] > [保留中の操作を適用する] を実行します。
    保留中の操作が実行されパーティションが作成されます。

物理ボリューム(PV)操作

以降の操作はターミナルから実施します。

  1. PVが作成されているか確認します。
    # pvdisplay
    

    gparted で追加した PV ( 上図の場合 /dev/sdb1 ) が表示される事を確認します。

  2. 既存の VolumeGroup に追加した PV を追加します。
    # vgextend 既存VG名 /dev/sdb1
      Volume group "既存VG名" successfully extended
    
  3. 再度 PV を確認します。
    # pvdisplay
    
     (中略)
    
      --- Physical volume ---
      PV Name               /dev/sdb1
      VG Name               既存VG名
      PV Size               1.82 TiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              476931
      Free PE               476931
      Allocated PE          0
      PV UUID               xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
    

    /dev/sdb1 が既存VGに追加された事が確認できます。

論理ボリューム(LV)操作

PV が拡張されたら LV のサイズを変更します。

  1. LV の状態を確認します。
    # lvdisplay
      --- Logical volume ---
      LV Path                /dev/VolGroup00/lv_root
      LV Name                lv_root
      VG Name                VolGroup00
    
      (中略)
    
      LV Size                227.52 GiB
      Current LE             58245
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Logical volume ---
      LV Path                /dev/VolGroup00/lv_swap
      LV Name                lv_swap
      VG Name                VolGroup00
    
      (以下略)
    

    拡張したい LV の LV Path を確認します。

  2. 上で確認した LV Path を指定して未使用領域を追加します。
    以下では空き領域全て ( 100% ) 追加しています。
    # lvextend -l +100%FREE /dev/VolGroup00/lv_root
    
  3. 追加後、再度状態確認します。
    # lvdisplay
      (中略)
      LV Size                2.04 TiB
      Current LE             535176
      Segments               2
      (以下略)
    

    LV Size が増加している事が確認できます。

ファイルシステムの拡張

  1. 最後にファイルシステムを拡張します。

    ※暫く時間がかかります ( サイズによります )

    # resize2fs /dev/VolGroup00/lv_root
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/vg_kvmhost1/lv_root is mounted on /; on-line resizing required
    old desc_blocks = 15, new_desc_blocks = 131
    Performing an on-line resize of /dev/vg_kvmhost1/lv_root to 548020224 (4k) blocks.
    

    処理が完了すると以下のような出力がなされます。

    The filesystem on /dev/vg_kvmhost1/lv_root is now 548020224 blocks long.
    

    ※ここでプロンプトに戻ってこない状態になって不安になった場合、df コマンドでも叩いてみましょう。
    ブロックサイズが大きくなっていっているのが確認できます。

確認

最後に df で想定通りのサイズに拡張されたか確認しておきましょう。

# df