Чтобы оценить скорость работы дисков в Linux, вы можете использовать бенчмарки, выполнять операции ввода-вывода с помощью стандартных инструментов и оценивать общую производительность диска по времени, которое требуется этим инструментам для чтения или записи файлов на диск.
В Linux для этих целей часто используются два инструмента командной строки - hdparm и dd. hdparm может не быть предустановленным в большинстве дистрибутивов Linux, и его нужно будет сначала установить, в то время как dd поставляется уже готовым к использованию. Вы можете легко установить hdparm через стандартный репозиторий менеджера пакетов вашего дистрибутива.
Оба инструмента являются инструментами командной строки и работают с различными устройствами хранения данных, такими как магнитные или твердотельные диски.
Шаги по определению скорости работы диска в Linux с помощь hdparm
Откройте терминал.
Установите пакет hdparm с помощью менеджера пакетов вашего дистрибутива.
1 | sudo apt update && sudo apt install --assume-yes hdparm |
1 | sudo dnf install hdparm |
Посмотрите список доступных жестких дисков в системе.
1 | lsblk |
Пример вывода:
1 2 3 4 5 6 7 | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ... sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 513M 0 part /boot/efi └─sda3 8:3 0 19.5G 0 part / sr0 11:0 1 1024M 0 rom |
Выполните эталонный тест на выбранном диске с помощью hdparm.
1 | sudo hdparm -tT /dev/sda |
Запустите hdparm еще раз с опцией direct, чтобы обойти дисковый кэш и измерить производительность необработанного диска.
1 | sudo hdparm -tT --direct /dev/sda |
Дополнительные возможности для hdparm
Использование:
1 | hdparm [options] [device ...] |
Опции:
- -a Получить/установить флаг чтения fs
- -A Получить/установить флаг опережающего просмотра диска (0/1)
- -b Получить/установить состояние шины (0 == off, 1 == on, 2 == tristate)
- -B Установка параметров расширенного управления питанием (1-255)
- -c Получение/установка настроек 32-битного ввода-вывода IDE
- -C Проверка состояния режима питания накопителя
- -d Получить/установить флаг using_dma
- -D Включить/выключить управление дефектами диска
- -E Установка скорости cd/dvd-привода
- -f Промыть буферный кэш для устройства при выходе
- -F Промыть кэш записи диска
- -g Отображение геометрии диска
- -h Отображение краткой информации об использовании
- -H Считывание температуры с диска (только для Hitachi)
- -i Отображение идентификации диска
- -I Подробная/текущая информация непосредственно с диска
- -J Получение/установка таймаута Western DIgital "Idle3" для диска WDC "Green" (ОПАСНО)
- -k Получить/установить флаг keep_settings_over_reset (0/1)
- -K Установить флаг keep_features_over_reset привода (0/1)
- -L Установка блокировки двери диска (0/1) (только для съемных жестких дисков)
- -m Получить/установить счетчик нескольких секторов
- -M Получить/установить управление акустикой (0-254, 128: тихо, 254: быстро)
- -n Получение/установка флага игнорирования ошибок записи (0/1)
- -N Получить/установить максимальное видимое количество секторов (HPA) (ОЧЕНЬ ОПАСНО)
- -p Установить режим PIO на чипсете интерфейса IDE (0,1,2,3,4,...)
- -P Установить счетчик предварительной выборки диска
- -q Изменить следующую настройку в тихом режиме
- -Q Получить/установить глубину очереди DMA (если поддерживается)
- -r Получить/установить флаг устройства, доступного только для чтения (опасно устанавливать)
- -R Получить/установить флаг записи-чтения-проверки устройства
- -s Установить флаг включения питания в режиме ожидания (0/1) (ОПАСНО)
- -S Установка таймаута перехода в режим ожидания (spindown)
- -t Выполните тайминги чтения устройства
- -T Выполнить тайминги чтения кэша
- -u Получить/установить флаг unmaskirq (0/1)
- -U Устаревший
- -v Использовать значения по умолчанию; то же, что и -acdgkmur для IDE-дисков
- -V Отображение версии программы и немедленный выход
- -w Выполнить сброс устройства (ОПАСНО)
- -W Получить/установить флаг кэширования записи на диск (0/1)
- -x Устаревший
- -X Установить режим IDE xfer (ОПАСНО)
- -y Перевести диск в режим ожидания
- -Y Перевести диск в спящий режим
- -z Перечитать таблицу разделов
- -Z Отключить режим автоматического энергосбережения Seagate
- --dco-freeze Замораживание/блокировка текущей конфигурации устройства до следующего цикла питания
- --dco-identify Чтение/выгрузка данных идентификации конфигурации устройства
- --dco-restore Возврат конфигурации устройства к заводским настройкам по умолчанию
- --dco-setmax Использование DCO для установки максимального количества адресуемых секторов
- --direct Использование O_DIRECT для обхода страничного кэша для определения таймингов
- --drq-hsm-error Обрушение системы с ошибкой "stuck DRQ" (ОЧЕНЬ ОПАСНО)
- --fallocate Создать файл без записи данных на диск
- --fibmap Показать экстенты устройства (и фрагментацию) для файла
- --fwdownload Загрузить файл прошивки на диск (ЧРЕЗВЫЧАЙНО ОПАСНО)
- --fwdownload-mode3 Загружать прошивку, используя сегменты минимального размера (Чрезвычайно опасно)
- --fwdownload-mode3-max Загрузка прошивки с использованием сегментов максимального размера (ЧРЕЗВЫЧАЙНО ОПАСНО)
- --fwdownload-mode7 Загрузка прошивки с использованием одного сегмента (Чрезвычайно опасно)
- --fwdownload-modee Загрузка прошивки с использованием режима E (минимальный размер сегментов) (ЧРЕЗВЫЧАЙНО ОПАСНО)
- --fwdownload-modee-max Загрузка прошивки в режиме E (сегменты максимального размера) (ЧРЕЗВЫЧАЙНО ОПАСНО)
- --idle-immediate Немедленно отключить диск
- --idle-unload Немедленный простой и выгрузка головок
- --Iraw filename Запись необработанных двоичных идентификационных данных в указанный файл
- --Istdin Чтение идентификационных данных из stdin в формате ASCII hex
- --Istdout Запись идентификационных данных в stdout в формате ASCII hex
- --make-bad-sector Преднамеренное повреждение сектора непосредственно на носителе (ОЧЕНЬ ОПАСНО)
- --offset используется вместе с -t, чтобы начать тайминги с заданного смещения (в гигабайтах) от начала диска
- --prefer-ata12 По возможности используйте 12-байтовые (вместо 16-байтовых) команды SAT.
- --read-sector Чтение и сброс (в шестнадцатеричном формате) сектора непосредственно с носителя.
- --repair-sector Псевдоним для опции --write-sector (ОЧЕНЬ ОПАСНО)
- --sanitize-antifreeze-lock Блокировать команду sanitize-freeze-lock до следующего цикла питания
- --sanitize-block-erase Запуск операции стирания блока
- --sanitize-crypto-scramble Изменение внутренних ключей шифрования для используемых данных
- --sanitize-freeze-lock Блокировка функций дезинфекции диска до следующего цикла питания
- --sanitize-overwrite PATTERN Перезапись внутреннего носителя с постоянным PATTERN
- --sanitize-status Отображение информации о состоянии санитарной обработки
- --security-help Отображение справки по командам безопасности ATA
- --set-sector-size Изменить размер логического сектора диска
- --trim-sector-ranges Указать микропрограмме SSD на отбрасывание ненужных секторов данных: lba:count ...
- --trim-sector-ranges-stdin То же, что и выше, но считывает пары lba:count из stdin
- --verbose Отображение дополнительной диагностики некоторых команд
- --write-sector Восстановление/перезапись (возможно, плохого) сектора непосредственно на носителе (ОЧЕНЬ ОПАСНО)
Шаги по определению скорости работы диска в Linux с помощь dd
С помощью dd создайте файл для оценки скорости записи на диск.
1 | sudo dd if=/dev/zero of=benchmark.img bs=1G count=5 status=progress |
Удалите временный файл, созданный dd.
1 | rm benchmark.img |
Больше возможностей для dd
- bs=BYTES чтение и запись до BYTES байт за раз (по умолчанию: 512); переопределяет ibs и obs
- cbs=BYTES преобразование байтов BYTES за раз
- conv=CONVS преобразовать файл в соответствии со списком символов, разделенных запятыми
- count=N копировать только N входных блоков
- ibs=BYTES читать до BYTES байт за раз (по умолчанию: 512)
- if=FILE чтение из FILE, а не из stdin
- iflag=FLAGS чтение в соответствии со списком символов, разделенных запятыми
- obs=BYTES записывать по BYTES байт за раз (по умолчанию: 512)
- of=FILE запись в ФАЙЛ вместо stdout
- oflag=FLAGS запись в соответствии со списком символов, разделенных запятыми
- seek=N пропустить N блоков размера obs в начале вывода
- skip=N пропускать N блоков размера ibs в начале ввода
- status=LEVEL УРОВЕНЬ информации для печати в stderr;
- 'none' подавляет все, кроме сообщений об ошибках,
- 'noxfer' подавляет финальную статистику передачи,
- 'progress' показывает периодическую статистику передачи.