Pevné disky mohou neočekávaně selhat a vždy je nejlepší uchovávat poslední zálohy všech důležitých dat. Mějte prosím na paměti, že i když je zjištěna aktuální nebo nadcházející porucha, nemusí být dostatek času na zálohování dat. Níže je uvedeno několik metod, které lze použít k identifikaci špatných bloků nebo chyb disku v CentOS/RHEL.
Použití smartctl
Pokud je v /var/log/messages několik I/O chyb nebo máte jednoduše podezření, že pevné disky mohou selhávat, smartctl může být užitečným nástrojem při jejich kontrole. S.M.A.R.T. znamená Self-Monitoring , Analýza a Technologie hlášení . Musíte povolit S.M.A.R.T. podporu v systému BIOS před jeho použitím.
Dále nainstalujte potřebné balíčky pro spuštění /usr/sbin/smartctl. V Red Hat Enterprise Linux je poskytován pomocí smartmontools balíček.
1. Ověřte, zda váš pevný disk podporuje S.M.A.R.T. :
# smartctl -i /dev/xxx
Při použití příkazů uvedených v tomto příspěvku nahraďte /dev/xxx požadovaným pevným diskem.
2. Pro jednotky SATA použijte:
# smartctl -i -d ata /dev/xxx
3. Povolte S.M.A.R.T. podpora s:
# smartctl -s on /dev/xxx ### For SCSI Disks # smartctl -s on -d ata /dev/xxx ### for SATA Disks
4. Spuštění následujícího příkazu jako root může být rychlý test PASS/FAIL, ale důkladnější testování popsané níže je obecně průkaznější:
# smartctl -H /dev/xxx
Spuštění smartctl na pozadí
Chcete-li spustit test na pozadí, spusťte následující příkaz jako root:
# smartctl -t long /dev/xxx
Pro přístup k výsledkům použijte následující příkaz:
# smartctl -a /dev/xxx
Chcete-li se dozvědět více o různých možnostech, které lze použít se smartctl, podívejte se na manuálovou stránku příkazu:
# man smartctl
Používání chybných bloků
Ke kontrole chybných bloků na diskovém zařízení můžete také použít příkaz „badblocks“. Příkaz „badblocks“ může být velmi užitečný při izolování problémů se synchronizací LVM oddílů v Linuxu. Operace LVM selžou kvůli špatným blokům na disku. Špatné bloky na zdrojovém nebo cílovém disku v zrcadle LVM způsobí selhání synchronizace.
Badblocks lze také použít ve spojení s fsck a makefs k označení bloků jako špatných. Pokud má být výstup chybných bloků přiváděn do programů e2fsck nebo mke2fs, je důležité, aby byla správně zadána velikost bloku, protože čísla bloků, která jsou generována, velmi závisí na velikosti bloku používaného souborovým systémem. Z tohoto důvodu se důrazně doporučuje, aby uživatelé nespouštěli badblocks přímo, ale raději používali volbu -c programů e2fsck a mke2fs.
Upozornění :Nesprávné použití těchto příkazů může způsobit ztrátu dat. Další informace o příkazu „badblocks“ jsou dostupné pomocí příkazu „man badblocks“.1. Pomocí nástroje pro kontrolu disku badblocks prohledejte zadaný pevný disk blok po bloku. Například pro skenování /dev/sdd zadejte příkazy:
# mount | grep sdd # find all mounted partitions of sdd # umount /dev/sdd1 # unmount the partitions (may be more then one) # badblocks -n -vv /dev/sdd
Kde -n používá nedestruktivní režim čtení-zápis. Ve výchozím nastavení se provádí pouze nedestruktivní test pouze pro čtení.
Poznámka :Nikdy nepoužívejte -w možnost na zařízení obsahujícím existující souborový systém. Tato volba vymaže data! Pokud je třeba provést testování režimu zápisu na existujícím systému souborů, použijte -n místo toho. Je to pomalejší, ale zachová data.2. Pokud se po spuštění chybných bloků objeví zprávy podobné příkladům uvedeným níže v /var/log/messages nebo na konzoli, doporučuje se zálohovat všechna data na postižených zařízeních a vyměnit zařízení:
Apr 4 13:50:40 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error } Apr 4 13:50:40 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367232 Apr 4 13:50:40 test kernel: ide: failed opcode was: unknown Apr 4 13:50:40 test kernel: end_request: I/O error, dev sdd, sector 74367232 Apr 4 13:50:42 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error } Apr 4 13:50:42 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367240 Apr 4 13:50:42 test kernel: ide: failed opcode was: unknown Apr 4 13:50:42 test kernel: end_request: I/O error, dev sdd, sector 74367240 Apr 4 13:50:44 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
3. Níže uvedený příkaz vypíše nalezené špatné bloky do výstupního souboru:badblocks.log.
# badblocks -v -o badblocks.log /dev/sdd