Un nouveau monde parfumé

香り立つ備忘録

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 だったのでナギ→ハヤテという連想 | キモい構成だったので速くなればいいなーという願いをこめた