Chtělo by se mi napsat „už je to tu zase“ jenže koukám, že domácí server jsem si stavěl skoro před devíti lety, takže ty čtyři disky už mají na nějakou závadu morální právo… Začalo to jako obvykle prozaicky – přišel mi mail, že diskové pole je degradované a že bych s tím asi měl něco zkusit udělat:
This is an automatically generated mail message from mdadm running on server
A DegradedArray event had been detected on md device /dev/md1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1]
md1 : active raid1 sde1[1]
976630464 blocks super 1.2 [2/1] [_U]
bitmap: 3/8 pages [12KB], 65536KB chunk
(...)
Disky mají smart diagnostiku, takže první kontrolní kroky míří k ní. Základní výpis:
smartctl -a /dev/sdd
neukázal nic, vše vpořádku.
Takže jsem pustil dvouminutový selftest:
smartctl -t short /dev/sdd
A naásledně jeho výpis:
smartctl -l selftest /dev/sdd
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.119.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 58944 -
Krása, podle diagnostiky je disk v naprostém pořádku. Až na to, že nefunguje, no.
(Zkusil jsem i dlouhý test se stejným výsledkem.)
Když je v pořádku, tak ho zkusíme vrátit zpátky, ne? Nejdřív odebrat z pole:
mdadm /dev/md1 --remove /dev/sdd1
A pak znovu přidat:
mdadm /dev/md1 --add /dev/sdd1
Následovalo dlouhé čekání a hláška:
mdadm: Failed to write metadata to /dev/sdd1
Ještě jsem našel příkaz na prozkoumání disku
mdadm --examine /dev/sdd1
mdadm: No md superblock detected on /dev/sdd1.
Také jsem se chtěl podívat na jeho rozdělení - jenže po prodlevě to vzdal i fdisk!
fdisk /dev/sdd
fdisk: /dev/sdd nelze otevřít: Chyba vstupu/výstupu
Tak už jen pohled na messages
dmesg | tail -n 50
kde to byla celá hitparáda errorů:
[ 262.261306] sd 2:0:0:0: [sdd] tag#7 Sense Key : Medium Error [current] [descriptor]
[ 262.261310] sd 2:0:0:0: [sdd] tag#7 Add. Sense: Unrecovered read error - auto reallocate failed
[ 262.261316] blk_update_request: I/O error, dev sdd, sector 0
[ 262.262327] Buffer I/O error on dev sdd, logical block 0, async page read
[ 262.263372] sdd: unable to read partition table
[ 269.277518] ata3.00: cmd 60/08:78:00:6d:70/00:00:74:00:00/40 tag 15 ncq 4096 in
res 41/40:00:00:6d:70/00:00:74:00:00/00 Emask 0x409 (media error)
[ 269.742586] blk_update_request: I/O error, dev sdd, sector 1953524992
atd. atd.
Jinými slovy, už zase mi celá SMART diagnostika byla úplně k ničemu. Funguje to vůbec?
Server má krásně vycvakávací šuplíky, jenže jak poznám, který disk je ten vadný? Poradil jsem se s umělou inteligencí a hned jsem věděl, jak si k diskům vypsal i jejich sériová čísla (která jsou na nálepkách)
lsblk -o NAME,MODEL,SERIAL,SIZE,VENDOR,TRAN
sda WDC WD10EFRX-68F WD-WCC4J0VHVLKR 931,5G ATA sata
└─sda1 880G
└─md0 879,9G
sdb WDC WD10EFRX-68F WD-WCC4J1SV16SH 931,5G ATA sata
└─sdb1 880G
└─md0 879,9G
sdd WDC WD10EFRX-68F WD-WCC4J5LXJKD4 931,5G ATA sata
sde WDC WD10EADS-11M WD-WMAV52327587 931,5G ATA sata
└─sde1 931,5G
└─md1 931,4G
Druhý způsob pomocí
udevadm info --query=all --name=/dev/sdd | grep ata
jsem už ani nepotřeboval.
Disk byl tedy venku (a dva nové 2TB na stole). Tentokrát jsem po letech zase dal šanci Seagate. A protože nové disky jsou větší, byly to vlastně dvě výměny za sebou. Nejdřív byl vadný starý nahrazen novým velkým, a pak i zdravý starý novým velkým.
Do uvolněného šuplíku jsem zašrouboval nový disk, vrátil do serveru a po startu si dal krátké zakládací kolečko. Nejprve rozdělit pomocí fdsiku:
fdisk /dev/sdd
n->p->enter (číslo 1)->enter (první sektor)->enter (poslední sektor)->w
Pak vytvořit nové diskové pole z dvou disků v zrcadlení, s jedním chybějícím:
mdadm --create /dev/md2 --level=mirror --raid-devices=2 /dev/sdd1 missing
Na poli vytvořit souborový systém:
mkfs.xfs /dev/md2
Vytvořit si adresář pro připojení:
mkdir /mnt/data3
Připojit:
mount /dev/md2 /mnt/data3
A pustit kopírování dat z z degradovaného md1. Po čtyřech hodinách bylo hotovo.
Nakonec do etc/fstab tohle nové pole připojit na místo starého.
/dev/md2 /mnt/data2 xfs defaults 1 2
Najít příslušný starý funkční disk už byla hračka, místo něj jsem umístil zase ten nový, také ho rozdělil
fdisk /dev/sde
n->p->enter (číslo 1)->enter (první sektor)->enter (poslední sektor)->w
A přidal do pole:
mdadm /dev/md2 -a /dev/sde1
Pak už stačilo sledovat, jak mu jde synchronizace sektorů:
watch cat /proc/mdstat
(Dost pomalu, přes tři dny… )
Hodnocení hvězdičkami používá jako prevenci
opakovaného kliknutí anonymní cookie.
Pokud s tím nesouhlasíte, neklikejte.
Další podrobnosti k cookies zde.