トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

202010 Linux RAID 修復

  • md-RAID 修復
  • 5台ミラーを4台ミラーに変更
  • 1台追加予定

md から故障ディスクを除去

  • ルートファイルシステム /dev/md0
[root@c2q nonaka]# df /
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/md0        20512508 10878964   9423864  54% /
  • スワップ /dev/md1
[root@c2q nonaka]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/md1                                partition       523964  434904  -1
  • 故障ディスク
[root@c2q nonaka]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[4] sdc1[9] sdd1[11] sda1[12]
      20971392 blocks super 1.0 [5/4] [_UUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdg2[8] sdc2[10] sdd2[11] sda2[13]
      523968 blocks super 1.1 [5/4] [U_UUU]

unused devices: <none>
[root@c2q nonaka]# mdadm --grow /dev/md1 -n4
raid_disks for /dev/md1 set to 4
[root@c2q nonaka]# mdadm --grow /dev/md0 -n4
raid_disks for /dev/md0 set to 4
[root@c2q nonaka]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[4] sdc1[9] sdd1[11] sda1[12]
      20971392 blocks super 1.0 [4/4] [UUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdg2[8] sdc2[10] sdd2[11] sda2[13]
      523968 blocks super 1.1 [4/4] [UUUU]

unused devices: <none>

2台 追加

[root@c2q nonaka]# ( hdparm -I /dev/sdi ; hdparm -I /dev/sdk ) | grep -e /dev/ -e Model -e GB
/dev/sdi:
       Model Number:       TOSHIBA DT01ACA200
       device size with M = 1000*1000:     2000398 MBytes (2000 GB)
/dev/sdk:
       Model Number:       ST6000DM003-2CY186
       device size with M = 1000*1000:     6001175 MBytes (6001 GB)
  • 2T と 6T を追加
  • マザーボードが旧タイプのため 2T からしか起動できない。
  • 2T をRAID1に組み込む
  • 6T は全領域をデータ用に利用

2Tを追加

  • 他の2Tディスクからパーティションテーブルをコピー
sfdisk -d /dev/sda | sfdisk /dev/sdi
  • 警告発生
[root@c2q nonaka]# sfdisk -d /dev/sda | sfdisk /dev/sdi
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdi: 243201 cylinders, 255 heads, 63 sectors/track
 /dev/sdi: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdi1   *      2048  41945087   41943040  fd  Linux raid autodetect
/dev/sdi2      41945088  42993663    1048576  fd  Linux raid autodetect
/dev/sdi3      42993664 3907029167 3864035504  8e  Linux LVM
/dev/sdi4             0         -          0   0  Empty
Warning: partition 1 does not end at a cylinder boundary

sfdisk: I don't like these partitions - nothing changed.
(If you really want this, use the --force option.)

The requirement to align to cylinder boundaries has been gone for a long time now.

シリンダ境界に合わせる制限は過去の遺物です。

  • 警告を無視して強制実行
[root@c2q nonaka]# sfdisk -d /dev/sda | sfdisk --force /dev/sdi
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdi: 243201 cylinders, 255 heads, 63 sectors/track
 /dev/sdi: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdi1   *      2048  41945087   41943040  fd  Linux raid autodetect
/dev/sdi2      41945088  42993663    1048576  fd  Linux raid autodetect
/dev/sdi3      42993664 3907029167 3864035504  8e  Linux LVM
/dev/sdi4             0         -          0   0  Empty
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
  • ルートファイルシステムのパーティション md0 に /dev/sdi0 を追加
  • スワップのパーティション md1 に /dev/sdi1 を追加
  • 作業前
[root@c2q nonaka]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[4] sdc1[9] sdd1[11] sda1[12]
      20971392 blocks super 1.0 [4/4] [UUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdg2[8] sdc2[10] sdd2[11] sda2[13]
      523968 blocks super 1.1 [4/4] [UUUU]

unused devices: <none>
  • md0 作業
mdadm --grow /dev/md0 --raid-devices=5 --add=/dev/sdi0
[root@c2q nonaka]# mdadm --grow /dev/md0 --raid-devices=5 --add /dev/sdi1
mdadm: added /dev/sdi1
raid_disks for /dev/md0 set to 5
[root@c2q nonaka]# mdadm --grow /dev/md1 --raid-devices=5 --add /dev/sdi2
mdadm: added /dev/sdi2
raid_disks for /dev/md1 set to 5
  • 作業後ミラー中
[root@c2q nonaka]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdi1[5] sdg1[4] sdc1[9] sdd1[11] sda1[12]
      20971392 blocks super 1.0 [5/4] [UUUU_]
      [==>..................]  recovery = 10.9% (2291200/20971392) finish=5.4min speed=57329K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdi2[4] sdg2[8] sdc2[10] sdd2[11] sda2[13]
      523968 blocks super 1.1 [5/4] [UUUU_]
        resync=DELAYED
  • 作業後ミラー完了
[root@c2q nonaka]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdi1[5] sdg1[4] sdc1[9] sdd1[11] sda1[12]
      20971392 blocks super 1.0 [5/5] [UUUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdi2[4] sdg2[8] sdc2[10] sdd2[11] sda2[13]
      523968 blocks super 1.1 [5/5] [UUUUU]

6Tを追加

  • 6T は丸ごとデータ
  • 参考
[root@c2q nonaka]# parted /dev/sdb print
Model: ATA TOSHIBA MD04ACA4 (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4001GB  4001GB               primary  lvm
  • 実行
[root@c2q nonaka]# parted /dev/sdk mklabel gpt
Information: You may need to update /etc/fstab.
[root@c2q nonaka]# parted /dev/sdk mkpart primary 1 100%
Information: You may need to update /etc/fstab.
[root@c2q nonaka]# parted /dev/sdk set 1 lvm on
Information: You may need to update /etc/fstab.
  • 確認
[root@c2q nonaka]# parted /dev/sdk print
Model: ATA ST6000DM003-2CY1 (scsi)
Disk /dev/sdk: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB               primary  lvm
  • LVM に 6T を追加
[root@c2q nonaka]# pvcreate /dev/sdk1
  Physical volume "/dev/sdk1" successfully created
[root@c2q nonaka]# vgs
  VG      #PV #LV #SN Attr   VSize  VFree
  vg_data   7   1   0 wz--n- 13.78t 3.27t
[root@c2q nonaka]# vgextend vg_data /dev/sdk1
  Volume group "vg_data" successfully extended
[root@c2q nonaka]# vgs
  VG      #PV #LV #SN Attr   VSize  VFree
  vg_data   8   1   0 wz--n- 19.24t 8.73t