Prověření nového HDD před zálohováním dat

Autor: | 12. 3. 2019 | IT, Linux

Štítky: badblocks | hdd | linux | S.M.A.R.T.

Jsem fanda a uživatel Linuxu a nedokážu si bez něj představit IT svět. Miluju na něm to, že si mohu všechno přizpůsobovat svým potřebám a mít nespočet možností. V domácnosti mám v rozvodné skříni mikropočítače s Linuxem a k jenomu z nich je připojený mikropočítač Cubie Board 2. Je to už starší kousek, nicméně pro zálohu stále použitelný. Má SATA port na připojení hard disku. Pro úplnost doplním, že na Cubie Board 2 mi běží distro Armbian.

Hledání vhodného disku

Ke Cubie Boardu jsem měl připojený 2TB disk a skrze něj jsem si zálohoval data. Bohužel můj HDD i s daty odešel do křemíkového nebe. Na celé situaci mě potěšilo alespoň to, že jsem pár měsíců před odchodem HDD zkopíroval celý jeho obsah na jiný disk. Technicky vzato jsem přišel o data tak měsíc stará a technicky vzato mě to už ani nebolí 🙂

Nastal čas koupit nový disk a připravit ho k používání. Je to vlastně už druhý disk, který mi odešel ještě v době kratší než 2 roky. Proto jsem trávil opravdu několik hodin hledám nějakého spolehlivějšího. Po pročtení mnoha příspěvků, názorů, statistik Backblaze jsem si jenom potvrdil, že nemá smysl hledat něco, co neexistuje. Jediný způsob, jak snížit riziko ztráty dat je vytvářet zálohy záloh. V dalším kroku se chystám na softwarový RAID, nicméně tento příspěvek je o přípravě nově koupeného disku. V rámci disku jsem se rozhodnul pro Seagate IronWolf, 3,5″ – 4TB.

Prověření koupeného disku S.M.A.R.T.

Prvním úkolem po koupi disku je vydržet tu dětskou radost z něčeho nového a nepřesouvat tam žádná data. Nejprve musím dostatečně softwarově prověřit i kdyby to mělo trvat týden. Nejprve zkontroluji disk skrze S.M.A.R.T.:

smartctl --test=conveyance /dev/sda

Tento příkaz je dobré spustit po koupi disku, kdy je možné, že někomu disk spadnul. Testují se možná poškození po přenosu disku. Podrobnosti lze najít v manuálu. Výsledky testů a zda jsou dokončeny je možné sledovat pomocí tohoto příkazu:

smartctl -l selftest /dev/sda

Jako další krok je dobré provést zkrácený a dlouhý test. Zkrácený test běžel pár minut. Dlouhý test už potrvá nějakou tu hodinku.

smartctl --test=short /dev/sda
smartctl --test=long /dev/sda

Výsledky testů dopadly dobře, žádná chyba nebyla nalezena, mohu přejít k dalšímu kroku.

root@cubieboard2:/home/armbian# smartctl -l selftest /dev/sda 
smartctl 6.4 2014-10-07 r4002 [armv7l-linux-4.19.13-sunxi] (local build) 
Copyright (C) 2002-14, 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  Extended offline    Self-test routine in progress 00%         7         - 
# 2  Conveyance offline  Completed without error       00%         0         - 
# 3  Short offline       Completed without error       00%         0         - 

Kontrola vadných bloků

Dalším rozumným krokem před vytvořením souborového systému a přenesením dat je kontrola vadných bloků na disku. Následující příkaz provádí zápis dat na disk a posléze čtení. Postupně zkouší tyto sekvence bitů: 1010, 0101, 1111, 000. Pokud všechno dopadne dobře, výpis vypadá takto:

root@cubieboard2:/home/armbian# badblocks -c 10240 -s -w -v /dev/sda
Checking for bad blocks in read-write mode
From block 0 to 3907018583
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done 
Testing with pattern 0xff: done
Reading and comparing: done
Testing with pattern 0x00: done
Reading and comparing: done 
Pass completed, 0 bad blocks found. (0/0/0 errors)

Zároveň je potřeba počítat s určitou dávkou trpělivosti. Na desce Cubieboard2 trvala tato kontrola 7 dní.

Jako poslední krok před další práci s diskem jsem přepsal disk náhodnými daty a připravil se tak na šifrování. Vykonání posledního příkazu zabralo něco kolem 30h.

badblocks -c 10240 -s -w -t random -v /dev/sda

Problém s většími disky a 32-bit systémem

Disk jsem kontroloval na 32 bitovém operačním systému. Jenže už jsme měl 8TB disk. Při pokusu o kontrolu se objevilo chybové hlášení:

badblocks -c 10240 -s -w -v /dev/sdb                                                        
badblocks: Hodnota je příliš velká pro daný datový typ invalid end block (7814026584): must be 32-bit value                                                                                                       

V diskusích jsem dohledal, že by mělo zafungovat použití většího bloku v bitech:

badblocks -b 4096 -s -w -v /dev/sdb

Pro pochopení použití příkazu je dobré si zobrazit rozdělení disku:

fdisk -l /dev/sdb
Disk /dev/sdb: 7,28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: 002-2ZM188
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Tento postup může pomoci obejít omezení 32bitového adresování bloků. Parametr -b v příkazu badblocks určuje velikost bloku v bytech, kterou program použije pro testování disku. Standardní velikost bloku je často 512 bytů, ale může být zvětšena na 4096 bytů nebo dokonce více.

Když zvětším velikost bloku, snižuji celkový počet bloků na disku. To je proto, že celkový prostor disku je nyní rozdělen do větších ‚kousků‘. Pro 8TB disk:

  • Při velikosti bloku 512 bytů: 8 TB / 512 B = 16,000,000,000 bloků (přibližně)
  • Při velikosti bloku 4096 bytů: 8 TB / 4096 B = 2,000,000,000 bloků (přibližně)

Takže při použití větší velikosti bloku 4096 bytů se celkový počet bloků sníží, což znamená, že jsou menší čísla potřebná pro adresování těchto bloků.

Další články