■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を取り外すことができるようになる。











参考サイト

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2007年08月02日 22:01