公開日: 2012年8月9日 01:50:59
最終更新: 2012年8月9日 01:50:59

HDD増設 (LVM 操作)

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 へ追加する際は、次のような手順となります。

  1. PV (物理ボリューム) を作成する
  2. VG (ボリュームグループ) を作成、もしくは拡張する
  3. 作成した VG を LVMで扱えるよう LV (論理ボリューム) に登録する
  4. 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