Работа с дисками: различия между версиями
Asdf (обсуждение | вклад) (Дополнительное пояснение про рандомность назначения имён /dev/sdX.) |
|||
(не показано 9 промежуточных версий 1 участника) | |||
Строка 75: | Строка 75: | ||
Для SATA-устройств (так же как и для SCSI) чёткого порядка именования нет, устройствам выдаются имена sda,sdb,... в порядке их обнаружения системой. | Для SATA-устройств (так же как и для SCSI) чёткого порядка именования нет, устройствам выдаются имена sda,sdb,... в порядке их обнаружения системой. | ||
Порядок обнаружения системой может рандомно отличаться при каждой последующей перезагрузке системы, поэтому по умолчанию полагаться на соответствие конкретному устройству имени /dev/sdb, например, как и любому прочему /dev/sdX, нельзя. | |||
=== Как пользоваться smartctl === | === Как пользоваться smartctl === | ||
Строка 97: | Строка 99: | ||
* Vitaly Lipatov | * Vitaly Lipatov | ||
== Частая парковка диска == | == Частая парковка головок жесткого диска == | ||
На некотором оборудовании под управлением Альт могут появиться щелчки жесткого диска. Это звук парковки головок жесткого диска. Парковка является функцией контроллера жесткого диска, и производится с целью сбережения энергии и защиты головок от повреждений при ударах. Частая парковка головок приводит к увеличению счетчика S.M.A.R.T. <code>Load_Cycle_Count</code>, и, теоретически, может привести к сокращению ресурса жесткого диска. Проблема особенно характерна для дисков WD Green. Если диск всё время паркуется, а потом опять включается (слышно, что каждые 5-15 секунд щёлкает), нужно либо настроить ОС, чтобы не было принудительной парковки так часто, либо настроить диск, чтобы он не занимался (так часто) автопарковкой. | |||
Проверить, есть ли проблема (<code>smartctl</code> работает от имени '''root'''): | |||
$ su - | |||
# smartctl -a /dev/sdX | grep Load_Cycle_Count | |||
где sdX - имя нужного жесткого диска в системе. | |||
На диске, на котором когда-то не сразу была выключена автопарковка, 241232 автопарковки: | |||
193 Load_Cycle_Count 0x0032 120 120 000 Old_age Always - 241232 | |||
=== Hdparm === | |||
hdparm из одноимённого пакета поддерживает управление временем автопарковки: | <code>hdparm</code> - программа для получения/установки параметров устройств SATA/IDE - из одноимённого пакета, которая поддерживает управление временем автопарковки: | ||
Проверить, что установлено: | Проверить, что установлено (<code>hdparm</code> работает от имени '''root'''): | ||
$ su - | |||
# hdparm -J /dev/sdX | # hdparm -J /dev/sdX | ||
Выключить: | Выключить: | ||
# hdparm -J0 --please-destroy-my-drive /dev/sdX | # hdparm -J0 --please-destroy-my-drive /dev/sdX | ||
Настройка диска (команда idle3ctl из пакета idle3-tools) | Настройка диска (команда idle3ctl из пакета idle3-tools) | ||
Строка 125: | Строка 130: | ||
* https://forum.altlinux.org/index.php?topic=29692.105 | * https://forum.altlinux.org/index.php?topic=29692.105 | ||
* https://bugs.etersoft.ru/show_bug.cgi?id=9438 | * https://bugs.etersoft.ru/show_bug.cgi?id=9438 | ||
Если указанный выше способ не сработал, можно отключить парковку головок жесткого диска через функцию '''APM (расширенного управления питанием)''' жесткого диска. | |||
Сначала нужно узнать, какой уровень управления энергопитанием установлен: | |||
$ su - | |||
# hdparm -B /dev/sdX | |||
где sdX - имя нужного жесткого диска в системе. | |||
Возможные значения варьируются от 1 до 254. Наивысшая степень управления питанием достигается при значении 1, а наивысшая производительность ввода-вывода - при значении 254. Значение 255 указывает <code>hdparm</code> на полное отключение расширенного управления питанием на диске (не все диски поддерживают его отключение, но большинство поддерживают). | |||
Для настройки APM при загрузке — создаем исполняемый файл <code>[[rc.local]]</code>: | |||
$ su - | |||
# echo '#!/bin/sh' > /etc/rc.d/rc.local | |||
# chmod +x /etc/rc.d/rc.local | |||
В этот файл добавляем строчку: | |||
hdparm -B 254 /dev/sda | |||
Для настройки APM при выходе из ждущего режима — создаем файл <code>/etc/systemd/system/root-resume.service</code>: | |||
# touch /etc/systemd/system/root-resume.service | |||
В этот файл добавляем строчки: | |||
[Unit] | |||
Description=Local system resume actions | |||
After=suspend.target | |||
[Service] | |||
Type=simple | |||
ExecStart=/sbin/hdparm -B 254 /dev/sda | |||
[Install] | |||
WantedBy=suspend.target | |||
И выполняем команду: | |||
# systemctl enable root-resume | |||
Для настройки APM при выходе из спящего режима — создаем файл <code>/etc/systemd/system/root-resume-sleep.service</code>: | |||
# touch /etc/systemd/system/root-resume-sleep.service | |||
В этот файл добавляем строчки: | |||
[Unit] | |||
Description=Local system resume actions | |||
After=hibernate.target | |||
[Service] | |||
Type=simple | |||
ExecStart=/sbin/hdparm -B 254 /dev/sda | |||
[Install] | |||
WantedBy=hibernate.target | |||
И выполняем команду: | |||
# systemctl enable root-resume-sleep | |||
=== Ссылки === | === Ссылки === | ||
Строка 133: | Строка 200: | ||
* [http://offline.computerra.ru/ http://offline.computerra.ru/] - указать ссылку, когда сделают | * [http://offline.computerra.ru/ http://offline.computerra.ru/] - указать ссылку, когда сделают | ||
* [http://smartmontools.sourceforge.net/BadBlockHowTo.txt http://smartmontools.sourceforge.net/BadBlockHowTo.txt] | * [http://smartmontools.sourceforge.net/BadBlockHowTo.txt http://smartmontools.sourceforge.net/BadBlockHowTo.txt] | ||
* [https://forum.altlinux.org/index.php?topic=36532.0 https://forum.altlinux.org - Тема: Устраняем частую парковку головок HDD] | |||
=== [[Документация/FreeBSD|FreeBSD]] === | === [[Документация/FreeBSD|FreeBSD]] === |
Текущая версия от 09:48, 31 октября 2023
Работа с дисками
См. также ТестированиеКомпьютера
Не рекомендуется использовать программы fdisk/cfdisk для первичного разбиения диска, один из разделов в котором предназначен для загрузки Windows. Используйте parted.
0. Создать загрузочную запись См. man ms-sys или sys в DOS/Win95/Win98 или fixboot в консоли восстановления 2003
1. Увидеть, что пишет система о дисках при загрузке
# dmesg | grep sd
или, на старых (< 2.6.18) ядрах
# dmesg | grep hd
2. Вывести перечень всех разделов и всех дисков
# fdisk -l
либо команда
# blkid
3. Полная информация о диске
# hdparm -I /dev/sda
4. Вывести информацию о состоянии диска
# smartctl -a /dev/sda
Запустить внутренний тест диска
# smartctl -t short /dev/sda
или
# smartctl -t long /dev/sda
5. Программа работы с разделами диска
# parted /dev/sd?
6. Программы восстановления потерянных разделов
# testdisk (более user-friendly) # gpart (более могучая, но надо тщательно читать man)
7. Графическая программа для работы с разделами диска
$ qtparted
8. Вывод температуры диска
# hddtemp /dev/sda
9. Простая программа работы с разделами диска
# cfdisk
10. Восстановление файлов на разделе ext2
$ man recover
11. Сканирование диска на сбойные сектора (вместо badblocks)
# diskscan
12. Восстановление стёртых файлов с любых файловых систем
# photorec из пакета testdisk
Таблица соответствия устройств
Таблица соответствия IDE-устройств
Устройство | Подключение |
/dev/hda | Master на IDE0 (Primary) |
/dev/hdb | Slave на IDE0 (Primary) |
/dev/hdc | Master на IDE1 (Secondary) |
/dev/hdd | Slave на IDE1 (Secondary) |
Для SATA-устройств (так же как и для SCSI) чёткого порядка именования нет, устройствам выдаются имена sda,sdb,... в порядке их обнаружения системой.
Порядок обнаружения системой может рандомно отличаться при каждой последующей перезагрузке системы, поэтому по умолчанию полагаться на соответствие конкретному устройству имени /dev/sdb, например, как и любому прочему /dev/sdX, нельзя.
Как пользоваться smartctl
# smartctl -a /dev/sda
Смотрим на следующие параметры:
1 Raw_Read_Error_Rate 0x000b 100 100 051 Pre-fail Always - 11 5 Reallocated_Sector_Ct 0x0033 051 051 010 Pre-fail Always - 101 7 Seek_Error_Rate 0x000b 253 253 051 Pre-fail Always - 0 197 Current_Pending_Sector 0x0033 253 253 010 Pre-fail Always - 0 198 Offline_Uncorrectable 0x0031 253 253 010 Pre-fail Offline - 0 200 Multi_Zone_Error_Rate 0x000b 100 100 051 Pre-fail Always - 0 201 Soft_Read_Error_Rate 0x000b 100 100 051 Pre-fail Always - 2
Если вкратце, то это все означает, что у вашего диска есть
с поверхностью диска и часть секторов уже переназначена на запасные (параметр Reallocated_Sector_Count), а часть вообще потеряна (параметр Offline_Uncorrectable). Когда первый параметр достигнет нуля, есть большая вероятность появления bad секторов. Но эта вероятность есть и сейчас, поскольку нет 100% вероятности, что переназначенный сектор содержит ту же информацию, что и раньше. Я бы вам посоветовал озаботиться сохранением всех важных данных на более надежном носителе.
Надо сказать, что диск в подобном состоянии вполне еще может послужит в качестве дискеты и выбрасывать его рано :):)
- Dmitry (Mothlike) Marochko
- Vitaly Lipatov
Частая парковка головок жесткого диска
На некотором оборудовании под управлением Альт могут появиться щелчки жесткого диска. Это звук парковки головок жесткого диска. Парковка является функцией контроллера жесткого диска, и производится с целью сбережения энергии и защиты головок от повреждений при ударах. Частая парковка головок приводит к увеличению счетчика S.M.A.R.T. Load_Cycle_Count
, и, теоретически, может привести к сокращению ресурса жесткого диска. Проблема особенно характерна для дисков WD Green. Если диск всё время паркуется, а потом опять включается (слышно, что каждые 5-15 секунд щёлкает), нужно либо настроить ОС, чтобы не было принудительной парковки так часто, либо настроить диск, чтобы он не занимался (так часто) автопарковкой.
Проверить, есть ли проблема (smartctl
работает от имени root):
$ su - # smartctl -a /dev/sdX | grep Load_Cycle_Count
где sdX - имя нужного жесткого диска в системе.
На диске, на котором когда-то не сразу была выключена автопарковка, 241232 автопарковки:
193 Load_Cycle_Count 0x0032 120 120 000 Old_age Always - 241232
Hdparm
hdparm
- программа для получения/установки параметров устройств SATA/IDE - из одноимённого пакета, которая поддерживает управление временем автопарковки:
Проверить, что установлено (hdparm
работает от имени root):
$ su - # hdparm -J /dev/sdX
Выключить:
# hdparm -J0 --please-destroy-my-drive /dev/sdX
Настройка диска (команда idle3ctl из пакета idle3-tools)
- idle3ctl -s 900 /dev/sda
- idle3ctl -d /dev/sda
Если указанный выше способ не сработал, можно отключить парковку головок жесткого диска через функцию APM (расширенного управления питанием) жесткого диска. Сначала нужно узнать, какой уровень управления энергопитанием установлен:
$ su - # hdparm -B /dev/sdX
где sdX - имя нужного жесткого диска в системе.
Возможные значения варьируются от 1 до 254. Наивысшая степень управления питанием достигается при значении 1, а наивысшая производительность ввода-вывода - при значении 254. Значение 255 указывает hdparm
на полное отключение расширенного управления питанием на диске (не все диски поддерживают его отключение, но большинство поддерживают).
Для настройки APM при загрузке — создаем исполняемый файл rc.local
:
$ su - # echo '#!/bin/sh' > /etc/rc.d/rc.local # chmod +x /etc/rc.d/rc.local
В этот файл добавляем строчку:
hdparm -B 254 /dev/sda
Для настройки APM при выходе из ждущего режима — создаем файл /etc/systemd/system/root-resume.service
:
# touch /etc/systemd/system/root-resume.service
В этот файл добавляем строчки:
[Unit] Description=Local system resume actions After=suspend.target [Service] Type=simple ExecStart=/sbin/hdparm -B 254 /dev/sda [Install] WantedBy=suspend.target
И выполняем команду:
# systemctl enable root-resume
Для настройки APM при выходе из спящего режима — создаем файл /etc/systemd/system/root-resume-sleep.service
:
# touch /etc/systemd/system/root-resume-sleep.service
В этот файл добавляем строчки:
[Unit] Description=Local system resume actions After=hibernate.target [Service] Type=simple ExecStart=/sbin/hdparm -B 254 /dev/sda [Install] WantedBy=hibernate.target
И выполняем команду:
# systemctl enable root-resume-sleep
Ссылки
- Диски WD с сектором 4Кб
- Всё о S.M.A.R.T
- "Как я оживлял Linux" - рассказ про использование gpart
- http://linuxcenter.ru/lib/books/partitioning/
- http://offline.computerra.ru/ - указать ссылку, когда сделают
- http://smartmontools.sourceforge.net/BadBlockHowTo.txt
- https://forum.altlinux.org - Тема: Устраняем частую парковку головок HDD
FreeBSD
На FreeBSD нет hdparm (smartctl есть). Вместо него используйте rawio, iozone, or bonnie. Также в базовой системе есть команда diskinfo.