====== LVM(Logical Volume Manager) - 論理ボリューム管理 ====== ===== GNU Parted を利用して 2TB 超えのパーティションを作成 ===== - デバイスを引数に指定して GNU Parted を起動する。 # parted /dev/sdb GNU Parted 1.8.8 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 - 2TB を超えるパーティションを作成するには、GPT(GUID Partition Table) ディスクラベルを作成する。\\ msdos(MBR形式のパーティションテーブル) ディスクラベルでは 2TB が管理の限界なので注意。 (parted) mklabel 警告: いま存在している /dev/sdb のディスクラベルは破壊され、 このディスクの全データが失われます。続行しますか? はい(Y)/Yes/いいえ(N)/No? y 新しいディスクラベル? [msdos]? gpt (parted) print モデル: HPT DISK_0_1 (scsi) ディスク /dev/sdb: 2872GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ - ディスクの最大容量でパーティションを作成する。 (parted) mkpart パーティションの名前? []? ファイルシステムの種類? [ext2]? 開始? 0 終了? 2872G (parted) print モデル: HPT DISK_0_1 (scsi) ディスク /dev/sdb: 2872GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 17.4kB 2872GB 2872GB msftres (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 ===== LVM の PV、VG、LV について =====  LVM では、PV(Physical Volume - 物理ボリューム)を作成し、PV を1つ以上使って VG(Volume Group - ボリュームグループ)を作成する。\\  そして、VG(ボリュームグループ) の中に LV(Logical Volume - 論理ボリューム) をマッピングして作成する。\\  LV(論理ボリューム) には、ext4 などのファイルシステムを作成して利用する。\\ \\  LV(論理ボリューム) は、利用中であっても VG(ボリュームグループ) の空き領域を割り当てて拡張することができる。\\  VG(ボリュームグループ) の空き容量がなくなってきた場合は、新しい PV(物理ボリューム) を VG(ボリュームグループ) に追加することで、簡単に容量を増やすことがきる。\\ ===== PV(物理ボリューム) の作成 ===== - pvcreate コマンドを使用して PV(物理ボリューム) を初期化する。 # pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created - pvdisplay コマンドにて作成状況を確認する。 # pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name vg_monster PV Size 119.01 GB / not usable 4.16 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 30465 Free PE 0 Allocated PE 30465 PV UUID sVhxN7-Bf8u-35yp-BmZ6-CjSd-9fOn-TNAvCv "/dev/sdb1" is a new physical volume of "2.61 TB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 2.61 TB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID OdPiUV-biUo-gha3-cAOA-QiB1-aFyc-waev4A ===== VG(ボリュームグループ) の作成 ===== # vgcreate vg_monster1 /dev/sdb1 Volume group "vg_monster1" successfully created # vgdisplay --- Volume group --- VG Name vg_monster1 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 2.61 TB PE Size 4.00 MB Total PE 684826 Alloc PE / Size 0 / 0 Free PE / Size 684826 / 2.61 TB VG UUID 4YGE0j-AbaM-BKmx-9OVj-fnG8-C5jV-opCUCZ ===== VG(ボリュームグループ) の拡張 ===== VG(ボリュームグループ) に PV(物理ボリューム) を追加する。 # vgextend vg_monster /dev/sdb1 Volume group "vg_monster" successfully extended # vgdisplay --- Volume group --- VG Name vg_monster System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 2.73 TB PE Size 4.00 MB Total PE 715291 Alloc PE / Size 30465 / 119.00 GB Free PE / Size 684826 / 2.61 TB VG UUID y9vUDl-a5tm-1919-zViH-aaMU-hmNJ-38pcfy ===== LV(論理ボリューム) の拡張 ===== # lvdisplay --- Logical volume --- LV Name /dev/vg_monster/lv_root VG Name vg_monster LV UUID oclD9d-LSdM-tWs8-gYmh-O34O-1RJK-L3YunN LV Write Access read/write LV Status available # open 1 LV Size 115.00 GB Current LE 29441 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/vg_monster/lv_swap VG Name vg_monster LV UUID p3eWnk-8ifO-c8tW-uJ7Q-lO4I-0Gk7-2d1APF LV Write Access read/write LV Status available # open 1 LV Size 4.00 GB Current LE 1024 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 # lvextend -L +100G /dev/vg_monster/lv_root Extending logical volume lv_root to 215.00 GB Logical volume lv_root successfully resized LV(論理ボリューム)に合わせてファイルシステムをリサイズする。 # resize2fs /dev/vg_monster/lv_root resize2fs 1.41.4 (27-Jan-2009) Filesystem at /dev/vg_monster/lv_root is mounted on /; on-line resizing required old desc_blocks = 8, new_desc_blocks = 175 Performing an on-line resize of /dev/vg_monster/lv_root to 731409408 (4k) blocks. The filesystem on /dev/vg_monster/lv_root is now 731409408 blocks long. リサイズ中の root デバイス\\ {{:linux:resize2fs_sysmon_1.png?700|リサイズ中のrootデバイス1}}\\ リサイズ後の root デバイス\\ {{:linux:resize2fs_sysmon_2.png?700|リサイズ後のrootデバイス2}}\\ ===== LV(論理ボリューム) の縮小 ===== # umount /home # fsck -f /dev/mapper/vg_monster-lv_home fsck from util-linux-ng 2.17.2 e2fsck 1.41.12 (17-May-2010) 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/mapper/vg_monster-lv_home: 704340/241876992 files (0.3% non-contiguous), 255445351/967505920 blocks # resize2fs /dev/mapper/vg_monster-lv_home 3710018M resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/vg_monster-lv_home to 949764608 (4k) blocks. The filesystem on /dev/mapper/vg_monster-lv_home is now 949764608 blocks long. # lvreduce -L3710018M /dev/mapper/vg_monster-lv_home Rounding up size to full physical extent 3.54 TiB WARNING: Reducing active logical volume to 3.54 TiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv_home? [y/n]: y Reducing logical volume lv_home to 3.54 TiB Logical volume lv_home successfully resized ===== 他で使用していたディスクのLVMを認識させる ===== $ sudo lvscan inactive '/dev/vg_hoge/lv_swap' [4.00 GiB] inherit inactive '/dev/vg_hoge/lv_root' [144.53 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_swap' [3.94 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_home' [201.56 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_root' [50.00 GiB] inherit $ sudo vgchange -ay vg_hoge 2 logical volume(s) in volume group "vg_hoge" now active $ sudo vgchange -an vg_hoge 0 logical volume(s) in volume group "vg_hoge" now active $ sudo lvscan inactive '/dev/vg_hoge/lv_swap' [2.00 GiB] inherit inactive '/dev/vg_hoge/lv_root' [124.00 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_swap' [3.94 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_home' [201.56 GiB] inherit ACTIVE '/dev/vg_thecircle-fc/lv_root' [50.00 GiB] inherit