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です。

 

1.まずは、旧SSDから新SSDにデータを移す

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