コンテンツに飛ぶ | ナビゲーションに飛ぶ

パーソナルツール
セクション
現在位置: ホーム 既存LVMを縮小して新規LVMを追加する

既存LVMを縮小して新規LVMを追加する

LVMに関する設定メモ

CentOSで既存パーティション(LVM)を縮小して、新規パーティションを切るためのメモです。

下記の作業を行うにあたり、参考にさせていただいたウェブページです。
  1. CentOSでLVM物理/論理ボリュームサイズを縮小する
  2. Lvmを縮小してみた
  3. LVMパーティションを縮小する方法
  4. partedでパーティッション作成してLVMを作ってみた


目的

それほど使われていない/dev/sda2を端に寄せて、/dev/sda3を新規に作成したい(下図参照)。

chlvm

作業が面倒なものになったのは以下の理由によります。
  • partedでLVM領域のリサイズができない
  • fdiskがgptをサポートしていない
これらの問題が解決されれば、下のメモ書きは無用なものになるはずです。

LVM1のサイズを縮小する

(以下の記述は上記ウェブページの1が詳しいです)
LVM1がマウントされていない状態で操作を行う必要があるので、LiveCDなどから起動する必要があります。
私のマシンはCD/DVDドライブがついていないので、 UNetbootinで作成したUSBメモリからrescueモードで起動しました。
起動後、作業を行いたい領域のマウントを解除します。

# umount /dev/mapper/vg_xx-vname

e2fsckでファイルシステムをチェック、
# e2fsck -f /dev/mapper/vg_xx-vname

resize2fsでファイルシステムのサイズを変更、
# resize2fs /dev/mapper/vg_xx-vname 2000G

lvreduceで論理ボリュームを縮小、
# lvreduce -L 2000G /dev/mapper/vg_xx-vname

lvdisplayで変更を確認、
# lvdisplay /dev/mapper/vg_xx-vname

pvscanとlvscanで論理ボリュームと物理ボリュームのサイズを確認、
# pvscan
...(結果)
# lvscan
...(結果)

縮小したvg_xx-vnameとLinuxのswap領域の間にスキマができているので、
LVM1に確保されているswap領域をvg_xx-vnameのとなりに移動させます(実際の作業は削除と作成)、
# swapoff /dev/mapper/vg_xx-swap
# lvremove /dev/mapper/vg_xx-swap
# lvcreate -L 8G /dev/mapper/vg_xx-swap
# mkswap /dev/mapper/vg_xx-swap
# swapon /dev/mapper/vg_xx-swap

物理ボリュームのサイズを確認、
# pvscan

pvresizeで物理ボリュームを縮小、
# pvresize --setphysicalvolumesize 2000G /dev/sdb2

上で指定した大きさ(2000G)が小さいとエラー、大きすぎると利用されない領域が発生します。
なので、サイズ(MやKでも指定できますが1G=1024Mとなることに注意)を適当に変えながら
上のコマンドを繰り返し、pvscanしたときに
>> PV /dev/sdb2 VG vg_xx lvm2 [2001GB / 0 free]
などのように"0 free"の表示が出るように調整します。


新規LVMの作成

上の作業で作った空き領域に新規LVMを作成します。

partedでパーティションの内容を確認します。
# parted
(parted) print
...(結果)

上の作業で縮小したvg_xxがまだもとの大きさで表示されているはずです。
本当はLVM領域をリサイズしたいのですが、いまのところpartedによるLVM領域の
リサイズはできないので、ここは思い切ってパーティションの削除と作成で対処します。

(parted) rm 2 (注:2番目のパーティションを削除)
(parted) unit MB (注:単位をMBに変更)
(parted) mkpart primary 525 2210543 (注:1番目のパーティションの終端が524、525MBから数えて約2TB分を確保)
(parted) set 2 lvm on (注:2番目のパーティションにLVMフラグを立てる)

これで、パーティションサイズの変更は終了です。
次に新規パーティションを作成します。
(parted) mkpart primary 2210544 3000450 (注:2番目のパーティションの終端からディスクの終端まで確保)
(parted) set 3 lvm on

設定変更の確認をして、partedを抜けます。
(parted) print
...(結果)
(parted) quit

最後に物理ボリュームと論理ボリュームの作成をして終了です。
# pvcreate /dev/sdb2
# pvcreate /dev/sdb3
# vgcreate -s 16m vg_new /dev/sdb3

vg_newの大きさは512GB以上1TB未満なので、物理エクステントとして16MBを指定(-s 16m)しています。
既存の論理ボリュームグループvg_xxは残っていると思いますが、無ければ新たに作成して下さい。
新しく作成する場合は、論理ボリュームグループの名前と/etc/fstab記載の名前が整合するように
気をつけてください。
上に記載のブロックデバイス名/dev/sdbにも注意して下さい。USBメモリから起動しているので、
デバイス名が変わっている可能性が大です。必要であればhdparmなどのコマンドでブロックデバイス名と
ハードウェアとの対応をあらかじめ調べておくとよいでしょう。

参考