LVM on md 容量拡張作業ログ
pikatenor@Juno3C:~⟫ df -h /dev/mapper/Hayate-lvol0 Filesystem Size Used Avail Use% Mounted on /dev/mapper/Hayate-lvol0 5.5T 5.4T 118G 98% /media/Hayate
はい、というわけでおうちサーバーで NAS として活躍しているディスクアレイの容量が枯渇しつつあったので拡張しました。
こいつは5年ほど前に大学生活初のバイト代を片手に組んだもので、1TBずつに切ったパーティションごとに mdadm で RAID5 を組み、そいつらを LVM でまとめて xfs を乗せるという構図になっています。名前は Hayate
。 はーちゃんだ*1。
この構成は当時こちらの記事を参考にさせていただきました。 ruzia.hateblo.jp
当初は WD Blue 2TBx4 = 6TB の構成でしたが、幾度かのディスク交換を経て現在3つは WD Red 3TBディスクに交換済みです(最後の1つもさっさと交換しろ)。すなわち、1TBずつ3つの未使用領域があります。今回はここに新たに RAID5 をつくり、既存 LVM LV に追加します。
パーティショニング
作業前は以下。
pikatenor@Juno3C:~⟫ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sda2 8:2 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdb2 8:18 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate sdc 8:32 0 2.7T 0 disk ├─sdc1 8:33 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdc2 8:34 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate sdd 8:48 0 2.7T 0 disk ├─sdd1 8:49 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdd2 8:50 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate
このうち /dev/sd[bcd]
の3つが交換済み3TBディスクです。
パーティション追加。
pikatenor@Juno3C:~⟫ sudo parted /dev/sdc /dev/sdd を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) print モデル: WDC WD30 EFRX-68EUZN0 (scsi) ディスク /dev/sdd: 3001GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 1000GB 1000GB md0 2 1000GB 2000GB 1000GB md1 (parted) unit s (parted) print モデル: WDC WD30 EFRX-68EUZN0 (scsi) ディスク /dev/sdd: 5860533168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 2048s 1953128447s 1953126400s md0 2 1953128448s 3906254847s 1953126400s md1 (parted) mkpart パーティションの名前? []? md2 ファイルシステムの種類? [ext2]? 開始? 3906254848 終了? 5859381247 (parted) print モデル: WDC WD30 EFRX-68EUZN0 (scsi) ディスク /dev/sdd: 5860533168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 2048s 1953128447s 1953126400s md0 2 1953128448s 3906254847s 1953126400s md1 3 3906254848s 5859381247s 1953126400s ext2 md2 (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
残りも同様にやって。
mdadm
pikatenor@Juno3C:~⟫ sudo mdadm --create --assume-clean /dev/md2 --level=5 --metadata=1.2 --raid-devices=3 /dev/sdb3 /dev/sdc3 /dev/sdd3 mdadm: array /dev/md2 started.
作業後。
pikatenor@Juno3C:~⟫ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sda2 8:2 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate ├─sdb2 8:18 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdb3 8:19 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 sdc 8:32 0 2.7T 0 disk ├─sdc1 8:33 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate ├─sdc2 8:34 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdc3 8:35 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 sdd 8:48 0 2.7T 0 disk ├─sdd1 8:49 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate ├─sdd2 8:50 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 5.5T 0 lvm /media/Hayate └─sdd3 8:51 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 pikatenor@Juno3C:~⟫ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active raid5 sdd3[2] sdc3[1] sdb3[0] 1952864256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] bitmap: 0/8 pages [0KB], 65536KB chunk md1 : active raid5 sdd2[4] sdc2[5] sdb2[6] sda2[0] 2929296384 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] bitmap: 0/8 pages [0KB], 65536KB chunk md0 : active raid5 sdc1[5] sda1[0] sdb1[6] sdd1[4] 2929296384 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] bitmap: 0/8 pages [0KB], 65536KB chunk unused devices: <none>
無事に2TBのディスクが見えている
LVM
作業前。
pikatenor@Juno3C:~⟫ sudo pvdisplay --- Physical volume --- PV Name /dev/md0 VG Name Hayate PV Size 2.73 TiB / not usable 5.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 715159 Free PE 0 Allocated PE 715159 PV UUID Z57254-XJ9c-2auv-KXdz-nKjd-F0d5-h38rWJ --- Physical volume --- PV Name /dev/md1 VG Name Hayate PV Size 2.73 TiB / not usable 5.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 715159 Free PE 0 Allocated PE 715159 PV UUID GSe9lz-WBde-oEi1-4Zzo-GOBO-IBa2-L0LIxZ pikatenor@Juno3C:~⟫ sudo vgdisplay --- Volume group --- VG Name Hayate 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 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 5.46 TiB PE Size 4.00 MiB Total PE 1430318 Alloc PE / Size 1430318 / 5.46 TiB Free PE / Size 0 / 0 VG UUID OWPo9U-ILf1-cQLv-PUOA-peo6-KODX-LyMi30 pikatenor@Juno3C:~⟫ sudo lvdisplay --- Logical volume --- LV Path /dev/Hayate/lvol0 LV Name lvol0 VG Name Hayate LV UUID 4pXE1Y-33Cn-jRu0-fAgq-R2Sc-hRu5-Rg5wW5 LV Write Access read/write LV Creation host, time Juno3C, 2016-01-02 07:53:16 +0900 LV Status available # open 1 LV Size 5.46 TiB Current LE 1430318 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 6144 Block device 252:0
PV 作って既存 VG と LV に突っ込んでドーン
pikatenor@Juno3C:~⟫ sudo pvcreate /dev/md2 Physical volume "/dev/md2" successfully created pikatenor@Juno3C:~⟫ sudo vgextend Hayate /dev/md2 Volume group "Hayate" successfully extended pikatenor@Juno3C:~⟫ sudo lvextend -l +100%FREE /dev/Hayate/lvol0 Size of logical volume Hayate/lvol0 changed from 5.46 TiB (1430318 extents) to 7.27 TiB (1907091 extents). Logical volume lvol0 successfully resized.
よさそう
pikatenor@Juno3C:~⟫ sudo pvdisplay --- Physical volume --- PV Name /dev/md0 VG Name Hayate PV Size 2.73 TiB / not usable 5.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 715159 Free PE 0 Allocated PE 715159 PV UUID Z57254-XJ9c-2auv-KXdz-nKjd-F0d5-h38rWJ --- Physical volume --- PV Name /dev/md1 VG Name Hayate PV Size 2.73 TiB / not usable 5.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 715159 Free PE 0 Allocated PE 715159 PV UUID GSe9lz-WBde-oEi1-4Zzo-GOBO-IBa2-L0LIxZ --- Physical volume --- PV Name /dev/md2 VG Name Hayate PV Size 1.82 TiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 476773 Free PE 0 Allocated PE 476773 PV UUID LgwqGc-5AB6-iZMG-Zxdz-hWTG-wqeE-bNVF9P pikatenor@Juno3C:~⟫ sudo vgdisplay --- Volume group --- VG Name Hayate System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 7.27 TiB PE Size 4.00 MiB Total PE 1907091 Alloc PE / Size 1907091 / 7.27 TiB Free PE / Size 0 / 0 VG UUID OWPo9U-ILf1-cQLv-PUOA-peo6-KODX-LyMi30 pikatenor@Juno3C:~⟫ sudo lvdisplay --- Logical volume --- LV Path /dev/Hayate/lvol0 LV Name lvol0 VG Name Hayate LV UUID 4pXE1Y-33Cn-jRu0-fAgq-R2Sc-hRu5-Rg5wW5 LV Write Access read/write LV Creation host, time Juno3C, 2016-01-02 07:53:16 +0900 LV Status available # open 1 LV Size 7.27 TiB Current LE 1907091 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 6144 Block device 252:0
xfs grow
最後は xfs の拡張。オンラインリサイズが効きます。
pikatenor@Juno3C:~⟫ sudo xfs_growfs /media/Hayate meta-data=/dev/mapper/Hayate-lvol0 isize=256 agcount=32, agsize=45770240 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=1464645632, imaxpct=5 = sunit=128 swidth=384 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=521728, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1464645632 to 1952861184
pikatenor@Juno3C:~⟫ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate └─sda2 8:2 0 931.3G 0 part └─md1 9:1 0 2.7T 0 raid5 └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate ├─sdb2 8:18 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate └─sdb3 8:19 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate sdc 8:32 0 2.7T 0 disk ├─sdc1 8:33 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate ├─sdc2 8:34 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate └─sdc3 8:35 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate sdd 8:48 0 2.7T 0 disk ├─sdd1 8:49 0 931.3G 0 part │ └─md0 9:0 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate ├─sdd2 8:50 0 931.3G 0 part │ └─md1 9:1 0 2.7T 0 raid5 │ └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate └─sdd3 8:51 0 931.3G 0 part └─md2 9:2 0 1.8T 0 raid5 └─Hayate-lvol0 252:0 0 7.3T 0 lvm /media/Hayate pikatenor@Juno3C:~⟫ df -h /dev/mapper/Hayate-lvol0 Filesystem Size Used Avail Use% Mounted on /dev/mapper/Hayate-lvol0 7.3T 5.4T 2.0T 74% /media/Hayate
ワシの勝ち!よかったですね
追記: タイトルが md on LVM になっててウケた(逆だろ)直した
*1:久川颯は無関係 | 先代が Nagisa だったのでナギ→ハヤテという連想 | キモい構成だったので速くなればいいなーという願いをこめた