- ファイルサーバを2台所有していてその2号機の HDD が1基壊れた
- ので転がっていたスペア*2の HDD を交換したらほんの少しサイズが違っていて RAID が組めなかった*3
- それに加えてファイルシステムが XFS だったため、XFS はファイルシステムの縮小がコマンドレベルでサポートされていないという事を今更知ったので、復旧がめんどくさくなった
- よって「構成 (After)」に書いた構成で作り直す
LVM on RAID の復旧をする際の参考リンク
調べたけど無駄に終わったため、せめて参考リンクだけでも載せておけば誰かの役に立つかもしれない。
- How To Resize LVM Software RAID1 Partitions (Shrink & Grow)
- 概ねこちらを参考にして作業しようとした
- LVM パーティション をrescue モードから操作する - うまいぼうぶろぐ
- 今回は rescue モードでやるので状況が似ているので一応記載
構成 (Before)
- 筐体: HP ProLiant MicroServer
- メモリ: 7882572kb *4
- HDD: 2TB x 4
- /dev/sda1: /boot(500MB) *5
- LVM on RAID 10 (sda2,sd[bcd]1): /(32GB), swap(7.8GB), ファイルサーバデータ用(/ と swap の余り)
構成 (After)
のが以下の通り。
- 筐体、メモリ、HDD: 変わらず
- RAID 1 (sd[ab]1): /boot(500MB)
- LVM on RAID 10 (sd[ab]2,sd[cd]1): /(32GB), swap(7.8GB), ファイルサーバデータ用(/ と swap の余り)
sda1 が冗長化できてないので、この際交換した /dev/sdc の先頭に /boot 用の領域を作って、 sda1 と sdb1 で RAID 1 するのも目標にした。
パーティションとファイルシステムの構成 (Before)
sdc は交換したばかりだからまっさら。
$ for i in /dev/sd[abcd]; do sudo parted $i unit s print; done Model: ATA WDC WD20EARX-00P (scsi) Disk /dev/sda: 3907029168s Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 1026047s 1024000s primary xfs boot 2 1026048s 3907028991s 3906002944s primary raid Model: ATA WDC WD20EARX-00P (scsi) Disk /dev/sdb: 3907029168s Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 3906007039s 3906004992s primary raid Model: ATA WDC WD20EZRZ-00Z (scsi) Disk /dev/sdc: 3907029168s Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags Model: ATA WDC WD20EARX-00P (scsi) Disk /dev/sdd: 3907029168s Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 3906007039s 3906004992s primary raid
$ lsblk
2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3
sda 8:0 0 1.8T 0 disk
4
├─sda1 8:1 0 500M 0 part /boot
5
└─sda2 8:2 0 1.8T 0 part
6
└─md127 9:127 0 3.7T 0 raid10
7
├─vgraid-root 253:0 0 31.3G 0 lvm /
8
├─vgraid-swap 253:1 0 7.8G 0 lvm [SWAP]
9
└─vgraid-storage 253:2 0 3.6T 0 lvm /storage
10
sdb 8:16 0 1.8T 0 disk
11
└─sdb1 8:17 0 1.8T 0 part
12
└─md127 9:127 0 3.7T 0 raid10
13
├─vgraid-root 253:0 0 31.3G 0 lvm /
14
├─vgraid-swap 253:1 0 7.8G 0 lvm [SWAP]
15
└─vgraid-storage 253:2 0 3.6T 0 lvm /storage
16
sdc 8:32 0 1.8T 0 disk
17
sdd 8:48 0 1.8T 0 disk
18
└─sdd1 8:49 0 1.8T 0 part
19
└─md127 9:127 0 3.7T 0 raid10
20
├─vgraid-root 253:0 0 31.3G 0 lvm /
21
├─vgraid-swap 253:1 0 7.8G 0 lvm [SWAP]
22
└─vgraid-storage 253:2 0 3.6T 0 lvm /storage
23
$ lsblk -f
24
NAME FSTYPE LABEL UUID MOUNTPOINT
25
sda
26
├─sda1 xfs 394c9391-a812-4fe9-9718-aad016d8731f /boot
27
└─sda2 linux_raid_member localhost:pv00 0fb4300e-2542-7a0b-7493-6499e5434dfc
28
└─md127 LVM2_member gbqPWQ-2Y3F-dEYq-GeAh-1E6e-60j6-KJET3D
29
├─vgraid-root xfs d2a198cd-952e-4ce6-ae4e-5ab569d99e91 /
30
├─vgraid-swap swap 9770dc58-394d-4ce5-bb75-39af6eccd593 [SWAP]
31
└─vgraid-storage xfs storage 4a33b788-4398-4046-a9d3-f8574d21d60c /storage
32
sdb
33
└─sdb1 linux_raid_member localhost:pv00 0fb4300e-2542-7a0b-7493-6499e5434dfc
34
└─md127 LVM2_member gbqPWQ-2Y3F-dEYq-GeAh-1E6e-60j6-KJET3D
35
├─vgraid-root xfs d2a198cd-952e-4ce6-ae4e-5ab569d99e91 /
36
├─vgraid-swap swap 9770dc58-394d-4ce5-bb75-39af6eccd593 [SWAP]
37
└─vgraid-storage xfs storage 4a33b788-4398-4046-a9d3-f8574d21d60c /storage
38
sdc
39
sdd
40
└─sdd1 linux_raid_member localhost:pv00 0fb4300e-2542-7a0b-7493-6499e5434dfc
41
└─md127 LVM2_member gbqPWQ-2Y3F-dEYq-GeAh-1E6e-60j6-KJET3D
42
├─vgraid-root xfs d2a198cd-952e-4ce6-ae4e-5ab569d99e91 /
43
├─vgraid-swap swap 9770dc58-394d-4ce5-bb75-39af6eccd593 [SWAP]
44
└─vgraid-storage xfs storage 4a33b788-4398-4046-a9d3-f8574d21d60c /storage
パーティションとファイルシステムの構成 (After)
$ for i in /dev/sd[abcd]; do sudo parted $i unit s print; done モデル: ATA WDC WD20EARX-00P (scsi) ディスク /dev/sda: 3907029168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 1026047s 1024000s primary ext2 boot, raid 2 1026048s 3907028991s 3906002944s primary raid モデル: ATA WDC WD20EARX-00P (scsi) ディスク /dev/sdb: 3907029168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 1026047s 1024000s primary ext2 boot, raid 2 1026048s 3907028991s 3906002944s primary raid モデル: ATA WDC WD20EZRZ-00Z (scsi) ディスク /dev/sdc: 3907029168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 1026047s 1024000s primary ext2 boot, raid 2 1026048s 3907028991s 3906002944s primary raid モデル: ATA WDC WD20EARX-00P (scsi) ディスク /dev/sdd: 3907029168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 1026047s 1024000s primary ext2 boot, raid 2 1026048s 3907028991s 3906002944s primary raid
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 500M 0 part
│ └─md0 9:0 0 499.7M 0 raid1 /boot
└─sda2 8:2 0 1.8T 0 part
└─md127 9:127 0 3.7T 0 raid10
├─centos-swap 253:0 0 7.8G 0 lvm [SWAP]
├─centos-root 253:1 0 31.3G 0 lvm /
└─centos-storage 253:2 0 3.6T 0 lvm /storage
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 500M 0 part
│ └─md0 9:0 0 499.7M 0 raid1 /boot
└─sdb2 8:18 0 1.8T 0 part
└─md127 9:127 0 3.7T 0 raid10
├─centos-swap 253:0 0 7.8G 0 lvm [SWAP]
├─centos-root 253:1 0 31.3G 0 lvm /
└─centos-storage 253:2 0 3.6T 0 lvm /storage
sdc 8:32 0 1.8T 0 disk
├─sdc1 8:33 0 500M 0 part
│ └─md0 9:0 0 499.7M 0 raid1 /boot
└─sdc2 8:34 0 1.8T 0 part
└─md127 9:127 0 3.7T 0 raid10
├─centos-swap 253:0 0 7.8G 0 lvm [SWAP]
├─centos-root 253:1 0 31.3G 0 lvm /
└─centos-storage 253:2 0 3.6T 0 lvm /storage
sdd 8:48 0 1.8T 0 disk
├─sdd1 8:49 0 500M 0 part
│ └─md0 9:0 0 499.7M 0 raid1 /boot
└─sdd2 8:50 0 1.8T 0 part
└─md127 9:127 0 3.7T 0 raid10
├─centos-swap 253:0 0 7.8G 0 lvm [SWAP]
├─centos-root 253:1 0 31.3G 0 lvm /
└─centos-storage 253:2 0 3.6T 0 lvm /storage
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 linux_raid_member localhost:0 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
│ └─md0 ext2 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /boot
└─sda2 linux_raid_member xxx:pv00 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
└─md127 LVM2_member xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
├─centos-swap swap xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx [SWAP]
├─centos-root ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /
└─centos-storage ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /storage
sdb
├─sdb1 linux_raid_member localhost:0 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
│ └─md0 ext2 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /boot
└─sdb2 linux_raid_member xxx:pv00 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
└─md127 LVM2_member xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
├─centos-swap swap xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx [SWAP]
├─centos-root ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /
└─centos-storage ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /storage
sdc
├─sdc1 linux_raid_member localhost:0 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
│ └─md0 ext2 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /boot
└─sdc2 linux_raid_member xxx:pv00 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
└─md127 LVM2_member xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
├─centos-swap swap xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx [SWAP]
├─centos-root ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /
└─centos-storage ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /storage
sdd
├─sdd1 linux_raid_member localhost:0 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
│ └─md0 ext2 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /boot
└─sdd2 linux_raid_member xxx:pv00 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx
└─md127 LVM2_member xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
├─centos-swap swap xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx [SWAP]
├─centos-root ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /
└─centos-storage ext4 xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx /storage
HDD のパーティションを作り直した際の作業メモ
CentOS 7 のインストーラーですべて上書きしようと思ったらできなかったので、CentOS 7 のインストールディスクで rescue mode に入り以下のコマンドを実行。 この作業の後そのままコマンドラインで LVM と RAID 10 (LVM 用) と RAID 1 (/boot 用) も作ろうとしたけどやっぱりインストーラーでやった(パーティションは作ったかも。忘れた…)。
- LVM のメタデータを削除
pvremove -ffy /dev/sd[abcd]*
- LVM を停止
vgchange -an
- mdadm (Software RAID) を停止
mdadm --stop /dev/md127
- mdadm (Software RAID) のメタデータを削除
mdadm --zero-superblock /dev/md127mdadm --zero-superblock /dev/sd[abcd]*