Проверка диска на битые секторы в linux
Содержание:
ENVIRONMENT VARIABLES
fsck
- FSCK_FORCE_ALL_PARALLEL
-
If this environment variable is set,
fsckwill attempt to check all of the specified filesystems in parallel, regardless of
whether the filesystems appear to be on the same device. (This is useful for
RAID systems or high-end storage systems such as those sold by companies such
as IBM or EMC.) Note that the fs_passno value is still used. - FSCK_MAX_INST
-
This environment variable will limit the maximum number of filesystem
checkers that can be running at one time. This allows configurations
which have a large number of disks to avoid
fsckstarting too many filesystem checkers at once, which might overload
CPU and memory resources available on the system. If this value is
zero, then an unlimited number of processes can be spawned. This is
currently the default, but future versions of
fsckmay attempt to automatically determine how many filesystem checks can
be run based on gathering accounting data from the operating system. - PATH
-
The
PATHenvironment variable is used to find filesystem checkers.
- FSTAB_FILE
-
This environment variable allows the system administrator
to override the standard location of the
/etc/fstabfile. It is also useful for developers who are testing
fsck. - LIBBLKID_DEBUG=all
- enables libblkid debug output.
- LIBMOUNT_DEBUG=all
- enables libmount debug output.
Решение:
В этой статье будут рассмотрены способы проверки и диагностики HDD в Linux. Полученная информация поможет проанализировать состояние жестких дисков, и, если это необходимо, заменить носитель до того, как он вышел из строя неожиданно и в самый не подходящий для этого момент.
Задуматься о состоянии HDD следует по некоторым признакам поведения системы в целом: резко выросла общая нагрузка на дисковую подсистему, упала скорость чтения/записи, другие проблемы косвенно указывающие что с HDD что-то не то.
Ниже я приведу основные команды, выполнять их необходимо из-под учётной записи root
Чтобы получить список подключенных HDD в систему, выполнить:
fdisk -l
Мы получим листинг всех подключенных накопителей, их размер и имена устройств в системе.
Для того, чтобы посмотреть какие устройства и куда смонтированы, выполнить:
mount
Узнать сколько на каждом из смонтированном носителе занято пространства, выполнить:
df -h
Если мы используем софтовых RAID, его состояние мы можем проверить следующей командой:
cat /proc/mdstat
Если всё в порядке, то мы увидим что-то подобное:
Personalities : md0 : active raid1 sdb1 sdc1 488383352 blocks super 1.2 [2/2]
Из вывода видно состояние raid (active), название устройства raid (md0) и какие устройства в него включены (sdb1 sdc1), какой именно raid собран (raid1), в нём два диска и они оба работают в raid ([2/2] )
Ставим hdparm
apt-get install hdparm
Смотрим скорость чтения с накопителя
hdparm -t /dev/sdX
Где /dev/sdX — имя устройства которое необходимо проверить.
Полезной программой для анализа нагрузки на диски является iostat, входящей в пакет sysstat
Ставим:
apt-get install sysstat
Теперь смотрим вывод iostat по всем дискам в системе:
iostat -x
С интервалом 10 секунд:
iostat -x 10
Или по определённому накопителю:
iostat -x /dev/sdX
Полученные данные покажут нам нагрузку на устройства хранения, статистику по вводу/выводу, процент утилизации накопителя.
Переходим непосредственно к проверке накопителей. Проверка на наличие сбойных блоков осуществляется при помощи программы badblocks. Для проверки жесткого диска на бэдблоки, выполнить:
badblocks -v /dev/sdX
Где /dev/sdX — имя устройства которое необходимо проверить. Если программа обнаружит наличие сбойных блоков, она выведет их количество на консоль. Выполнение данной операции может занять продолжительное время (до нескольких часов) и желательно её выполнение на размонтированной файловой системе, либо в режиме read-only.
Для того, чтобы записать сбойные блоки, выполняем:
badblocks /dev/sdX > /tmp/badblock
Где /tmp/badblock — файл куда программа запишет номера сбойных блоков.
Теперь при помощи программы e2fsck мы можем пометить сбойные блоки и они будут в дальнейшем игнорироваться системой
ВНИМАНИЕ! Данная операция должна проводиться на размонтированной файловой системе, либо в режиме read-only! Проверенное устройство и устройство на накотором будут помечаться сбойные блоки должно быть одно и тоже!
e2fsck -l /tmp/badblock /dev/sdX
Если были обнаружены сбойные блоки на диске, есть тенденция появления новых бэдблоков, необходимо задуматься о скорейшем копировании данных и замене данного носителя. Приведённые выше команды помогут выявить сбойные блоки и пометить их как таковые, но не спасут «сыпящийся» диск.
Также в своём инструментарии полезно использовать данные полученные из S.M.A.R.T. дисков.
Ставим пакет smartmontools
apt-get install smartmontools
Получаем данные S.M.A.R.T. жесткого диска:
smartctl -a /dev/sdX
Для сохранности данных настоятельно рекомендуем делать backup (резервное копирование). Это поможет в кратчайшие сроки восстановить необходимые данные и настройки в форс-мажорных обстоятельствах.
—-
Актуальность: 2012/02/29
fsck — Checking and Repairing Linux Filesystems
fsck command examples
fsck
«fsck» is used to check and optionally repair one or more of your Linux filesystems. When issuing the «fsck» command you can specify a mount point such as «/», a device «/dev/sda1» or you can specify a UUID. If no filesystems are passed to the command line and the «-A» option is not passed, then fsck will use the entries within the «/etc/fstab» to check. Many distributions of Linux will run a automatic «fsck» after x number of days or x number of re-boots. When running the fsck command, you should always unmount the filesystem first. This will reduce the chances of any corruption occurring.
fsck — Error Codes:
The exit code returned by the fsck command is the sum of the following conditions:
0 - No errors 1 - Filesystem errors corrected 2 - System should be rebooted 4 - Filesystem errors left uncorrected 8 - Operational error 16 - Usage or syntax error 32 - Fsck cancelled by user request 128 - Shared-library error
Examples of fsck commands
As mentioned earlier, you should NEVER run fsck on a mounted filesystem. First, we will display all mounted filesystems. This will enable us to work out if we need to unmount any filesystems before running the fsck command.
Display mounted filesystems — mount
In the example below we have used the «mount» command to display all mounted filesystems. We also used the «df» command to display the mount points.
fsck — Basic Check
Now we can unmount the device/filesystem to carry out our «fsck» checks. Note, the command to unmount is «umount» without a «n»
After unmounting the device «/dev/sdb1» we then ran our «fsck». In this example it was found to be clean with no errors reported.
In the above example, we run the same commands, however, we specified the name of the filesystem instead of the device.
fsck — Only if filesystem is unmounted
In the following example we ran the «fsck» command, however, we passed an additional parameter of «-M». The «-M» parameter instructs the fsck command to only run a check if the filesystem is not mounted. In our example, we had not unmounted the filesystem therefore no action was taken. If no action was taken against a mounted filesystem, then a return code of «0» is returned. We can verify this by issuing the «echo $?» command.
It is a good idea to get into the habit of using the «-M» option every time you run the fsck as this will safe guard against accidentally running a fsck against a mounted filesystem.
fsck — Automatically fix errors
By specifying the «-y» parameter, fsck will attempt to automatically fix/repair any errors. The «-y» automatically answers «y» to any responses that you would normally have to reply to.
fsck — run but do not fix any errors
By using the «-n» parameter, we will run the fsck, however, it will not attempt to make any fixes to our filesystems. Not all filesystems will accept the «-n» option. Sometimes you may need to run the «-N» option which will carry out no fixes, it will only report what would be done. This is because not all filesystem checkers will report errors. For example «fsck.reiserfs» will not report any corruption with the «-n» option!
Common types of filesystems supported by fsck
In the example below taken from my «Ubuntu 12.04 LTS» system we can see that there are numerous types of fsck checkers available. The number may differ depending on what distribution of Linux you are using.
As with many Linux commands there are numerous options available that can be passed to the «fsck» command. To see all the available options issue the «man fsck» command.
Conclusion
fsck is a useful command that can check your filesystem for errors and fix them automatically. Most of the time, you won’t have to bother with it as your system will usually run it regularly during boot up to make sure everything is working fine. However, when your filesystem get corrupted, this is the easiest way to find out what happen and fix it.
Note: fsck is also available in Mac.
Image credit: Testing Connections by BigStockPhoto
Join the elite circle of Linux Power Users with this bundle
Do you have a burning desire to learn how to use Linux? If so, you have to check out the Linux Power User Bundle. Don’t worry about prior experience because these courses will show you how to install Linux servers and utilize proper command line technique like a pro. Open up a world of opportunity by learning Linux in this bundle, available now for just $19.
Damien
Damien Oh started writing tech articles since 2007 and has over 10 years of experience in the tech industry. He is proficient in Windows, Linux, Mac, Android and iOS, and worked as a part time WordPress Developer. He is currently the owner and Editor-in-Chief of Make Tech Easier.
Работа с файловой системой в Linux
Перед тем как переходить к работе с реальным жестким диском важно попрактиковаться. Если сменить метку или проверить на битые сектора можно и рабочий диск, то создавать новую файловую систему, изменять ее размер, рискуя потерять данные на реальном диске не рекомендуется
Можно отделить небольшой раздел диска для экспериментов с помощью Gparted и выполнять все действия в нем. Допустим, у нас этот раздел будет называться /dev/sda6.
Создание файловой системы
Создать файловую систему linux, семейства ext, на устройстве можно с помощью команды mkfs. Ее синтаксис выглядит следующим образом:
Доступны дополнительные параметры:
- -с — проверить устройство на наличие битых секторов
- -b — размер блока файловой системы
- -j — использовать журналирование для ext3
- -L — задать метку раздела
- -v — показать подробную информацию о процессе работы
- -V — версия программы
Создаем файловую систему на нашем устройстве. Будем создавать ext3:
Изменение метки файловой системы
Утилита e2label позволяет изменить или посмотреть метку раздела диска. Принимает всего два параметра — устройство и новую метку если нужно.
Смотрим метку:
Устанавливаем новую:
Настройка файловой системы linux
Различные параметры файловой системы, такие как размер блока данных, иноды или зарезервированное место под данные пользователя root можно настроить. Для этого существует утилита tune2fs.
Синтаксис команды очень прост:
$ tune2fs опции устройство
Поддерживаются следующие опции:
- -j — создать файл журнала. Позволяет превратить файловую систему ext2 в ext3.
- -J — настроить параметры журнала
- -l — получить содержимое суперблока
- -L — изменить метку раздела
- -m — изменить процент дискового пространства, зарезервированного для суперпользователя
- -M — изменить последнюю папку монтирования
- -U — задать UUID файловой системы
- -C — изменить значение счетчика монтирования
- -T — изменить последнюю дату проверки файловой системы
- -с — изменить периодичность проверок файловой системы с помощью fsck
- -O — изменить опции файловой системы.
Изменить размер зарезервированного места для суперпользователя до пяти процентов:
Изменить счетчик количества монитрований:
Думаю тут смысл понятен, нужно только немного со всем этим поэкспериментировать.
С помощью опции -O мы вообще можем превратить нашу ext3 в ext4 следующей командой:
После этого действия нужно выполнить проверку файловой системы на ошибки в fsck. Подробнее об этом поговорим ниже.
Таким образом вы можете изменить файловую систему linux, и настроить по своему усмотрению любые ее параметры.
Изменение размера файловой системы Linux
Раньше такая функция поддерживалась в утилите parted, но потом ее убрали и для этого действия приходится использовать утилиту из набора e2fsprogs — resize2fs.
Запустить утилиту очень просто. Ей нужно передать всего два параметра:
$ resize2fs устройство размер
Доступны также опции:
- -M уменьшить файловую систему до минимального размера
- -f — принудительное изменение, не смотря на потерю данных
- -F — очистить буфер файловой системы
Размер передается, как и во многих других утилитах, целым числом с указанием единиц измерения, например, 100М или 1G.
Для примера уменьшим размер нашего раздела до 400 Мегабайт:
Проверка файловой системы Linux
При неправильном отключении носителей или неожиданном отключении питания, файловая система Linux может быть повреждена. Обычно проверка корневой файловой системы и домашнего каталога на ошибки выполняется во время загрузки. Но если эта проверка не была выполнена или нужно поверить другой носитель, придется все делать вручную. Для этого есть утилита fsck.
Синтаксис fsck:
$ fsck устройство
Опции программы:
- -p — автоматическое восстановление
- -n — только проверка, без восстановления
- -y — ответить да на все запросы программы
- -с — проверить на битые сектора (аналог badblocks
- -f — принудительная проверка, даже если раздел помечен как чистый
- -j — внешний журнал файловой системы
Проверка файловой системы Linux выполняется такой командой, проверим диск /dev/sda6, заметьте, что диск должен быть не примонтирован:
Дефрагментация файловой системы
Хотя и фрагментация нехарактерное явление для файловых систем семейства ext, при очень интенсивном использовании может накапливаться фрагментированость, что будет замедлять работу файловой системы. Для дефрагментации можно использовать стандартную утилиту e4defrag. Просто выполните:
Чтобы проверить нужна ли дефрагментация в Linux выполните эту же команду с опцией -c:
В поле Fragmentation score отображен процент фрагментации, как видите, у меня 0, нормой считается до 30, 31-55 небольшие проблемы, и больше 56 — нужна дефрагментация.