LVM 操作/HDD増設
Windows では OS のインストール後に パーティションのサイズを変更しようとすると、サードパーティのソフトを使用するか再インストールするしかないわけですが (*)、Linux の場合、LVM (Logical Volume Manager) を利用することで、パーティションのサイズを拡張/縮小することができます。また、ドライブを跨いだ複数のパーティション を 1つのドライブのように操作することができます。
ここでは HDD の増設を例に LVM の構築を説明します。
*) Windows Vista には拡張機能がありますが、OSの領域 だけで40GB を占有するなど、正直に言って使い物になりません。
HDDの追加
LVM を構築するハードディスクを接続し OS を起動したら、fdisk コマンドでドライブが認識されていることを確認します。
$ fdisk -l ・ ・ ・ Disk /dev/sdc: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes Disk identifier: 0x00097882 デバイス Boot Start End Blocks Id System
3台目の HDD なので、/dev/sdc として認識されています。ここでは HDD の容量すべてを LVM パーティションに割り当てます。
$ fdisk /dev/sdc このディスクのシリンダ数は 9729 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): n # 新規パーティションを作成 コマンドアクション e 拡張 p 基本領域 (1-4) p # 基本領域を選択 領域番号 (1-4): 1 # 既存の領域は無いので「1」 最初 シリンダ (1-9729, default 1): # 空エンター Using default value 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-9729, default 9729): # 空エンター Using default value 9729 コマンド (m でヘルプ): t # パーティションタイプを変更 Selected partition 1 16進数コード (L コマンドでコードリスト表示): 8e # Linux LVM に変更 領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): p # 領域の確認 Disk /dev/sdc: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes Disk identifier: 0x00097882 デバイス Boot Start End Blocks Id System /dev/sdc1 1 9729 78148161 8e Linux LVM コマンド (m でヘルプ): wq # 書き込み & Quit 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
これでハードディスク に 「/dev/sdc1」というパーティションが作られました。
LVM へ追加
ハードディスクを LVM へ追加する際は、次のような手順となります。
- PV (物理ボリューム) を作成する
- VG (ボリュームグループ) を作成、もしくは拡張する
- 作成した VG を LVMで扱えるよう LV (論理ボリューム) に登録する
- LV をマウントする
・・・なんだかわかりにくいですが。
既存の VG へ 追加する場合
OS のインストール時に「デフォルトの レイアウトを作成」 を選択した場合は、Linux LVM として既に VG が存在していますので、そちらに新しいパーティションを追加することができます。
増設した /dev/sdc1 を pvcreate で LVM の物理ボリューム(PV)に登録します。
$ pvcreate /dev/sdc1 Physical Volume "/dev/sdc1" successfully created
既存のボリュームグループ(VG) に新しいパーティションを追加します。VG名は vgdisplay で確認できます。通常は 「VolGroup00」となっていると思います。
$ vgextend VolGroup00 /dev/sdc1 Volume group "VolGroup00" successfully extended
既存の論理ボリューム(LV) を追加したパーティションの分 拡張します。既存のLV は lvdisplay で確認することができます。
$ lvdisplay -C LV VG Attr LSize Origin Snap% Move Log Copy% LogVol00 VolGroup00 -wi-a- 117.47G
また、vgdisplay で拡張できるサイズを確認します。
$ vgdisplay ・ ・ ・ VG Size 191.97 GB PE Size 32.00 MB Total PE 6143 Alloc PE / Size 3759 / 117.47 GB Free PE / Size 2384 / 74.50 GB
[PE Size] * [Free PE] の値が拡張できるサイズですので、32MB * 2384 = 76288MB となります。
$ lvextend -L +76288MB /dev/VolGroup00/LogVol00 Extending logical volume LogVol00 to 191.97 GB Logical volume LogVol00 successfully resized
最後に、xfs_growfs
でファイルシステムを拡張します。
$ xfs_growfs
/dev/VolGroup00/LogVol00
resize2fs 1.40.4 (31-Dec-2007)
Resizing the filesystem on /dev/VolGroup00/LogVol00 to 50323456 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 50323456 blocks long.
※ 既存の VG に追加した場合はマウント作業は必要ありません。 (もちろん、既存の VG がすでに マウントされている場合ですが)
新しい VG として追加する
既存の VG とは別に新しい VG として追加する場合は以下の手順でVG・LV を作成します。
$ pvcreate /dev/sdc1 # pvcreate で物理ボリュームを作成
Physical Volume "/dev/sda3" successfully created
vgcreate で新しいボリュームグループを作成。PEサイズを 32MB に指定する。
$ vgcreate -s 32m VolGroup01 /dev/sdc1 Volume Group "VolGroup01" successfully created
lvcreate で論理ボリュームを作成
vgdisplay コマンドでサイズを確認する。[PE size] * [Total PE] の値が作成できる最大容量なので PE size: 32MB * Total PE: 121 = 3872MB を指定します。
$ lvcreate -L 3872M -n LogVol00 VolGroup01 Logical Volume "LogVol00" created
ファイルシステムを ext3 でフォーマットします。
$ mkfs.ext3 /dev/VolGroup01/LogVol00
これで HDD を使用する準備ができました。
■ ファイルシステムのマウント
LVM ができたら、適当なところにマウントパスを作ってマウントしてみます。ここでは、/NEW_PART というディレクトリを作成してマウントしています。
$ mkdir /NEW_PART # マウントパス を作成 $ mount -t ext3 /dev/VolGroup01/LogVol00 /NEW_PART $ cd /NEW_PART $ ls-la 合計 28 drwxr-xr-x 3 root root 4096 2008-09-14 00:30 . drwxr-xr-x 24 root root 4096 2008-09-14 02:21 .. drwx------ 2 root root 16384 2008-09-14 00:30 lost+found
手動でマウントせず、OS 起動時に自動でマウントするには、/etc/fstab に以下を追加します。
/dev/VolGroup01/LogVol00 /NEW_PART ext3 defaults 1 2