====== Basis Tools ====== [[https://www.dlford.io/linux-mdraid-disk-replacement-procedure/|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) ====== Raid Pflege bei Hetzner ====== Welche Platte im 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 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 : 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|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: 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