Как узнать скорость передачи данных на жестком диске в Linux
Это руководство научит вас, как узнать скорость передачи данных на жестком диске в Linux. Другими словами, мы собираемся определить, насколько быстро ваш жесткий диск доставляет данные в Linux и Unix-подобных операционных системах.
Мы также поговорим о других полезных вещах, таких как количество секторов, которые жесткий диск может читать одновременно, функция упреждающего чтения, акустический режим, кэширование обратной записи, бенчмаркинг жесткого диска и т. д.
В рамках данного руководства мы будем использовать утилиту командной строки hdparm
для проверки скорости чтения и записи жесткого диска и проверки производительности жесткого диска.
На случай, если вы это пропустили, мы уже использовали утилиту hdparm
для нахождения сведений о жестком диске в Linux. Теперь мы воспользуемся той же утилитой hdparm
для измерения скорости передачи данных на жестком диске.
Предупреждение
Несмотря на то, что hdparm
предлагает значительные преимущества для повышения производительности диска, он также ЧРЕЗВЫЧАЙНО ОПАСЕН. Очень вероятно, что это приведет к массовой потере данных при неправильном использовании некоторых параметров. В документации hdparm указано, что ВАМ НЕ СЛЕДУЕТ ИСПОЛЬЗОВАТЬ НЕКОТОРЫЕ КОМАНДЫ НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ. Поэтому я исключил такие опасные команды из этого руководства. Что еще более важно, всегда рекомендуется создавать резервную копию жесткого диска перед тестированием жесткого диска с помощью hdparm
в вашей системе Linux.
Найдите скорость передачи данных на жестком диске в Linux
Чтобы проверить скорость передачи данных жесткого диска в Linux, запустите команду "hdparm"
с флагом -t
, как показано ниже:
sudo hdparm -t /dev/sda
Пример вывода:
/dev/sda:
Timing buffered disk reads: 246 MB in 3.00 seconds = 81.97 MB/sec
Проверьте скорость жесткого диска с помощью команды hdparm в Linux
Как видите, скорость передачи данных составляет 81,97 МБ в секунду. Убедитесь, что в фоновом режиме не работают другие программы.
Запустите команду hdparm
как минимум два или три раза и по результатам рассчитайте среднюю скорость передачи данных вашего накопителя.
Как видно из приведенного выше вывода, ядро Linux помещает данные, полученные с жесткого диска, в буфер при передаче данных. Если вы хотите измерить более точную скорость передачи данных, используйте:
sudo hdparm -t --direct /dev/sda
Пример вывода:
/dev/sda:
Timing O_DIRECT disk reads: 242 MB in 3.02 seconds = 80.21 MB/sec
Теперь программа hdparm
не будет использовать буфер и будет считывать данные непосредственно с жесткого диска. Как вы заметили в приведенном выше выводе, скорость передачи данных без буфера снизилась.
Hdparm
всегда будет считывать данные с начала устройств хранения. Если вы хотите, чтобы hdparm
считывал данные из другой области устройства хранения, вы можете использовать параметр "offset"
, как показано ниже.
sudo hdparm -t --direct --offset 10 /dev/sda
Здесь 10
означает количество пропущенных гигабайт. Согласно приведенной выше команде, первые 10 ГБ
будут пропущены при чтении данных с диска. На диске 20 ГБ
приведенная выше команда доставит данные из середины диска.
Пример вывода:
dev/sda:
Timing O_DIRECT disk reads (offset 10 GB): 244 MB in 3.01 seconds = 81.15 MB/sec
Найдите скорость передачи данных на жестком диске в Linux
Сравните скорость передачи данных жесткого диска со значениями смещения и без них. Когда мы использовали параметр "offset"
во второй команде, скорость передачи снизилась. Следовательно, кажется, что жесткие диски доставляют данные из внешних областей дисков немного медленнее.
Узнайте, сколько секторов читает жесткий диск
Обычно жесткий диск считывает несколько секторов одновременно, чтобы ускорить передачу данных. Вы можете найти это значение, выполнив:
sudo hdparm -I /dev/sda
В разделе "Возможности"
вы увидите вывод, как показано ниже.
[...]
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
Advanced power management level: 254
Recommended acoustic management value: 208, current value: 208
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
[...]
Согласно приведенному выше выводу, мой жесткий диск считывает 16 секторов
за раз.
Некоторые современные жесткие диски могут извлекать сектора заранее. Эта функция называется "читать вперед"
. Вы можете найти это значение, используя флаг "-a"
, как показано ниже:
sudo hdparm -a /dev/sda
Пример вывода:
/dev/sda:
readahead = 256 (on)
Как вы видите в приведенном выше выводе, жесткий диск может заранее прочитать 256
секторов.
Переведите жесткий диск в тихий режим, чтобы увеличить время доступа.
Мы можем замедлить движение головки некоторых современных жестких дисков. Замедление движения головы снизит уровень шума и увеличит время доступа.
Чтобы проверить, поддерживает ли ваш жесткий диск эту функцию "акустического режима"
, запустите:
sudo hdparm -M /dev/sda
Если ваш привод поддерживает акустический режим, вы должны получить результат, как показано ниже.
/dev/sda:
acoustic = 208 (128=quiet ... 254=fast)
проверьте, поддерживает ли жесткий диск акустический режим
Текущее значение акустического режима в моей системе — 208
. Значения акустического режима можно установить в диапазоне от 128
до 254
.
Чтобы перевести HDD в тихий режим, запустите:
sudo hdparm -M 128 /dev/sda
Чтобы ускорить движение головы, выполните:
sudo hdparm -M 254 /dev/sda
Обратите внимание, что ваша операционная система должна поддерживать эту функцию.
Если эта функция не поддерживается, вы увидите следующее:
dev/sda:
acoustic = not supported
Кэширование обратной записи
Когда включен режим кэширования с обратной записью, жесткий диск помещает данные для записи в буфер. Таким образом, жесткий диск сможет писать быстрее.
Чтобы проверить, включен ли режим кэширования с обратной записью, используйте флаг «-W».
sudo hdparm -W /dev/sda
Пример вывода:
/dev/sda:
write-caching = 1 (on)
Если выходное значение равно 1, функция кэширования обратной записи включена. Если он равен 0, кэширование обратной записи отключено. Вы можете включить его с помощью команды:
sudo hdparm -W1 /dev/sda
Если hdparm не может включить эту функцию, убедитесь, что в вашем BIOS включена функция кэширования обратной записи.
Чтобы отключить его, просто используйте:
sudo hdparm -W0 /dev/sda
Несмотря на то, что кэширование записи увеличивает скорость записи, в некоторых ситуациях его не рекомендуется использовать.
Например, при внезапном отключении питания данные в буфере будут безвозвратно потеряны. Поэтому вам не следует включать функцию кэширования обратной записи при запуске программ баз данных, таких как PostgreSQL.
Тестирование жесткого диска из командной строки
Чтобы протестировать жесткий диск и проверить скорость чтения диска, используйте вместе флаги "T"
в верхнем регистре и в нижнем регистре "t"
, как показано ниже.
sudo hdparm -Tt /dev/sda
Пример вывода:
/dev/sda:
Timing cached reads: 7232 MB in 1.99 seconds = 3629.42 MB/sec
Timing buffered disk reads: 250 MB in 3.01 seconds = 82.99 MB/sec
Тестирование жесткого диска из CLI в Linux
Повторите эту команду как минимум 2-3 раза, чтобы получить значимый результат.
Для получения более подробной информации посетите справочные страницы.
man hdparm
Проверьте жесткий диск с помощью графической утилиты GNOME Disks.
Если вам не нравится командная строка, программа GNOME Disks с графическим интерфейсом также позволяет нам тестировать жесткие диски.
Откройте «Диски» из меню или тире. Выберите диск, который хотите протестировать, нажмите три точки и выберите опцию «Протестировать диск».
Тестирование жестких дисков с помощью GNOME Disks
Нажмите кнопку Начать тестирование, чтобы начать тестирование:
Запустите тестирование с помощью дисков GNOME в Linux
Заключение
В этом руководстве мы обсудили, как узнать скорость передачи данных на жестком диске в Linux (т. е. насколько быстро жесткий диск доставляет данные). Мы также рассмотрели, как протестировать жесткий диск в режиме командной строки и графическом режиме с помощью утилиты Gnome Disks GUI.
Рекомендуемое изображение с сайта Pixabay.