Freebsd проверить диск на ошибки

FreeBSD

Подробности
Категория: FreeBSD
Опубликовано 28.10.2012 11:23
Автор: 1111
Просмотров: 7520

Рано или поздно это случается, а именно крах системы или раздела, невозможность проверить файловую систему и т.д. Поэтому системный администратор должен знать что делать в таких ситуациях, так сказать знать как «Отче наш».

1) fsck при загрузке ОС

Когда случается сбой питания в работу вступает fsck: file system consistency check and interactive repair или если на русском, то «проверка целосности файловой системы и интерактивное восстановление». По умолчанию проверка дисков отключена. Что бы её включить при загрузке системы, добавим такую строчку

fsck_y_enable="YES"

в файл /etc/rc.conf. В этом случае, при некорректном завершении работы сервера, будет автоматически запускаться проверка всех файловых систем.

Сама проверка состоит из 5-ти этапов:

** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups


На самом деле, Phase 1 ещё подразделяется на 1a и 1b. Это можно заметить только тогда, когда случился серъёзный крах.

Всё это хорошо, но есть одно НО! Когда происходит проверка файловой системы, то пока раздел не провериться, он не смонтируется и станет доступным, соответственно, увеличивается время загрузки сервера. Разработчики и это предусмотрели и сделали возможным запуск проверки в «фоне». Хотя на самом деле это только попытка, но всё же лучше, чем ничего. по умолчанию она включена. Правда по этому поводу точаться дискуссии на тему «нужно ли включать проверку в фоне или нет». Решать вам.

Есть один неприятный момент в процессе проверки ФС при загрузке. Если раздел достаточно большой, то его проверка может занять длительное время, при этом, fsck как бы зависает на каждом из этапов. Иными словами визуально непонятно, то ли идёт проверка, то ли сервер завис. Ну и при всём при этом непонятно, сколько уже проверено и сколько будет проверяться. Что бы немного облегчить жизнь системным администраторам, разработчики внедрили недокументированую возмножность. нажатие комбинации Ctrl+T показывает текущее состояние проверки: сколько уже проверено, в процентах. Если через пару минут захотите узнать опять состояние – нужно снова нажать Ctrl+T и так каждый раз.

Есть несколько параметров, которые прописываются в /etc/rc.conf и касаются fsck. Ниже приведены их дефолтные значения:

fsck_y_enable="NO" # Включить проверку при запуске, если работа была завершена некорректно.
fsck_y_flags="" # Дополнительные флаги для fsck -y
background_fsck="YES" # Попытка запустить проверку в фоне
background_fsck_delay="60" # Время задержки перед запуском fsck в фоне.

Я рекомендую прописать в /etc/rc.conf только такое:

fsck_y_enable="YES"

И так, вот примеры работы fsck:

— если сервер выключался корректно, то при загрузке мы увидим такое сообщение:

Nov 10 14:36:33 mail kernel: Starting file system checks:
Nov 10 14:36:33 mail kernel: /dev/da0s1a: FILE SYSTEM CLEAN; SKIPPING CHECKS
Nov 10 14:36:33 mail kernel: /dev/da0s1a: clean, 942456 free (2944 frags, 117439 blocks, 0.3% fragmentation)
Nov 10 14:36:33 mail kernel: /dev/da0s1d: FILE SYSTEM CLEAN; SKIPPING CHECKS
Nov 10 14:36:33 mail kernel: /dev/da0s1d: clean, 503428 free (60 frags, 62921 blocks, 0.0% fragmentation)
Nov 10 14:36:33 mail kernel: /dev/da0s1e: FILE SYSTEM CLEAN; SKIPPING CHECKS
Nov 10 14:36:33 mail kernel: /dev/da0s1e: clean, 2301104 free (50872 frags, 281279 blocks, 1.0% fragmentation)
Nov 10 14:36:33 mail kernel: /dev/da0s1f: FILE SYSTEM CLEAN; SKIPPING CHECKS
Nov 10 14:36:33 mail kernel: /dev/da0s1f: clean, 162210122 free (2260506 frags, 19993702 blocks, 0.5% fragmentation)
Nov 10 14:36:33 mail kernel: Mounting local file systems:


Наличие ключевой фразы FILE SYSTEM CLEAN; SKIPPING CHECKS свидетельствует о предыдущем корректном завершении.

— если некорректно, то такое

