無料Wikiサービス | デモページ
Linuxなどのメモ書き

LVMによるボリューム拡張


概要

VMWare上のLinuxでディスク容量が足りなくなったので、ディスクを追加して、LVM2でボリュームサイズを拡張する。

前提

ディスクの状況

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/vg_wing-lv_root
                      24593536  22759168    585088  98% /
/dev/sda1               198337     36603    151494  20% /boot
tmpfs                   507528      1520    506008   1% /dev/shm

/のサイズを拡張する。/のファイルシステムはext4。

/はVolumeGroup:vg_wing内のLogicalVolume:lv_root内に割り当てられている。

手順の概要

(1) VMWareの仮想マシンの設定からディスクを追加(今回は20GB)
(2) 追加したディスクにfdiskでLVM用の領域を作成
(3) (2)で作成したLVM領域にPhysicalVolumeを作成
(4) PhysicalVolumeをVolumeGroup(vg_wing)に追加
(5) /のLogicalVolume(lv_root)のサイズを拡張
(6) /のファイルシステムサイズをLogicalVolumeのサイズまで拡張

作業内容

まずは、VMWareの仮想マシンの設定からディスクを追加(今回は20GB分)。

Linuxを起動後、fdiskでLVM用の領域を作成する。

# fdisk /dev/sdb  <== 今回追加したディスクは/dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
Building a new DOS disklabel with disk identifier 0x525a5e11.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


このディスクのシリンダ数は 2610 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): p

ディスク /dev/sdb: 21.4 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x525a5e11

デバイス ブート     始点        終点    ブロック   Id システム
<== まだ領域はなにもない

コマンド (m でヘルプ): n <== 領域作成
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-2610, 初期値 1): <== 20GB分すべて割り当て
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-2610, 初期値 2610): 
初期値 2610 を使います

コマンド (m でヘルプ): p

ディスク /dev/sdb: 21.4 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x525a5e11

デバイス ブート     始点        終点    ブロック   Id システム
/dev/sdb1               1        2610    20964793+  83  Linux
<== 領域が作成された

コマンド (m でヘルプ): t <== 領域の種別をLVMに変更する
選択した領域 1
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sdb: 21.4 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x525a5e11

デバイス ブート     始点        終点    ブロック   Id システム
/dev/sdb1               1        2610    20964793+  8e  Linux LVM
<== Linux LVMに変更された

コマンド (m でヘルプ): w <==ディスクに書き込んで終了
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

次に作成した領域(/dev/sdb1)にPhysicalVolumeを作成する。

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_wing
  PV Size               24.80 GB / not usable 3.72 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              6348
  Free PE               0
  Allocated PE          6348
  PV UUID               Lnejqg-BXFK-mEjP-JWwT-a7wD-F63Q-WANN3P
以下が新しく作成したPhysicalVolume
  "/dev/sdb1" is a new physical volume of "19.99 GB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               <== VolumeGroupはまだ割り当てていないので空
  PV Size               19.99 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               NcfcBj-uewt-C40I-EdPv-rcIh-malQ-Eu7acF

VolumeGroup(vg_wing)に上記PhysicaVolumeを追加する。

# vgextend vg_wing /dev/sdb1
  Volume group "vg_wing" successfully extended

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_wing
  PV Size               24.80 GB / not usable 3.72 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              6348
  Free PE               0
  Allocated PE          6348
  PV UUID               Lnejqg-BXFK-mEjP-JWwT-a7wD-F63Q-WANN3P

  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_wing<== VolumeGroupに割り当てられた
  PV Size               19.99 GB / not usable 1.43 MB
  Allocatable           yes 
  PE Size (KByte)       4096
  Total PE              5118
  Free PE               5118<==まだPEは割り当てられていない
  Allocated PE          0
  PV UUID               NcfcBj-uewt-C40I-EdPv-rcIh-malQ-Eu7acF

# vgdisplay <== VolumeGroupの状況を確認
  --- Volume group ---
  VG Name               vg_wing
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               44.79 GB <== サイズが増えた
  PE Size               4.00 MB
  Total PE              11466
  Alloc PE / Size       6348 / 24.80 GB
  Free  PE / Size       5118 / 19.99 GB <== 追加した分が空きになっている
  VG UUID               f9WKww-jQjY-Hr63-LH2Z-nspp-nKew-anCzXW

次にLogicalVolume(lv_root)のサイズをVolumeGroup(lv_wing)の空きサイズ(19.99GB)を目一杯つかって拡張。

現在のLogicalVolumeの状況
# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg_wing/lv_root
  VG Name                vg_wing
  LV UUID                n9GBw7-BHT6-LF1e-BU1K-TlfQ-lpc7-5wljQR
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                23.83 GB
  Current LE             6100
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
<略>

# lvextend -L +19.99G /dev/vg_wing/lv_root <== サイズを拡張
  Rounding up size to full physical extent 19.99 GB
  Extending logical volume lv_root to 43.82 GB
  Logical volume lv_root successfully resized

拡張後の状況を確認すると、、、

# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg_wing/lv_root
  VG Name                vg_wing
  LV UUID                n9GBw7-BHT6-LF1e-BU1K-TlfQ-lpc7-5wljQR
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                43.82 GB <== サイズが拡張された
  Current LE             11218
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
<略>

# vgdisplay 
  --- Volume group ---
  VG Name               vg_wing
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               44.79 GB
  PE Size               4.00 MB
  Total PE              11466
  Alloc PE / Size       11466 / 44.79 GB
  Free  PE / Size       0 / 0   <== LogicalVolumeに割り当てたので空きがなくなった
  VG UUID               f9WKww-jQjY-Hr63-LH2Z-nspp-nKew-anCzXW

これで、/を格納しているボリュームのサイズを拡張できたので、最後に/のファイルシステムサイズを拡張する。ext4ではresize2fsでファイルシステムをマウントしたまま、サイズ変更できる。

# resize2fs /dev/vg_wing/lv_root 
resize2fs 1.41.9 (22-Aug-2009)
Filesystem at /dev/vg_wing/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg_wing/lv_root to 11487232 (4k) blocks.
The filesystem on /dev/vg_wing/lv_root is now 11487232 blocks long.

サイズ変更後、空き容量を確認すると、、、

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/vg_wing-lv_root
                      45228468  22767292  20166444  54% /
/dev/sda1               198337     36603    151494  20% /boot
tmpfs                   507528      1704    505824   1% /dev/shm

空いた。



最終更新 2011/03/21 11:44:49 - kztomita
(2011/03/21 11:09:34 作成)