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
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
1С
Общая
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
Рекомендованные сообщения
-
- Share
Всем привет !
Есть подозрения на жесткий диск.
Боевой сервак на FreeBSD.
Можно ли запустить утилиту dd_rescue на рабочем серваке ?
fsck -y запускать на смонтированной системе не рекомендуется
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
А не дешевле в срочном порядке купить новый серверный винт, быстро поставить систему, и в 4 часа утра поменять hdd?
Имхо, если что-то пойдет не так, выйдет значительно дороже.
Ссылка на сообщение
Поделиться на других сайтах
- Автор
-
- Share
А не дешевле в срочном порядке купить новый серверный винт, быстро поставить систему, и в 4 часа утра поменять hdd?
Имхо, если что-то пойдет не так, выйдет значительно дороже.
Запасной жесткий с установленной системой есть. Вопрос по утилите dd_rescue или все проверки однозначно делать в однопользовательском режиме ?
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
Ссылка на сообщение
Поделиться на других сайтах
-
- 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.
Другое дело, что исправить ошибки не сможет — только выведет уведомление.
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
В монопольном режиме (сингл мод) fsck -y (man fsck)
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..
Обычные разделы проверять можно, и лечить принудительно в принципе тоже.
Ссылка на сообщение
Поделиться на других сайтах
-
- 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 вообще надо сразу же выключить и разрешить явную обязательную проверку при старте.
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..
глупость. fsck не видит различия между raid и просто носителем. он работает с логической структурой.
а вот запускать его на смонтированной файловой системе обычно бесполезно — во время работы с фс много структур не сохраняются сразу на диск, поэтому фактическое физическое состояние диска некорректно и если его попытаться «вылечить», то появятся проблемы.
afaik, фоновый fsck который запускается при запуске системы работает не с самой файловой системой, а с ее снапшотом.
Ссылка на сообщение
Поделиться на других сайтах
- Автор
-
- Share
С помощью fsck нельзя лечить soft-raid разделы, о чем он честно предупреждает. Когда-то сделал такую глупость, после чего имел многочасовой секс по поднятию умершего рейда..
глупость. fsck не видит различия между raid и просто носителем. он работает с логической структурой.
а вот запускать его на смонтированной файловой системе обычно бесполезно — во время работы с фс много структур не сохраняются сразу на диск, поэтому фактическое физическое состояние диска некорректно и если его попытаться «вылечить», то появятся проблемы.
afaik, фоновый fsck который запускается при запуске системы работает не с самой файловой системой, а с ее снапшотом.
C fsck понятно — низя, с а dd_rescue кто-то реально работал ?
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
C fsck понятно — низя, с а dd_rescue кто-то реально работал ?
А что вы нею хотите реально сделать-то? Это вообще-то аналог dd только с несколько улучшенной обработкой ошибок…
А тест состояния винта — фирмварные смарт-тесты чем не угодили?
Ссылка на сообщение
Поделиться на других сайтах
-
- Share
C fsck понятно — низя, с а dd_rescue кто-то реально работал ?
а что с ней работать? копирует сектора и ладно.
если вы хотите скопировать винт наживую — получите результат эквивалентный запуску fsck на живой системе.
если просто прочитать винт в поисках ошибок чтения — читайте сколько влезет.
Ссылка на сообщение
Поделиться на других сайтах
- Автор
-
- Share
C fsck понятно — низя, с а dd_rescue кто-то реально работал ?
если просто прочитать винт в поисках ошибок чтения — читайте сколько влезет.
спс, понял)
Ссылка на сообщение
Поделиться на других сайтах
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий