Inhaltsverzeichnis

Array umbenennen

Basis Tools

https://www.dlford.io/linux-mdraid-disk-replacement-procedure/

blkid zeigt Info über Block Devices, ua. UUID und PTUIID

''blkid''  ''-po''  ''udev''  //device_name//

smartctl -a devcice_name liest die Smart Daten der Platte aus.

hdparm -I /dev/xxx

zeigt die Seriennummer der Hardware (wichtig zur Indentifikation bei Fehlern in smartctl)

mdadm

Löschen der Metatdaten für das RAID Array <prefixed command language-bash> mdadm –zero-superblock /dev/physische-partition </prefixed>

—examine analysiert einzelne physische Partitonen in einem Array. –detail zeigt dagegen ein gesamtes Array an.

mdadm --examine --brief --scan  --config=partitions

Wenn man ein Array ganz neu aufbauen will, müssen die Referenzen darauf aus der fstab entfernt werden. Sicherheitshalber schreibt man auch das initramfs neu:

 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>update-initramfs -u</font>

RAiD Array manuell aufbauen

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device.  If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use --metadata=0.90
mdadm: size set to 5860389440K
mdadm: automatically enabling write-intent bitmap on large array

Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Check: Resyn läuft

cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[1] sdb1[0]
     5860389440 blocks super 1.2 [2/2] [UU]
     [>....................]  resync =  0.4% (28303360/5860389440) finish=490.6min speed=198121K/sec
     bitmap: 44/44 pages [176KB], 65536KB chunk

Welche Platte in einem Array hat eine Macke?

# cat /proc/mdstat

An [U_] bzw. [_U] erkennt man, dass eine Festplatte nicht synchron ist.

cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1](F) 1822442815 blocks super 1.2 [2/1] [U_] md2 : active raid1 sda3[0] sdb3[1](F) 1073740664 blocks super 1.2 [2/1] [U_] md1 : active raid1 sda2[0] sdb2[1](F) 524276 blocks super 1.2 [2/1] [U_]

Mit mdadm /dev/md0 -r /dev/sdb1 lässt sich einen Platte gezielt aus dem Array entfernen. Das geht aber nur, wenn das Ding icht gerade aktiv synct. Dann kann man den Array auch so auflösen:

sudo mdadm –manage /dev/md2 –fail /dev/sdc1 sudo mdadm –manage /dev/md2 –remove /dev/sdc1

Ab jetzt läuft das RAID Array nu noch mit einer Platte

 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>root@nas:~# mdadm --detail /dev/md0</font>         /dev/md0:
          Version : 1.2
    Creation Time : Thu Dec  1 18:32:25 2016
       Raid Level : raid1
       Array Size : 5860021112 (5588.55 GiB 6000.66 GB)
    Used Dev Size : 5860021112 (5588.55 GiB 6000.66 GB)
     Raid Devices : 2
    Total Devices : 1
      Persistence : Superblock is persistent

      Update Time : Thu Mar 14 14:56:01 2024
            State : clean, degraded
   Active Devices : 1
  Working Devices : 1
   Failed Devices : 0
    Spare Devices : 0

Consistency Policy : resync

             Name : thommienas:0
             UUID : 6a3e6f11:c60382cd:d674583d:4a397bce
           Events : 11997

   Number   Major   Minor   RaidDevice State
      -       0        0        0      removed
      2       8       33        1      active sync   /dev/sdc1

Hetzner braucht die Information, welche Platte defekt ist. Dazu benutzt man

mdadm –detail /dev/md0

Sobald die neue Platte ins System eingebaut ist, muss die Partitionstabelle von der alten auf die neue Platte kopiert werden: hier NEU (sdb) « ALT (sda).

sgdisk -R /dev/sdb /dev/sda

Dann bekommt die Platte eine neue UUID:

sgdisk -G /dev/sdb

Danach werden die Arrays wieder neu aufgebaut

mdadm /dev/md0 -a /dev/sdb1

mdadm /dev/md1 -a /dev/sdb2

mdadm /dev/md2 -a /dev/sdb3

mdadm /dev/md3 -a /dev/sdb4

Die Partitionen werden jetzt automatisch wieder synchronisiert. Den Fortschritt/Status sieht man mit

cat /proc/mdstat

Der Bootloader sollte neu installiert werden, da sich ja die Device Map geändert hat: Im gebooteten System reicht ein

grub-mkdevicemap

Ansonsten gilt

grub-install /dev/sdb

Referenzen: http://wiki.hetzner.de/index.php/Festplattenaustausch_im_Software-RAID

Plattentausch in einem RAID1 Array in Open Media Vault (NAS)

smartctl liefert Hinweise, dass die Platte einen Hieb hat:

This message was generated by the smartd daemon running on:

   host name:  nas
   DNS domain: netzwissen.loc

The following warning/error was logged by the smartd daemon:

Device: /dev/disk/by-id/ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3 [SAT], **1275 Currently unreadable (pending) sectors**

Device info:
WDC WD60EFRX-68L0BN1, S/N:WD-WXB1HB4YS7K3, WWN:5-0014ee-2b83025c8, FW:82.00A82, 6.00 TB

Die Anzahl der "pending sectors" nimmt nach und nach zu. Der Fehler wird zuerst in S.M.A.R.T. sichtbar, bevor die Platte irgendwann hart ausfällt. Challenge: die richtige Hardware austauschen.

ssh shell auf OMV öffnen, sudo. lsblk liefert die Partitionen und die Zuordnung zur Hardware

root@nas:/home# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   5,5T  0 disk
├─sda1        8:1    0   487M  0 part
└─sda2        8:2    0   5,5T  0 part
  └─md0       9:0    0   5,5T  0 raid1 /srv/dev-disk-by-id-md-name-thommienas-0
sdb           8:16   0 931,5G  0 disk
└─sdb1        8:17   0 931,5G  0 part  /srv/dev-disk-by-label-data
sdc           8:32   0   5,5T  0 disk
├─sdc1        8:33   0   487M  0 part
└─sdc2        8:34   0   5,5T  0 part
  └─md0       9:0    0   5,5T  0 raid1 /srv/dev-disk-by-id-md-name-thommienas-0
nvme0n1     259:0    0 232,9G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part  /boot/efi
├─nvme0n1p2 259:2    0 200,5G  0 part  /
└─nvme0n1p3 259:3    0  31,9G  0 part  [SWAP]

Die UUIDs der Partitionen zeigen, darin ist die aufgedruckte Seriennummer der Platte integriert:

root@nas:/home# ls -n /dev/disk/by-id/
insgesamt 0
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 ata-ST1000LM035-1RK172_WES237QV -> ../../sdb
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-ST1000LM035-1RK172_WES237QV-part1 -> ../../sdb1
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WX11D3678FVK -> ../../sdc
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WX11D3678FVK-part1 -> ../../sdc1
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WX11D3678FVK-part2 -> ../../sdc2
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 **ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3**
 -> ../../sda
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3-part1 -> ../../sda1
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3-part2 -> ../../sda2
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 md-name-thommienas:0 -> ../../md0
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 md-uuid-6a3e6f11:c60382cd:d674583d:4a397bce -> ../../md0
lrwxrwxrwx 1 0 0 13 Mär 11 12:16 nvme-eui.0026b768386e21d5 -> ../../nvme0n1
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-eui.0026b768386e21d5-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-eui.0026b768386e21d5-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-eui.0026b768386e21d5-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 0 0 13 Mär 11 12:16 nvme-KINGSTON_SA2000M8250G_50026B768386E21D -> ../../nvme0n1
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-KINGSTON_SA2000M8250G_50026B768386E21D-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-KINGSTON_SA2000M8250G_50026B768386E21D-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 0 0 15 Mär 11 12:16 nvme-KINGSTON_SA2000M8250G_50026B768386E21D-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 wwn-0x5000c5009d5f58c2 -> ../../sdb
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 wwn-0x5000c5009d5f58c2-part1 -> ../../sdb1
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 wwn-0x50014ee262d99ce4 -> ../../sdc
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 wwn-0x50014ee262d99ce4-part1 -> ../../sdc1
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 wwn-0x50014ee262d99ce4-part2 -> ../../sdc2
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 wwn-0x50014ee2b83025c8 -> ../../sda
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 wwn-0x50014ee2b83025c8-part1 -> ../../sda1
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 wwn-0x50014ee2b83025c8-part2 -> ../../sda2

