В системном администрировании порой возникают ситуации, когда необходимо работать с параметрами накопителей. В частности с настройкой жестких дисков, проводить оценку их состояния, производительности, а также в некоторых случаях оптимизировать их режимы работы. Для решения подобных задач в Linux-системах в помощь системным администраторам существует утилита hdparm.
Основные возможности hdparm
В утилиту hdparm изначально заложены широкие возможности для настройки дисков. Она также может использоваться и для безопасного стирания дисков. Но основное её предназначение — это получение информации и параметров жестких дисков. А также управление ими путём взаимодействия со встроенными в устройства микропрограммами. В том числе и S.M.A.R.T.
Командой hdparm легко управлять настройками электропитания, настраивать акустические параметры, получать подробную информацию об устройстве и его состоянии, защищать накопители установкой флага «только для чтения», а также выполнять тесты производительности. Утилита поддерживает работу с устройствами IDE, SATA, SAS, а также SCSI.
Обычно утилита hdparm предустановлена в большинстве систем «из коробки». По крайней мере соответствующий пакет всегда присутствует в репозиториях используемого дистрибутива. Для Dbian-ориентированных систем:
$ sudo apt-get install hdparm
Для RPM-систем (CentOS, Red Hat Linux):
$ sudo yum install hdparm
Полное имя пакета может отличаться от приведённого, либо hdparm может включаться в состав метапакетов, как это бывает для серверных систем. Эту информацию следует уточнять для конкретного дистрибутива.
Синтаксис и основные опции
Синтаксис использования команды hdparm следующий:
hdparm [параметры] устройство
Несмотря на то, что hdparm обладает широким функционалом и для команды доступен огромный набор опций. Следует заметить, что подавляющая часть из них предназначена (или по крайней мере особенно полезна) для разработчиков ПО, драйверов, а также тестировщиков. Однако определённый набор опций hdparm часто используется для задач по системному администрированию Linux/UNIX. Это демонстрирует следующая таблица:
Опция | Описание |
-I | Информация о накопителе и его состоянии |
-M значение | Задаёт акустические параметры |
-S значение | Задаёт задержку перед отключением устройства (режим ожидания) |
-y | Немедленно переводит устройство в режим ожидания |
-C | Отправка запросов о текущем состоянии системы электропитания устройства |
-T | Быстрое тестирование пропускной способности устройства (работа с кешем, без чтения с пластин) |
-t | Быстрое тестирование скорости считывания данных с пластин устройства |
К примеру, если нужно проверить, в каком режиме DMA работает жесткий диск, достаточно дать команду:
$ sudo hdparm -I /dev/sdc /dev/sdc: ATA device, with non-removable media Model Number: ST3344888SS Serial Number: 5AA00X77 Firmware Revision: 3.AAC Standards: Supported: 7 6 5 4 Likely used: 7 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 312581808 Logical Sector size: 512 bytes Physical Sector size: 512 bytes device size with M = 1024*1024: 152627 MBytes device size with M = 1000*1000: 160041 MBytes (160 GB) cache/buffer size = 8192 KBytes Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, no device specific minimum R/W multiple sector transfer: Max = 16 Current = 16 Recommended acoustic management value: 208, current value: 0 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns
Данный вывод содержит много и другой полезной информации об устройстве. Но интересующие режимы DMA представлены в секции «Capabilities» в подразделе DMA. Утилита hdparm перечисляет все поддерживаемые режимы и отмечает звёздочкой текущий используемый, что и можно наблюдать в данном выводе. На самом деле в современных системах подходящие режимы DMA устанавливаются автоматически. И данная опция требует настройки в самых редких случаях и может свидетельствовать разве что о наличии неисправностей оборудования или несовместимой конфигурации.
В некоторых случаях требуется настроить акустические характеристики жестких дисков. Которые слишком громко издают щелчки во время перемещения головок. А когда таких дисков много в одном стеке, то такие мероприятия становятся необходимостью. Большинство производителей предусматривают в своих устройствах возможность настройки акустических параметров в целях снижения шума от них. Или может возникнуть обратная ситуация, когда следует отключать возможность регулировки шума устройств (поскольку это может сказываться на производительности), например для изолированных серверных помещений шум особого значения (главное, чтобы при этом не возникало акустических вибраций вследствие резонансных явлений) не имеет. Функция снижения шума от работы накопителей работает довольно просто — приводами головок снижается скорость их перемещения, что и уменьшает существенно громкость тиканья и скрежетов. Все современные накопители (жесткие диски) поставляются по-умолчанию с уже включенной функцией шумоподавления и поэтому, если вдруг понадобилось эту функцию отключить, то нужно выполнить команду hdparm -M 254. Значение 128 включает «тихий режим», 0 — самый громкий и, соответственно, самый быстрый.
Управление питанием
Если необходимо для экономии электроэнергии отключать неактивные какое-то время накопители, то стоит воспользоваться командой:
$ sudo hdparm -S 120
Данная команда указывает накопителю, что он должен переходить в режим ожидания (замедляя вращения пластин оборотами двигателя) через 10 минут. Тут есть некоторая нелинейность в задании параметра тайм-аута перед отключением после неактивного простоя накопителя. Значения от 1 до 240 умножаются на 5 сек., значения от 241 до 250 — на 20 минут (в некоторых системах на 30), это связано с особенностями кодирования данного параметра для микропрограммы управления накопителем, поэтому в управлении питанием дисков арифметика как нельзя кстати.
Тестирование производительности
Ещё одной полезной опцией hdparm является возможность проведения быстрых тестов скорости работы с передачей данных, причём для режима передачи по шине и непосредственно задействовав физические механизмы накопителя. Например, следующая команда покажет соответствующие скорости работы для накопителя /dev/sdb:
$ sudo hdparm -Tt /dev/sdb /dev/sdc: Timing cached reads: 23646 MB in 2.00 seconds = 11839.11 MB/sec Timing buffered disk reads: 224 MB in 3.02 seconds = 74.11 MB/sec
Данный вывод показывает (и это вполне ожидаемо), что скорость чтения кешированных данных по шине гораздо быстрее, чем во время работы непосредственно с пластинами накопителя. По значению скорости чтения буфера диска (параметр -t) можно судить о том, правильно ли настроен диск. В данном случае диск довольно «старый», поэтому этот показатель невысокий. Хотя и соответствует характеристикам данного накопителя. Для современных же жестких дисков значение скорости чтения данных с пластин должно быть около 100 МБ/сек.