Starting background file system checks in 60 seconds.
Jan 26 18:39:19 mail kernel: Starting file system checks:
Jan 26 18:39:19 mail kernel: /dev/da0s1a: 56013 files, 201857 used, 3349718 free (1702 frags, 418502 blocks, 0.0% fragmentation)
Jan 26 18:39:19 mail kernel: /dev/da0s1d: DEFER FOR BACKGROUND CHECKING
Jan 26 18:39:19 mail kernel: /dev/da0s1f: DEFER FOR BACKGROUND CHECKING
Jan 26 18:39:19 mail kernel: /dev/da0s1e: DEFER FOR BACKGROUND CHECKING


Но такое происходит не всегда. Если попытка не увенчалась успехом, то мы увидим такое:

** /dev/ad2s1g (NO WRITE)
** Last Mounted on /var
** Phase 1 - Check Blocks and Sizes

INCORRECT BLOCK COUNT I=446041 (4 should be 0)
CORRECT? yes
INCORRECT BLOCK COUNT I=446045 (4 should be 0)
CORRECT? yes

** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts

UNREF FILE I=89148 OWNER=root MODE=100600
SIZE=376 MTIME=Aug 13 13:49 2006
RECONNECT? yes
CLEAR? yes
UNREF FILE I=89152 OWNER=root MODE=100600
SIZE=755 MTIME=Aug 13 13:49 2006
RECONNECT? yes
CLEAR? yes

** Phase 5 - Check Cyl groups

FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? yes
SUMMARY INFORMATION BAD
SALVAGE? yes
BLK(S) MISSING IN BIT MAPS
SALVAGE? yes
2242 files, 1607116 used, 973436 free (2196 frags, 121405 blocks, 0.1% fragmentation)

2) Ручной запуск fsck

Сразу замечу, что проверка делается ТОЛЬКО НА НЕ СМОНТИРОВАННОМ РАЗДЕЛЕ! Иначе можете потерять все данные.
И так, рассмотрим только те параметры, которые часто используются. А именно

-y|-n: этот параметр будет отвечать соответственно YES|NO на все вопросы при возникновении несоответствий.
-B|-F : соответственно фоновый и нефоновый режимы
-f : проверить раздел, даже если он был отключён корректно.

Рекомендую запускать с такими параметрами:

fsck -y -f /dev/ad2s1g

Если запустить без параметра -y, то при проверке и нахождении несоответствий будет выдаваться вопрос, на что можно ответить Y или N. обычно отвечают Y. Не очень удобно каждый раз отвечать Y, поэтому лучше запускать с параметром Y

** /dev/ad2s1g (NO WRITE)
** Last Mounted on /var
** Phase 1 - Check Blocks and Sizes

INCORRECT BLOCK COUNT I=446041 (4 should be 0)
CORRECT?

Есть хорошая новость: комбинация CTRL+T работает и в ручном режиме.

This post will guide you how to check your Hard Drive Health in FreeBSD operating system. How do I check my Hdds or SSDs Health using smartmontools tool from the command line in FreeBSD.

  • Smartctl Command
  • Installing Smartmontools Tool on FreeBSD
  • Checking Hard Drive Health on FreeBSD

How to Check Hard Drive Health on FreeBSD1

Smartctl Command


Smartctl controls the Self-Monitoring, Analysis and Reporting Technology (SMART) system built into most ATA/SATA and SCSI/SAS hard drives and solid-state drives. The purpose of SMART is to monitor the reliability of the hard drive and predict drive failures, and to carry out different types of drive self-tests. smartctl also supports some features not related to SMART. This version of smartctl is compatible with ACS-3, ACS-2, ATA8-ACS, ATA/ATAPI-7 and earlier standards.

You can use the forms “/dev/ad[0-9]+” for IDE/ATA devices and “/dev/da[0-9]+” or “/dev/pass[0-9]+” for SCSI devices. For SATA devices on AHCI bus use “/dev/ada[0-9]+” format. For HP Smart Array RAID controllers, use “/dev/ciss[0-9]”.

Options:

-i, --info Prints the device model number, serial number, firmware version, and ATA Standard version/revision information.

-a, --all Prints all SMART information about the disk, or TapeAlert information about the tape drive or changer.

Installing Smartmontools Tool on FreeBSD


You can use the following command to install smartmontools package on your FreeBSD, type:

$ pkg install smartmontools

Outputs:

root@freebsd:~ # pkg install smartmontools
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100% 944 B 0.9kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 2.2MB/s 00:03
Processing entries: 100%
FreeBSD repository update completed. 32770 packages processed.
All repositories are up to date.
New version of pkg detected; it needs to be installed first.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
pkg: 1.10.5_5 -> 1.12.0

Number of packages to be upgraded: 1

The process will require 14 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]:
[1/1] Fetching pkg-1.12.0.txz: 100% 7 MiB 1.7MB/s 00:04
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.10.5_5 to 1.12.0...
[1/1] Extracting pkg-1.12.0: 100%
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
smartmontools: 7.0_1

Number of packages to be installed: 1

The process will require 2 MiB more space.
499 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching smartmontools-7.0_1.txz: 100% 499 KiB 511.2kB/s 00:01
Checking integrity... done (0 conflicting)
[1/1] Installing smartmontools-7.0_1...
[1/1] Extracting smartmontools-7.0_1: 100%
=====
Message from smartmontools-7.0_1:

--
smartmontools has been installed

To check the status of drives, use the following:

/usr/local/sbin/smartctl -a /dev/ad0 for first ATA/SATA drive
/usr/local/sbin/smartctl -a /dev/da0 for first SCSI drive
/usr/local/sbin/smartctl -a /dev/ada0 for first SATA drive

To include drive health information in your daily status reports,
add a line like the following to /etc/periodic.conf:
daily_status_smart_devices="/dev/ad0 /dev/da0"
substituting the appropriate device names for your SMART-capable disks.

To enable drive monitoring, you can use /usr/local/sbin/smartd.
A sample configuration file has been installed as
/usr/local/etc/smartd.conf.sample
Copy this file to /usr/local/etc/smartd.conf and edit appropriately

To have smartd start at boot
echo 'smartd_enable="YES"' >> /etc/rc.conf

Once Smartmontools is installed on your FreeBSD system, and you can now use smartctl command to control and monitor SMART Disks.

Checking Hard Drive Health on FreeBSD


if you want to dispaly the hard driver disk information, and you can pass the -i option to the smartctl command, type:

$ smartctl -i /dev/ada0

Outputs:

root@freebsd:~ # smartctl -i /dev/ada0
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-RELEASE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model: VBOX HARDDISK
Serial Number: VBc1a25919-08b8d87a
Firmware Version: 1.0
User Capacity: 33,286,127,616 bytes [33.2 GB]
Sector Size: 512 bytes logical/physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ATA/ATAPI-6 published, ANSI INCITS 361-2002
Local Time is: Fri Oct 11 14:55:13 2019 UTC
SMART support is: Unavailable - device lacks SMART capability.

If you want to check hard disk health for a disk /dev/ada0 in your FreeBSD, and you can pass the -a option to the smartctl command, type:

$ smartctl -a /dev/ada0

Conclusion


You should know that how to check hard drive health using smartctl command from the command line in your FreeBSD system.

Навигация


⇒ FreeBSD and Nix ⇐

CISCO

Voice(AsteriskCisco)

Microsoft

Powershell

Python

SQLT-SQL

Общая

WEB Разработка

ORACLE SQL JAVA

Мото


Проверить диск на ошибки и битые сектора в FreeBSD

/dev/mfid0 — наш диск

Способ 1 — dd_rescue:
cd /usr/ports/sysutils/dd_rescue && make install clean && rehash
dd_rescue -v -l error.log -o bad.log /dev/mfid0 /dev/null

Способ 2 — ddrescue:
cd /usr/ports/sysutils/ddrescue && make install clean && rehash
ddrescue —force /dev/mfid0 /dev/null


Комментарии пользователей

Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Как проверить жесткий диск в FreeBSD на битые сектора (бэд-блоки)? Для этого можно использовать утилиту dd_rescue.
Установим её:

# cd /usr/ports/sysutils/dd_rescue
# make install clean
# rehash

Можно посмотреть в файле /etc/fstab примонтированные разделы и диски, можно воспользоваться командой mount. Итак, выяснили какое устройство проверять, начнем:

# dd_rescue -v -l error.log -o bad.log /dev/ad0s1a /dev/null

В процессе можно будет наглядно наблюдать за появлением ошибок и их количеством. Также весь лог пишется в файл error.log, а битые сектора в файл bad.log


Рекомендованные сообщения

kvirtu

    • Share

Всем привет !

Есть подозрения на жесткий диск.

Боевой сервак на FreeBSD.

Можно ли запустить утилиту dd_rescue на рабочем серваке ?

fsck -y запускать на смонтированной системе не рекомендуется

Ссылка на сообщение
Поделиться на других сайтах

Sanito

    • Share

А не дешевле в срочном порядке купить новый серверный винт, быстро поставить систему, и в 4 часа утра поменять hdd?

Имхо, если что-то пойдет не так, выйдет значительно дороже.

Ссылка на сообщение
Поделиться на других сайтах

kvirtu

  • Автор
    • Share

А не дешевле в срочном порядке купить новый серверный винт, быстро поставить систему, и в 4 часа утра поменять hdd?

Имхо, если что-то пойдет не так, выйдет значительно дороже.

Запасной жесткий с установленной системой есть. Вопрос по утилите dd_rescue или все проверки однозначно делать в однопользовательском режиме ?

