LVMを使っての既存ファイルシステム拡張
最近Let'sNoteのSSDを60GからIntelの120GSSDに乗り換えました。
乗り換えついでに、広くなった分を新しくLinuxに分け与えようと思いLVMの操作に挑戦しました。
LVMとは(Logical Volume Manager)といい、ディスクマネージメント機能の総称らしいです。
自分的には、ディスクを管理する素晴らしい機能的な感じです。
何が素晴らしいかと言えば、パーティションなどをまたいでもあたかも1つのパーティションのように扱える。
イメージ的にはこんな感じですかね。
イメージいらないぐらいですね。
とりあえず、拡張が簡単にできて物理ディスクのことをあまり考慮しなくてもいいのが便利です。
取り外しもできます。取り外し編はこちら「LVMの論理ボリュームサイズ縮小(PV取り外し)」
LVMには、ボリュームを管理する単位があります。
・PV(物理ボリューム)
・VG(ボリュームグループ)
・LV(論理ボリューム)
PV(Physical Volume)
PVとは、LVM用に用意したパーティションです。
未割当な領域に、LVM用にパーティションを作成するだけです。
VG(Volume Group)
VGとは上で作成したPVをまとめた単位です。
PVを2つ作成して、VolGroup00というVGに割り当てる感じです。
増やしたかったらVolGroup00に新たに1つPVを増やすといったように使えます。
(実際は物理エクステント(PE)という単位で割り当てます。PV作成時に指定されたサイズに分割し、その1つ1つがPE)
LV(Logical Volume)
LVはVGで作成した領域の上に作成します。このLVを各ディレクトリにマウントしてあげます。
なので、使う側としては、LVのみ意識すればいい感じになっています。
イメージ的にはこんなでしょうか?
容量を増やしたいときには、家の中(VG)にPVを追加してあげればVGを大きくすることができそうです。
では、こっから実際の手順です。
環境は、Fedora16 32bitです。
HDDを移行するときは、dump,restoreコマンドを使用すればいいらしいのだが、あいにくファイルシステムが
ext4なので使用することができない。
で、どうしようかと思っていたらddコマンドなるものがあるらしい。
注意書きで同容量のHDDの場合のみddコマンドで。的な事が書いてあるサイトが結構あった気がするが、
気にせず容量の違うHDDにddコマンドでコピーしてみたいと思います。
(失敗しても中身もともと空なので問題なし。)
dd if=/dev/sda of=/dev/sdb
60Gなのでそんなに時間をかけずにコピーは完了する。(コピー中は何も表示されません)
起動してみるとなんの問題もなく動いたのでOKでした。
2.現在のパーティションの状態を確認する
[root@localhost kiyoto]# fdisk /dev/sda
コマンド (m でヘルプ): p Disk /dev/sda: 120.0 GB, 120034123776 bytes ヘッド 255, セクタ 63, シリンダ 14593, 合計 234441648 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x12733297 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 63 75216329 37608133+ 7 HPFS/NTFS/exFAT /dev/sda2 75216896 76240895 512000 83 Linux /dev/sda3 76240896 125044735 24401920 8e Linux LVM
3.パーティションを追加する
nで新しいパーティションを追加する。
コマンド (m でヘルプ): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): p 選択したパーティション 4 最初 セクタ (75216330-234441647, 初期値 75216330): 125044736 Last セクタ, +セクタ数 or +size{K,M,G} (125044736-234441647, 初期値 234441647): +30G
4.ファイルタイプを変える
新しく追加したパーティションのIDは「83」になっているので、それをLVMの「8e」に変更する。
デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 63 75216329 37608133+ 7 HPFS/NTFS/exFAT /dev/sda2 75216896 76240895 512000 83 Linux /dev/sda3 76240896 125044735 24401920 8e Linux LVM /dev/sda4 125044736 187959295 31457280 83 Linux
コマンド (m でヘルプ): t
パーティション番号 (1-4): 4
16進数コード (L コマンドでコードリスト表示): 8e
パーティションのシステムタイプを 4 から 8e (Linux LVM) に変更しました
デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 63 75216329 37608133+ 7 HPFS/NTFS/exFAT /dev/sda2 75216896 76240895 512000 83 Linux /dev/sda3 76240896 125044735 24401920 8e Linux LVM /dev/sda4 125044736 187959295 31457280 8e Linux LVM
5.変更状態を保存する
コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。 カーネルはまだ古いテーブルを使っています。新しいテーブルは 次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に 使えるようになるでしょう ディスクを同期しています。
6.物理ボリュームを作成
再起動後、作成したパーティションにPV(物理ボリュームを作成する)
[root@localhost kiyoto]# pvcreate /dev/sda4 Writing physical volume data to disk "/dev/sda4" Physical volume "/dev/sda4" successfully created
7.ボリュームグループ名を確認する
[root@localhost kiyoto]# vgdisplay -v Finding all volume groups Finding volume group "VolGroup" --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 23.25 GiB PE Size 32.00 MiB Total PE 744 Alloc PE / Size 744 / 23.25 GiB Free PE / Size 0 / 0 VG UUID ioSlrx-15VC-Zf9Q-YjOW-MpXM-vPWn-YUZ04g
8.ボリュームグループに物理ボリュームを割り当てる
[root@localhost kiyoto]# vgextend VolGroup /dev/sda4 Volume group "VolGroup" successfully extended
9.論理ボリューム名を確認する
vgdisplay -v で確認すると、さきほど追加した物理ボリュームもボリュームグループに追加されている。
[root@localhost kiyoto]# vgdisplay -v Finding all volume groups Finding volume group "VolGroup" --- Logical volume --- LV Name /dev/VolGroup/lv_root VG Name VolGroup LV UUID SgQAaB-Srat-cvhH-Ownk-qu87-pyNl-z9OlL0 LV Write Access read/write LV Status available # open 1 LV Size 18.31 GiB Current LE 586 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Physical volumes --- PV Name /dev/sda3 PV UUID iQuL9H-H1ic-3lPS-L5ja-v3y0-a2rB-0k5cf1 PV Status allocatable Total PE / Free PE 744 / 0 PV Name /dev/sda4 PV UUID wW8jGT-hb2T-85UN-mmA5-bIPd-Pti8-Lc0ruw PV Status allocatable Total PE / Free PE 959 / 959
10.論理ボリュームの容量を増やす
[root@localhost kiyoto]# lvextend -L +20G /dev/VolGroup/lv_root Extending logical volume lv_root to 38.31 GiB Logical volume lv_root successfully resized
11.ファイルサイズの変更
[root@localhost kiyoto]# resize2fs /dev/VolGroup/lv_root resize2fs 1.41.14 (22-Dec-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 3 Performing an on-line resize of /dev/VolGroup/lv_root to 10043392 (4k) blocks. resize2fs: 無効な引数です While trying to add group #243
12.容量の確認
[root@localhost kiyoto]# lvdisplay -v Finding all logical volumes --- Logical volume --- LV Name /dev/VolGroup/lv_swap VG Name VolGroup LV UUID Gb1NOQ-e3t2-Xryy-N8QS-lkjZ-ikk4-LMyRMc LV Write Access read/write LV Status available # open 2 LV Size 4.94 GiB Current LE 158 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/VolGroup/lv_root VG Name VolGroup LV UUID SgQAaB-Srat-cvhH-Ownk-qu87-pyNl-z9OlL0 LV Write Access read/write LV Status available # open 1 LV Size 38.31 GiB Current LE 1226 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1