Aus der Liste die betroffene Platte anhand der UUID/Seriennummer aus smartctl rausfiltern:

root@nas:/dev/disk/by-id# ls -n /dev/disk/by-id/ | grep WXB1HB4YS7K3
lrwxrwxrwx 1 0 0  9 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3 -> ../../sda
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3-part1 -> ../../sda1
lrwxrwxrwx 1 0 0 10 Mär 11 12:16 ata-WDC_WD60EFRX-68L0BN1_WD-WXB1HB4YS7K3-part2 -> ../../sda2

Mit mdadm –detail die Details zum aktuellen RAID Array zeigen

root@nas:/dev/disk/by-id# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec  1 18:32:25 2016
        Raid Level : raid1
        Array Size : 5860021112 (5588.55 GiB 6000.66 GB)
     Used Dev Size : 5860021112 (5588.55 GiB 6000.66 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sun Mar 21 13:34:53 2021
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : thommienas:0
              UUID : 6a3e6f11:c60382cd:d674583d:4a397bce
            Events : 2061

    Number   Major   Minor   RaidDevice State
       0       8       34        0      active sync   /dev/sdc2
       1       8        2        1      active sync   /dev/sda2

Mit mdadm –manage wird die defekte Platte als fehlerhaft markiert und danach aus dem Array entfernt:

root@nas:~#  mdadm --manage /dev/md0 --fail /dev/sda2
mdadm: set /dev/sda2 faulty in /dev/md0

mdadm --manage /dev/md0 --remove /dev/sda2

Check:

root@nas:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[0] sda2[1](F)
      5860021112 blocks super 1.2 [2/1] **[U_]**

mit df prüfen, ob weitere Partitionen auf dieser Platte gemountet sind und sie mit umount entfernen, falls nötig:

root@nas:~# df
Dateisystem     1K-Blöcke    Benutzt  Verfügbar Verw% Eingehängt auf
udev             16347724          0   16347724    0% /dev
tmpfs             3274520      75320    3199200    3% /run
/dev/nvme0n1p2  205909892    3102112  192278400    2% /
tmpfs            16372580          0   16372580    0% /dev/shm
tmpfs                5120          0       5120    0% /run/lock
tmpfs            16372580          0   16372580    0% /sys/fs/cgroup
tmpfs            16372580          0   16372580    0% /tmp
/dev/nvme0n1p1     523248        148     523100    1% /boot/efi
/dev/md0       5767937448 1673488612 4094432452   30% /srv/dev-disk-by-id-md-name-thommienas-0
/dev/sdb1       960380628   54

Mit fdisk /dev/sda die Partionierung der alten Platte checken:

root@nas:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sda: 5,5 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: WDC WD60EFRX-68L
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 20058C4A-758A-4D16-9F6C-22D4C3B5DCF8

Device      Start         End     Sectors  Size Type
/dev/sda1    2048      999423      997376  487M Linux filesystem
/dev/sda2  999424 11721043967 11720044544  5,5T Linux filesystem

Jetzt kann die alte Platte ausgebaut werden. Auf der neuen Platte mit gparted oder mkfs die Partitionierung analog anlegen (erst die Paritionstabelle gpt, dann die Partition selbst, in der Regel ext4). Nach dem Umbau quittiert smartctl das Array als degraded:

This is an automatically generated mail message from mdadm
running on nas.netzwissen.loc

A DegradedArray event had been detected on md device /dev/md/0.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid1 sdb2[0]
      5860021112 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Die neue Platte wird wieder ins Array integriert:

root@nas:~# mdadm --manage /dev/md0 --add /dev/sdc1
mdadm: added /dev/sdc1

Danach beginnt das sw raid, die Dateien zwischen beiden Platten zu synchronisieren:

root@nas:~# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec  1 18:32:25 2016
        Raid Level : raid1
        Array Size : 5860021112 (5588.55 GiB 6000.66 GB)
     Used Dev Size : 5860021112 (5588.55 GiB 6000.66 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Mon Mar 22 19:47:34 2021
             State : clean, degraded, recovering
    Active Devices : 1
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

    Rebuild Status : 0% complete

              Name : thommienas:0
              UUID : 6a3e6f11:c60382cd:d674583d:4a397bce
            Events : 2082

    Number   Major   Minor   RaidDevice State
       0       8       18        0      active sync   /dev/sdb2
**       2       8       33        1      spare rebuilding   /dev/sdc1**

Variante: wenn das Array crasht

SDB new

Disk model: WDC WD6003FFBX-6
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: DF00632A-03F7-46B4-A2D4-15C5DCE3930F

SDC OLD

Disk model: WDC WD60EFPX-68C
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 7BC40B3C-3226-40CE-84DB-844942ED7944

Device     Start         End     Sectors  Size Type
/dev/sdc1   2048 11721045134 11721043087  5,5T Linux filesystem

RAID member einzeln analysieren

root@nas:~# mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x2
     Array UUID : 6a3e6f11:c60382cd:d674583d:4a397bce
           Name : thommienas:0
  Creation Time : Thu Dec  1 18:32:25 2016
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 11721041039 (5589.03 GiB 6001.17 GB)
     Array Size : 5860021112 (5588.55 GiB 6000.66 GB)
  Used Dev Size : 11720042224 (5588.55 GiB 6000.66 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
Recovery Offset : 9190785664 sectors
   Unused Space : before=1768 sectors, after=998815 sectors
          State : clean
    Device UUID : 71a7b2c3:567d5d68:c4a6ec9d:0d95819b

    Update Time : Mon Mar 25 00:31:32 2024
  Bad Block Log : 512 entries available at offset 264 sectors
       Checksum : 5cca03dd - correct
         Events : 12179

   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)

Dann ein loop device mit "Data Offset : 2048 sectors" erzeugen, am Besten read only:

losetup --find --show --offset=$((2048*512)) /dev/sdc1

root@nas:~# losetup
NAME       SIZELIMIT  OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0         0 1048576         0  0 /dev/sdc1   0     512

Danach read only mounten

mount -o ro /dev/loop0 /mnt/sdc1

root@nas:/mnt/sdc1# ls
aquota.group  aquota.user  backup  buch  downloads  lost+found  music  photo  public2  thommie  video

Jetzt brauchen wir ein neues RAID array mit nur einem member auf der neuen Platte
Die Paritition wird mit fdisk /dev/sdb angelegt. Als partition type nimmt man 29 "Linux RAID".

Danach findet mdadm die Partition. Bei gpt ist der Parititon type "ee", nicht "fd":

root@nas:/mnt/sdc1# mdadm --examine /dev/sdb
/dev/sdb:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)

Danach wird manuell ein RAID Array mit einem member erzeugt:

sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing

root@nas:/mnt# sudo mdadm --create /dev/md1 --level=mirror --raid-devices=2 /dev/sdb1 missing
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array?

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

Danach sieht man das neue md1 array und das alte (kaputte) md0:

root@nas:/mnt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb1[0]
      5860389440 blocks super 1.2 [2/1] [U_]
      bitmap: 0/44 pages [0KB], 65536KB chunk

md0 : inactive sdc1[3](S)
      5860520519 blocks super 1.2

Jetzt brauchts noch ein filesystem:

mkfs.ext4 /dev/md1

mount /dev/md1 /mnt/md1/

Danach kann man die Daten vom alten array, das read-only läuft, ins neue umkopieren:

cp -R * /mnt/md1 & progress -mp $!

mit progress sieht man einen Fortschrittsbalken