■LVMの実験
ubuntuでLVMの実験をしてみる。
環境
- PC: 一世代前のもの 今回は直接関係ないので省略
- OS: ubuntsu 7
- ディスク構成:
OSの入っているディスク: /dev/hda 60G
LVMを構成するディスク: /dev/hdc 60G
増設用のディスク: /dev/sda 60G
(1)作成、(2)ディスクの増設、(3)ディスクの取り外し、の実験を行う。
作成
パーティションの設定
最初にLVMのパッケージが入っていなかったのでインストールする。
lvm-commonとlvm2をインストールする。
fdsikで使用するディスクをfdiskし、タイプを8eのLVMに設定する。
Disk /dev/hdc: 60.0 GB, 60022480896 bytes
16 heads, 63 sectors/track, 116301 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes
デバイス Boot Start End Blocks Id System
/dev/hdc1 1 116301 58615672+ 8e Linux LVM
この状態で書き込み、fdiskを終了し、念のためリブート。
物理ボリューム(PV)の作成
物理ボリュームを作成するには、pvcreateを使う。
$ sudo pvcreate /dev/hdc1
Physical volume "/dev/hdc1" successfully created
ubuntsuだからsudo。
ボリュームグループ(VG)の作成
物理ボリュームを入れるためのボリュームグループを作成する。コマンドは
vgcreateを使う。ここではtestという名前にする。
$ sudo vgcreate test /dev/hdc1
Volume group "test" successfully created
この状態を表示してみる。
$ sudo vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 55.90 GB
PE Size 4.00 MB
Total PE 14310
Alloc PE / Size 0 / 0
Free PE / Size 14310 / 55.90 GB
VG UUID rgOfKA-oq9w-CNWR-WVsu-MciQ-Fe6z-ltqOZ7
--- Physical volumes ---
PV Name /dev/hdc1
PV UUID HaBVSU-VfRP-oBy7-BqbW-TYPD-71LS-qqO8Yp
PV Status allocatable
Total PE / Free PE 14310 / 14310
論理ボリュームの作成
今まで行ってきたのは、物理的なものに関する設定。物理的なボリューム、
ボリュームグループを作り、その中にさらに論理的なボリュームを作成する。
最近のSolarisのプールみたいなものかも。リソースを管理するプールと
呼ばれる領域みたいなものを作って、ここから必要な分だけ切り分けて使うらしい。
ここではsampleという論理ボリュームをtestの中に10G作る。
$ sudo lvcreate -L 10G -n sample test
Logical volume "sample" created
情報を表示してみる。
$ sudo lvdisplay /dev/test/sample
--- Logical volume ---
LV Name /dev/test/sample
VG Name test
LV UUID Cfov2w-F2Qk-D42H-NeZ3-zEj2-C0Xg-0ixxPD
LV Write Access read/write
LV Status available
# open 0
LV Size 10.00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
注意する点は、パスが/dev/ボリュームグループ名/論理ボリューム名となる点。
こうしてできた論理ボリュームはフォーマット、マウントができる。
$ sudo mke2fs -j /dev/test/sample
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
さらに、これを/mntにマウントしてみる。
$ sudo mount -t ext3 /dev/test/sample /mnt/
確認
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda1 54G 2.5G 49G 5% /
varrun 237M 104K 236M 1% /var/run
varlock 237M 0 237M 0% /var/lock
procbususb 237M 96K 236M 1% /proc/bus/usb
udev 237M 96K 236M 1% /dev
devshm 237M 0 237M 0% /dev/shm
lrm 237M 33M 204M 14% /lib/modules/2.6.20-16-generic/volatile
/dev/mapper/test-sample
9.9G 151M 9.2G 2% /mnt
マウントできているのがわかる。
ディスクの増設
容量を増やすためにディスクを増設してみる。
まず、前と同様にLVMタイプでfdiskする。
コマンド (m でヘルプ): p
Disk /dev/sda: 60.0 GB, 60022480896 bytes
255 heads, 63 sectors/track, 7297 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sda1 1 7297 58613121 8e Linux LVM
コマンド (m でヘルプ):
次に、pvcreateするのは前と同じ。
$ sudo pvcreate /dev/sda1
Physical volume "/dev/sda1" successfully created
ここからが、少し異なる。追加するためには、vgextendを使う。
$ sudo vgextend test /dev/sda1
Volume group "test" successfully extended
確認してみる。
$ sudo vgdisplay test
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 111.79 GB
PE Size 4.00 MB
Total PE 28619
Alloc PE / Size 2560 / 10.00 GB
Free PE / Size 26059 / 101.79 GB
VG UUID rgOfKA-oq9w-CNWR-WVsu-MciQ-Fe6z-ltqOZ7
確かに容量が倍の111GBになっている。当たり前だが、論理ボリュームは変わらない。
$ sudo lvdisplay /dev/test/sample
--- Logical volume ---
LV Name /dev/test/sample
VG Name test
LV UUID Cfov2w-F2Qk-D42H-NeZ3-zEj2-C0Xg-0ixxPD
LV Write Access read/write
LV Status available
# open 0
LV Size 10.00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
論理ボリュームを増やすには、lvextendを使う。ここでは、倍の
20Gにしてみる。
$ sudo lvextend -L 20G /dev/test/sample
Extending logical volume sample to 20.00 GB
Logical volume sample successfully resized
確認してみる。
$ sudo lvdisplay
--- Logical volume ---
LV Name /dev/test/sample
VG Name test
LV UUID Cfov2w-F2Qk-D42H-NeZ3-zEj2-C0Xg-0ixxPD
LV Write Access read/write
LV Status available
# open 0
LV Size 20.00 GB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
20Gになっているのがわかる。しかし、このままマウントしても20G
使えないので、パーティションのリサイズを行う。
$ sudo resize2fs /dev/test/sample
resize2fs 1.40-WIP (14-Nov-2006)
Please run 'e2fsck -f /dev/test/sample' first.
$ sudo e2fsck -f /dev/test/sample
e2fsck 1.40-WIP (14-Nov-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/test/sample: 11/1310720 files (9.1% non-contiguous), 79697/2621440 blocks
$ sudo resize2fs /dev/test/sample
resize2fs 1.40-WIP (14-Nov-2006)
Resizing the filesystem on /dev/test/sample to 5242880 (4k) blocks.
The filesystem on /dev/test/sample is now 5242880 blocks long.
これでマウントし、容量を見てみる。
$ sudo mount -t ext3 /dev/test/sample /mnt
$ df -h /mnt
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/test-sample
20G 156M 19G 1% /mnt
20Gになっていることが確認できた。
ディスクの取り外し
2台のディスクを使用している状態で、片方のディスクの調子が悪い、または
故障した、ということを仮定する。このような場合には、調子の悪いディスクの
内容をもう片方に移動し、ボリュームグループから削除する、という作業を行う。
実験する環境は次のようにする。
調子の悪いディスク /dev/hdc1 20G
データの移動先 /dev/sda1 60G
実験の前に予めボリュームグループなどを作成しておく。手順は上と同じ。
test2というボリュームグループを作成し、その中にsample2という論理ボリューム
を20G作成する。結果は以下のようになる。
$ sudo vgdisplay -v test2
Using volume group(s) on command line
Finding volume group "test2"
--- Volume group ---
VG Name test2
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 55.90 GB
PE Size 4.00 MB
Total PE 14310
Alloc PE / Size 5120 / 20.00 GB
Free PE / Size 9190 / 35.90 GB
VG UUID JONBvu-F3jp-UnqI-mkhT-a2fp-O9jT-d2100Z
--- Logical volume ---
LV Name /dev/test2/sample2
VG Name test2
LV UUID kdgMYi-zC8e-hwMX-xMYT-Lo60-ytzL-YZxqeU
LV Write Access read/write
LV Status available
# open 0
LV Size 20.00 GB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Physical volumes ---
PV Name /dev/hdc1
PV UUID 12eRsi-Knfd-7kUL-iHvC-iOq0-Rj0E-Fauv2a
PV Status allocatable
Total PE / Free PE 14310 / 9190
この状態で、上記のようにext3でフォーマットし、/mntにマウントする。
$ sudo mke2fs -j /dev/test2/sample2
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2621440 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
160 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
$ sudo mount -t ext3 /dev/test2/sample2 /mnt/
これで、/mntが20G使える状態になった。
次に、この状態から、調子の悪い/dev/hdcと/dev/sdaとの2つのディスクにまたがって
論理ボリュームを作成し、移動ができることを確認する。
データを移動するためには、pvmoveを使う。
$ sudo pvmove /dev/hdc1 /dev/sda1
このときに、LVM2を使っているので、dm-mirrorドライバがないと
次のようなエラーメッセージが出る。
mirror: Required device-mapper target(s) not detected in your kernel
このようなときにはmodprobe dm-mirrorとすればよい。
pvmoveが終わったらvgreduceで取り除くことができる。
$ sudo vgreduce test2 /dev/hdc1
Removed "/dev/hdc1" from volume group "test2"
この状態で/dev/hdc1を取り外すことができるようになる。
参考サイト
最終更新:2007年08月02日 22:01