Ссылка на сообщение
Поделиться на других сайтах

muff

    • Share
Ссылка на сообщение
Поделиться на других сайтах

muff

    • Share

Кстати, fsck -y на смонтированной файловой системе запускать можно. fsck по умолчанию запускается автоматически после загрузки сервера:

# cat /etc/defaults/rc.conf | grep fsck
fsck_y_enable="NO"	  # Set to YES to do fsck -y if the initial preen fails.
background_fsck="YES"   # Attempt to run fsck in the background where possible.
background_fsck_delay="60" # Time to wait (seconds) before starting the fsck.

Другое дело, что исправить ошибки не сможет — только выведет уведомление.

Ссылка на сообщение
Поделиться на других сайтах

loki

    • Share

В монопольном режиме (сингл мод) fsck -y (man fsck)

Ссылка на сообщение
Поделиться на других сайтах

muff

    • Share
Ссылка на сообщение
Поделиться на других сайтах

KaYot

    • Share

С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..

Обычные разделы проверять можно, и лечить принудительно в принципе тоже.

Ссылка на сообщение
Поделиться на других сайтах

natiss

    • Share

Кстати, fsck -y на смонтированной файловой системе запускать можно. fsck по умолчанию запускается автоматически после загрузки сервера:

# cat /etc/defaults/rc.conf | grep fsck
fsck_y_enable="NO"	  # Set to YES to do fsck -y if the initial preen fails.
background_fsck="YES"   # Attempt to run fsck in the background where possible.
background_fsck_delay="60" # Time to wait (seconds) before starting the fsck.

Другое дело, что исправить ошибки не сможет — только выведет уведомление.

Есть можно ВСЕ грибы. Просто некоторые только один раз. Да?

На смонтированнйо ФС fsck мало того, что ничего не исправит, а еще и скорее всего приведет к панике ядра и очередному аварийному ребуту, чем еще больше разрушит ФС. Я сталкивался с ситуациями, когда после N итераций ФС разваливалась настолько, что на не получалось починить даже в сингле по всем канонам. Только подключатьк другой машине… так шо не шутите с этим делом. А фоновую проверку в фри < 9.0 вообще надо сразу же выключить и разрешить явную обязательную проверку при старте.

Ссылка на сообщение
Поделиться на других сайтах

adeep

    • Share

С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..

глупость. fsck не видит различия между raid и просто носителем. он работает с логической структурой.

а вот запускать его на смонтированной файловой системе обычно бесполезно — во время работы с фс много структур не сохраняются сразу на диск, поэтому фактическое физическое состояние диска некорректно и если его попытаться «вылечить», то появятся проблемы.

afaik, фоновый fsck который запускается при запуске системы работает не с самой файловой системой, а с ее снапшотом.

Ссылка на сообщение
Поделиться на других сайтах

kvirtu

  • Автор
    • Share

С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..

глупость. fsck не видит различия между raid и просто носителем. он работает с логической структурой.

а вот запускать его на смонтированной файловой системе обычно бесполезно — во время работы с фс много структур не сохраняются сразу на диск, поэтому фактическое физическое состояние диска некорректно и если его попытаться «вылечить», то появятся проблемы.

afaik, фоновый fsck который запускается при запуске системы работает не с самой файловой системой, а с ее снапшотом.

C fsck понятно — низя, с а dd_rescue кто-то реально работал ?

Ссылка на сообщение
Поделиться на других сайтах

NiTr0

    • Share

C fsck понятно — низя, с а dd_rescue кто-то реально работал ?

А что вы нею хотите реально сделать-то? :) Это вообще-то аналог dd только с несколько улучшенной обработкой ошибок…

А тест состояния винта — фирмварные смарт-тесты чем не угодили?

Ссылка на сообщение
Поделиться на других сайтах

adeep

    • Share

C fsck понятно — низя, с а dd_rescue кто-то реально работал ?

а что с ней работать? копирует сектора и ладно.

если вы хотите скопировать винт наживую — получите результат эквивалентный запуску fsck на живой системе.

если просто прочитать винт в поисках ошибок чтения — читайте сколько влезет.

Ссылка на сообщение
Поделиться на других сайтах

kvirtu

  • Автор
    • Share

C fsck понятно — низя, с а dd_rescue кто-то реально работал ?

если просто прочитать винт в поисках ошибок чтения — читайте сколько влезет.

спс, понял)

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Понравилась статья? Поделить с друзьями:
  • Free pascal 106 ошибка
  • Free fire ошибка сети
  • Free fire ошибка загрузка прервана
  • Free fire ошибка времени
  • Franke варочная панель коды ошибок