Humanity

Edit the world by your favorite way

ファイルサーバの OS 再インストールをした

ゴールデンウィークの時に書いた記事*1を少し修正して公開。


  • ファイルサーバを2台所有していてその2号機の HDD が1基壊れた
  • ので転がっていたスペア*2の HDD を交換したらほんの少しサイズが違っていて RAID が組めなかった*3
  • それに加えてファイルシステムが XFS だったため、XFS はファイルシステムの縮小がコマンドレベルでサポートされていないという事を今更知ったので、復旧がめんどくさくなった
  • よって「構成 (After)」に書いた構成で作り直す

LVM on RAID の復旧をする際の参考リンク

調べたけど無駄に終わったため、せめて参考リンクだけでも載せておけば誰かの役に立つかもしれない。

構成 (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)

  1. sda1 が冗長化できてないので RAID 1冗長化した
  2. XFS はファイルシステムの縮小をサポートしていないので ext4 に変えた

のが以下の通り。

  • 筐体、メモリ、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 用) も作ろうとしたけどやっぱりインストーラーでやった(パーティションは作ったかも。忘れた…)。

  1. LVM のメタデータを削除
    • pvremove -ffy /dev/sd[abcd]*
  2. LVM を停止
    • vgchange -an
  3. mdadm (Software RAID) を停止
    • mdadm --stop /dev/md127
  4. mdadm (Software RAID) のメタデータを削除
    • mdadm --zero-superblock /dev/md127
    • mdadm --zero-superblock /dev/sd[abcd]*

参考リンク

*1:2016年5月5日

*2:スロットが4つしかなかった

*3:「mdadm: /dev/sdc1 not large enough to join array」と言われた…けど結局作り直したら全体のサイズは一緒だったので、LVM とか mdadm のメタデータのための領域分サイズが異なってたのかも?正直よくわかってない

*4:なぜこんな中途半端な状況になっているのかは忘れた

*5:/boot は LVM か RAID 領域外である必要があったようななかったような