Измерить скорость диска linux

Измерить скорость диска linux

Как измерить скорость жесткого диска

Иногда хочется быстро прикинуть, как работает дисковая подсистема, либо сравнить 2 жестких диска. Очевидно, что измерить реальную скорость дисков практически невозможно, она зависит от слишком большого числа параметров. Но получить некое представление о скорости дисков можно.

Проверка скорости чтения диска

Проще всего измерить скорость диска с помощью программы hdparm. Установить ее очень просто:

Теперь нужно вывести список дисков и разделов в системе:

Выбираем нужный раздел и проверяем скорость чтения:

Проверка скорости записи на диск

Для того, чтобы измерить скорость записи на диск, можно воспользоваться стандартной утилитой linux – dd. С ее помощью мы создадим на диске файл размером 1 Gb частями по 1Mb.

Измеряем скорость записи на диск:

Я измерял скорость на виртуальной машине, диск которой был размещен на RAID5, собранным из 5-ти дисков SAS 10к. В принципе, неплохой результат. Можно изменить размер файла и блоков, из которого он записывается. Если сделать файл побольше, результат скорости диска может получиться более приближенный к реальности.

А вот скорость диска на VDS, который я арендую. Результат в разы хуже:

Скорость диска на виртуальной машине, расположенной на втором SATA диске моего рабочего ноутбука:

Результат не очень, надо разбираться в чем дело. Давно возникли подозрения, что с диском что-то не то, заметно подтормаживают виртуальные машины, хотя раньше это было не заметно. Жаль, результатов более ранних тестов не сохранилось.

Интересно было бы посмотреть на ваши результаты тестов. Если же вы хотите серьезно измерить скорость дисков, то вам сюда – Как правильно мерять производительность диска.

Disk Speed Test (Read/Write): HDD, SSD Performance in Linux

From this article you’ll learn how to measure an input/output performance of a file system on such devices as HDD, SSD, USB Flash Drive etc.

I’ll show how to test the read/write speed of a disk from the Linux command line using dd command.

I’ll also show how to install and use hdparm utility for measuring read speed of a disk on Linux Mint, Ubuntu, Debian, CentOS, RHEL.

To get the accurate read/write speed, you should repeat the below tests several times (usually 3-5) and take the average result.

Cool Tip: How to choose SSD with the best quality/price relation! Read more →

dd: TEST Disk WRITE Speed

Run the following command to test the WRITE speed of a disk:

dd: TEST Disk READ Speed

To get the real speed, we have to clear cache.

Run the following command to find out the READ speed from buffer:

Clear the cache and accurately measure the real READ speed directly from the disk:

dd: TEST Read/Write Speed of an External Drive

Cool Tip: Have added a new drive to /etc/fstab ? No need to reboot! Mount it with one command! Read more →

To check the performance of some External HDD, SSD, USB Flash Drive or any other removable device or remote file-system, simply access the mount point and repeat the above commands.

Or you can replace tempfile with the path to your mount point e.g.:

Reminder: All the above commands use the temporary file tempfile . Don’t forget to delete it when you complete the tests.

hdparm: Test HDD, SSD, USB Flash Drive’s Performance

And it can also be used as a simple benchmarking tool that allows to quickly find out the READ speed of a disk.

hdparm is available from standard repositories on the most Linux distributions.

Install hdparm depending on your Linux distribution.

Cool Tip: Troubleshooting an issue with a hard drive performance? It will be a good idea also to test download/upload Internet speed. It can be easily done from the Linux command line! Read more →

On Linux Mint, Ubuntu, Debian:

On CentOS, RHEL:

Run hdparm as follows, to measure the READ speed of a storage drive device /dev/sda :

17 Replies to “Disk Speed Test (Read/Write): HDD, SSD Performance in Linux”

Anyone has hdparm version for Android?

“Reminder: All the above commands use the temporary file tempfile. Don’t forget to delete it when you complete the tests.”
I can not find any place where you instruct as to how to delete the tempfile. How is this done safely?

go to directory where you executed the command, in terminal:
““rm tempfile““
or in a gui select the file and delete it.

I must have done something wrong. I tested first with bs=4k and count=256k.
It finished quickly.
Afterwards I decided myself to alter the parameters like so: bs=1M and count=256k
I didn’t know exactly what I was doing. I left it running not having slightest hunch if it’s wrong to interrupt it via Ctrl-C. It run approximately 1000 seconds having written almost 100GB of all 150GB free on the SSD. Only then I’ve read the man pages searching for clues but still didn’t found. So I have a couple of questions if kindly allowed. That ‘k’ at the end of count I am not sure of it’s meaning or even if it makes sense. I have to also ask what would have happened if the command filled the whole free space? Would it have stopped by itself with message/error? Was it dangereous for an ssd doing this. The fact I performed it from sysresccd on ssd with Windows installed has any effect on outcome?
I mean the if = is it from the RAM memory? I specified an of= on the ssd after mounting it like /mnt/windows/some.output.file. Is the way I did it significant for the results?

> bs=4k and count=256k
k means what it always means: about 1,000, but in the case of computers (here), usually 1024. “bs” means block size, “count” means number of blocks. So this means write 4k x 256k bytes. 1k x 1k = 1 megabyte (about 1,000 x about 1,000 = about 1,000,000). How many megabytes? Since we already took care of the ‘k’s; 4x 256 = 1024 (aka about 1000, or 1k again.) What’s 1k x 1k x 1k? 1 gigabyte (about 1,000,000,000.) You wrote 1 gigabyte of zeros.

> bs=1M and count=256k

1M = (1k x 1k)
(1k x 1k) x 1k(the k from “count”) = 1 gigabyte
1 gigabyte x 256 = 256 gigabytes.

You were writing 256 gigabytes of zeros. Your drive is only 150 gigabytes in size. It won’t hurt your drive, it will just delete everything on your drive. When it fills your drive, it will stop.

The “if” is not from ram, it is a program (/dev/zero) in your system disguised as a file but whenever it is read is just endless zeros.

How to check sdb drive?
Should I use /dev/sdb instead of /dev/zero here:
sync; dd if=/dev/zero of=/media/user/MyUSB/tempfile bs=1M count=1024; sync

I think you missed the best software package for this kind of tests. It’s called fio:

It’s not accurate. The second sync does not influence the measurement (it’s being run after dd reports the results) and thus it’s influenced by caching. If you try the same test with 4096 or 8192 megs, you’ll have worse results (but closer to the reality).

One way to correct for this is measuring the whole process with the time command and then doing the division manually. E.g.:
# time (sync; dd if=/dev/zero of=tempfile bs=1M count=8192; sync)

You’ll see that dd will report a higher throughput, but you can then divide 8192 with whatever seconds time comes up with.

You need `conv=fdatasync` in your dd commands to include flush and sync time. Otherwise the results will be way too high, as others have mentioned.

Timing cached reads: 16830 MB in 1.99 seconds = 8454.99 MB/sec
Timing buffered disk reads: 434 MB in 3.01 seconds = 144.27 MB/sec

great post:) keep simple

Hello, after doing some tests with different “GB” my storage on NVMe was filled with 7% (56GB), can I delete that storage or stay there permanently?

Linux: проверка скорости чтения-записи HDD

На этом диске будут проводится тесты, описанные ниже:

Western Digital Caviar Green 500GB 64МB WD5000AZRX 3.5

О том, как получить подробные данные о вашем жестком диске — можно прочитать в статье Linux: получение информации о hardware — HDD.


Более подробную информацию об используемой файловой системе посмотреть можно с помощью tune2fs :

Конечно же, перед выполнением тестов убедитесь, что не запущены никакие задачи, создающие нагрузку на дисковую систему.

Самый простой способ проверки скорости чтения/записи на жесткий диск ( hard disk input/output value ):

Лучше выполнять его хотя бы 1-2 минуты. Почему — пояснение в следующих примерах:

424 МБ/с — по сравнению с 113 MB/s в предыдущем примере — почему такая разница?

dd вывел результат кеширования в буфер оперативной памяти, а не непосредственно на диск.

Укажем выполнить не 100 операций, а 1000 — что бы система успела выполнить синхронизацию RAM и HDD, после чего dd покажет нам результаты:

113 MB/s — тоже более реальный результат для это жесткого диска.

Другой способ — прямо указать dd дождаться окончания синхронизации данных (т.е. после фактического завершения операций записи/чтения данных на диск):

Теперь рассмотрим некоторые утилиты.


Начнём с программы hdparm :

Ключ -t ( Timing buffered disk) отображает скорость чтения с диска напрямую из буфера кеша, и является показателем того, как быстро жесткий диск может поддерживать последовательное чтение данных под Linux, без задержек, вызванных работой файловой системы.

Ключ -T (Timing cached reads) показывает скорость чтения напрямую из буфера кеша Linux без учёта доступа к диску. Этот показатель главным образом отображает работу процессора, кэша и оперативной памяти тестируемой системы.


Одним из очень важных параметров скорости работы жесткого диска является «seek time» — время поиска. Это время, которое требуется жестком диску, что бы считывающая головка достигла сектора, содержащего необходимые данные. Что бы проверить этот параметр — воспользуемся утилитой seeker :

К сожалению, что бы её запустить под Debian / Ubuntu придётся немного повозиться.

Для начала, качаем .rpm пакет с сайта:

Например, вполне работоспособным (на Ubuntu 12.04 x64) оказался пакет seeker-3.0-2.el6.x86_64.rpm для CentOS 5.

На следующей странцие http://pkgs.org/centos-5-rhel-5/epel-x86_64/seeker-3.0-2.el5.x86_64.rpm/download/ выбираем:

Download packages from the official mirror:
binary package, source package

binary — и сохраняем пакет .rpm на диск.

Далее, потребуется создать пакет .deb . Для этого можно воспользоваться утилитой alien . Как ей пользоваться — описано в статье Установка Java 7 на Ubuntu 12.10.


Следующая утилита — iozone , которая фактически умеет выполнять все тесты, описанные выше. В Ubuntu 12.04 она требует установки, поэтому выполняем:

Теперь запустим и рассмотрим результаты:

(тут показана лишь малая часть всего вывода)

Ключ -a запускает iozone в автоматическом режиме, в котором утилита будет использовать для тестирования block size от 4k до 16384k (16M), и размер файлов от 64k до 524288k (512M).

Все результаты скорости указаны в KB/Sec.

Первая колонка — KB отображает размер файла.
Вторая колонка — reclen — отображает используемый размер блока (block size).
Третья колнка — write — отображает время, затраченное на создание/запись нового файла. Это всегда более сложная задача для диска и файловой системы, так как связана с назначением inode , созданием новой записи в журнале событий (для Journaled File System ) и т.п.
Четвёртая колонка — rewrite — указывается скорость перезаписи уже существующего файла.
Пятая колонка — read — скорость чтения существующего файла.
Шестая колонка — reread — скорость чтения файла, который уже был прочитан ( reread file ).
Седьмая колонка — random read — показывает скорость доступа к случайной части (!) файла.

В целом, этих данных хватит для получения необходимых данных о быстродействии жесткого диска. Более подробные данные можно еполучить на сайте>>> разработчкиа.

Сохранить результаты можно с ключём -b (файл должен быть совсемстим с форматом эл. таблиц):

Есть ещё много утилит, однако на этом хочется закончить.

Основная часть этой статьи является вольным переводом (с некоторыми попавками в описаниях) статьи Linux File System Read Write Performance Test .

ИТ База знаний

Курс по Asterisk


— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix


Серверные решения


FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

15 примеров команды PING для диагностики сети

Руководство по команде grep в Linux

15 примеров CURL в Linux

rdiff: инкрементальное резервное копирование

Как расшарить папку в CentOS с помощью Samba

Настройка DHCP сервера на CentOS или Ubuntu

Смотрим открытые порты Linux

Grandstream GXW4108

Еженедельный дайджест

Работа с жесткими дисками в Linux

Как оно хранится?

10 минут чтения

В статье, мы разберем как работать в операционной системе Linux с HDD, Logical Volume и все что с этим связанно. А также рассмотрим утилиты для работы с HDD. Разберем, что такое LVM.


Те, кто читал пред идущие стати должны понимать, что в операционной системе есть определенные папки. Это стандартный набор папок. Сейчас обратим внимание на те папки, в которые могут быть смонтированы отдельные разделы. Это значит, что если мы видим в корневом разделе какую-либо папку, то не факт, что данная папка находится на том же жестком диске, что и соседние папки или даже сама корневая файловая система. Это могут быть отдельные жесткие диски или разделы жестких дисков, которые смонтированы в корневую файловую систему. Самый большой раздел — это сама корневая файловая система, обозначается символом «/» . Следующий раздел, который обычно находится отдельно — это «/boot«, загрузочный раздел, обычно он мегабайт на 100. Там хранятся файлы необходимые для загрузки операционной системы и само ядро. Можно данную директорию оставить на корневом разделе, но если у нас большой жесткий диск хотя бы на 1 ТБ, то старые диски его могут не увидеть при загрузке, поэтому хороший тон создавать отдельный раздел на жестком диске размером от 100 МБ.

Директория «/home» — это домашние папки пользователей. Это некий аналог папки в операционной системе Windows, такой как Documents and Settings или c:users. Это директория, где хранятся все папки пользователя. Его можно монтировать, как сетевую папку. Например, если у вас используются какие-нибудь перемещаемые профили. Пользователь работает на нескольких компьютерах и ему необходимо, что бы везде был одинаковый рабочий стол. Вот в таком случае было бы правильно хранить его домашнюю папку где-нибудь на сервере и просто ее монтировать как сетевую папку, предоставляя доступ к файлам.

Следующая папка, которая находится в корне — это «/root» она является домашней папкой суперпользователя, очень важная папка поэтому она хранится отдельно.

Папка «/etc» — в ней находится конфигурация нашей операционной системы и ее компонент. Так же бывает, что она находится на отдельных дисковых разделах. Мы конечно сами определяем при установке как разбить жесткий диск, но, если при установке мы ставим галочку в установщике, чтобы он автоматически разбил жесткий диск и создал разделы так, как он считает нужным.

Директория «/opt» в данной директории находится программное обеспечение от третьих поставщиков. Некоторые серверные дистрибутивы тоже хранят ее на отдельном логическом разделе.

Директория «/var» здесь хранятся все часто меняющиеся данные. Например, логи различного программного обеспечения или изменяющиеся программные данные. Возможно для этой директории имеет смысл использовать быстрые диски, например, SSD. Потому, что к ним будет идти очень частое обращение программного обеспечения.

Директория «/usr» в ней находятся все установленные пакеты программ, документация и исходный код ядра. Чаще всего данная директория смонтирована вообще в режиме «только чтения» и в принципе она может быть расположена вообще на каком ни будь медленном диске или папке в сети.

Директория «/tmp» предназначена для хранения временных файлов. Важной особенностью данной папки является то, что хранящиеся файлы в ней, будут удалены в случае перезагрузки машины. Т.е при перезагрузки данная папка очищается автоматически. Существует еще один отдельный раздел подкачки swap. Обычно операционная система windows использует файл подкачки, то Linux чаще всего использует раздел подкачки, хотя может использовать и файл. Данный раздел не монтируется в нашу файловую систему, он просто существует отдельно.

Как это выглядит в консоли.

Переходим в корневую директорию cd / . Вводим команду ls и видим, как все директории у нас отображаются. Все те папки о которых шла речь мы видим находятся в корневой директории, кроме раздела swap. Для того, чтобы посмотреть, что и куда смонтировано, то необходимо посмотреть специальный конфигурационный файл cat /etc/fstab

Для упрощения объяснения, мы под жестким диском будем понимать единое пространство, которое мы можем разбить на несколько частей. Изначально, компьютер не видел более 4-х разделов — этого считалось достаточно. Поэтому сейчас, изначально по умолчанию жесткий диск не может быть разбит на более чем 4 раздела. Если нам необходимо больше разделов, то необходимо создать так называемый расширенный раздел. И этот расширенный раздел уже будет содержать в себе несколько логических разделов.

В старых версиях Linux диски назывались hd0, hd1 и т.д, сейчас жесткие диски называются sda, т.е буквами. USB устройства у нас так же идентифицируются как жесткие диски. Разделы у нас нумеруются по порядку sda1, sda2 и т.д. Т.е. название раздела у нас состоит из буквы диска и номера раздела по порядку. Следовательно, первые 4 цифры зарезервированы и даются только основным разделам, именно поэтому логические разделы нумерация начинается с 5-ки. Основной утилитой для работы с разделами является утилита FDISK. Это утилита используется для разбивки жесткого диска. Так же есть утилита MKFS. Данная утилита используется для создания файловой системы. Мы можем посмотреть все существующие жесткие диски командой fdisk -l. При выводе данной команды мы можем видеть, что у нас 2 подключенных жестких диска sda и sdb. В выводе мы можем так же увидеть их физический объем. На первом диске sda, мы так же можем увидеть 2 раздела sda1 и sda2.

Начать работать со вторым жестким диском, необходимо сначала указать, как определенный файл. Устройства лежат в директории «/dev«. Пишем команду fdisk /dev/sdb

Получается следующая картина:

А нажав букву m мы можем получить доступ к справке по работе с данной утилитой. Как можно заметить функционал утилиты достаточно обширен. Можно добавлять партиции, можно удалять партиции. Следующим шагом необходимо создать новый раздел. Выбираем опцию n. Далее предлагается выбор primary или extended. Мы выбираем primary ключ p. Далее выбираем номер раздела 1-4. Например, 1. Далее система спрашивает где будет (на каком секторе) начинаться разметка раздела. Можно выбрать по умолчанию. На следующем шаге мы можем указать сектор, но это крайне неудобно, проще указать сколько мы хотим выделить под размер, например, +10G. И этот раздел станет 10 гигабайт.

Попробуем второй вариант с созданием раздела, он будет расширенный (extended). Выбираем ключ e, выбираем 2 раздел. Выбираем с какого сектора он начнется. Следующим шагом +8G. Мы создали расширенный диск на 8 GB. Далее создаем sdb3 на оставшихся 2 GB. А также 8GB расширенного диска разбиваем на 2 логических по 4 GB каждый. Все операции одинаковые. В после создания последнего раздела выбираем опцию w. Которая записывает все изменения.

В итоге

Прежде чем использовать эти разделы их необходимо отформатировать.

Если посмотреть на вывод команды, мы можем увидеть еще одно интересное поле с информацией Id — это метка этого раздела. Необходимо разобраться, как эти id менять. Используем опять утилиту fdisk /dev/sdb. Далее используем ключ t. Утилита предлагает выбрать номер раздела. Выбираем 1. Затем необходимо ввести id в шестнадцатеричном формате, список всех вариаций и их описание можно вывести командой L.

Можно заметить, что везде стоял по умолчанию 83 т.е. linux, мы можем изменить на любую метку, например, на 86 NTFS — windows раздел. 3 раздел пометим а5. Записываем изменения w. И можно все изменения увидеть через fdisk -l. Далее, чтобы пользоваться этими разделами, нам сначала их надо отформатировать. Чтобы это сделать используем утилиту mkfs. Набираем mkfs.ext4 , после точки указываем целевую , будет переформатирован раздел , а через пробел собственно сам раздел. Например mkfs.ext4 /dev/sdb5.

Теперь немного, о разделе подкачки swap.

Для работы с ним используется swapon и swapoff. Через первую команду мы можем включать раздел подкачки, добавлять разделы подкачки, а через вторую команду выключать. Так же есть утилита mkswap — которая позволяет создавать т.е. форматировать раздел, как раздел подкачки. А также у нас есть конфигурационный файл, расположенный в следующем месте /etc/fstab, в данном конфигурационном файле описывается монтирование файловых систем. Соответственно можно примонтировать разделы в ручном режиме, но если мы хотим, чтобы при загрузке разделы сами монтировались, то необходимо конфигурировать файл /etc/fstab/

Командой swapon -s, мы можем посмотреть информацию по своп разделу.

Чтобы добавить новый своп раздел, то нам необходимо через команду fdisk создать новый раздел и указать , что он именно своповский раздел, потом его необходимо отфарматировать и примонтировать раздел.

Командой cat /etc/fstab мы можем посмотреть, какие разделы монтируются при загрузке. Выглядит это примерно так:

Мы видим, что вот этот раздел с uuid 50cee6ca-cbd2-454b-a835-2614bf2e9d5d монтируется в корень, знак «/» об этом говорит и имеет файловую систему ext4. Uuid смотрим с помощью команды blkid. Раздел подкачки, как и файл подкачки — это место на диске, которое используется, как RAM. Если у нас не хватает оперативной памяти, то компьютер может пользоваться этим разделом, как оперативной памятью.

Создадим новую директорию командой mkdir mounted и смонтируем туда раздел. Например, /dev/sdb5. Используем команду mount /dev/sdb5 /mounted. Чтобы отмонтировать используем команду umount /mounted.

LVM — это система управления томами для Linux.

Она позволяет создать поверх физических разделов , Logical Volume, которые будут видны операционной системе , как обычные блочные устройства с томами.

  1. Мы можем в одну группу Logical Volume можем добавить разное количество физических дисков.
  2. Мы можем менять размеры этих разделов прям во время работы операционной системы.

В данном случае на картинке есть, 3 HDD, на каждом есть определенное количество разделов. И мы можем из них собрать группу томов vg1. Которая будет видеть свои разделы, как физические тома, те объединяются в группу томов, а внутри этой группы мы можем создавать логические тома, вообще не указывая где они находятся, и они сами распределяются между дисками. Соответственно на каждом логическом томе будет какая-то файловая система.

Чтобы посмотреть физические тома пользуемся командой pvdisplay. Посмотреть volume group, команда vgdisplay. Посмотреть логические тома lvdisplay.

Удаляем, через fdisk все разделы на жестком диске /dev/sdb. Создаем 2 раздела по 4 ГБ основных с типом 8e, т.е. LVM тип. Создадим физический том командой pvcreate /dev/sdb1, аналогично делаем для второго раздела.

Далее необходимо создать виртуальную группу vgcreate vg1 /dev/sdb1 /dev/sdb2, т.е. оба раздела. В группе можем создать пару логических томов командой lvcreate -n lv1 -L 2G vg1, где -n новый раздел, -L — объем и последний параметр в какой виртуальной группе. И можно создать второй lvcreate -n lv2 -L 3G vg1. Появились новые блочные устройства lv1 и lv2. Осталось их отформатировать. Команда mkfs.ext4 /dev/vg2/lv1 и аналогично второй. Данная группа позволяет легко добавлять и удалять HDD. Возможно добавление нового жесткого диска и на увеличение размера наших томов. Чтобы изменить размер команда lvresize -L 4G vg1/lv2. Система LVM позволяет делать снимки состояний, т.е. снапшоты. Они используются для систем резервного копирования, например.

  • LVM
  • Logical Volume
  • Linux HDD
  • fdisk
  • 3980
  • 70
  • 0
  • Поделиться


  • Да
  • Нет


😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Проверка жесткого диска в Linux. Проверка жесткого диска в Linux Linux проверка скорости диска

Чтобы определить скорость записи на диск, необходимо выполнить следующую команду в консоли:

Sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync

Команда записывает временный файл размером в 1мб 1024 раза и результат ее работы будет вывод таких данных

1024+0 записей получено 1024+0 записей отправлено скопировано 1073741824 байта (1,1 GB), 15,4992 c, 69,3 MB/c

Чтобы определить скорость чтения с диска, необходимо выполнить следующую команду в консоли:

Временный файл, который был сгенерирован предыдущей командой, закеширован в буфер, что само собой повысит скорость его чтения и она будет намного выше чем реальная скорость чтения непосредственно с самого жесткого диска. Для того чтобы получить реальную скорость, необходимо предварительно очистить этот кэш.

Для определения скорости чтения с диска с буфера, нужно выполнить следующую команду в консоли:

Dd if=tempfile of=/dev/null bs=1M count=1024

Вывод предыдущей команды:

1024+0 записей получено 1024+0 записей отправлено скопировано 1073741824 байта (1,1 GB), 15,446 c, 69,5 MB/c

Чтобы измерить реальную скорость чтения с диска очищаем кеш:

Sudo /sbin/sysctl -w vm.drop_caches=3

Производим тест скорости чтения после очистки кеша:

Dd if=tempfile of=/dev/null bs=1M count=1024 1024+0 записей получено 1024+0 записей отправлено скопировано 1073741824 байта (1,1 GB), 16,5786 c, 64,8 MB/c

Выполнение теста скорости чтения/записи на внешнем накопителе

Для тестирования скорости какого-либо Внешнего HDD, USB Флэшки либо иного съемного носителя либо файловой системы удаленной машины(vps/vds), необходимо перейти в точку монтирования и выполнить приведенные выше команды.

Либо, вместо tempfile, можно конечно же прописать путь к точке монтирования, как приведено ниже:

Sync; dd if=/dev/zero of=/media/user/USBFlash/tempfile bs=1M count=1024; sync

Также следует указать, что приведенные выше команды используют временный файл tempfile. Не забудьте удалить его после окончания тестов.

Тест скорости HDD при помощи утилиты hdparm

hdparm — это Linux утилита, которая позволяет быстро узнать скорость чтения с вашего hdd.

Для запуска измерения скорости чтения с вашего жесткого диска необходимо выполнить следующую команду в консоли:

Sudo hdparm -Tt /dev/sda

Вывод команды в консоли:

/dev/sda: Timing cached reads: 6630 MB in 2.00 seconds = 3315.66 MB/sec Timing buffered disk reads: 236 MB in 3.02 seconds = 78.17 MB/sec

На этом все. Таким образом мы смогли узнать производительность нашего жесткого диска и дать примерную оценку его возможностям.

Оригинал: Test read/write speed of usb and ssd drives with dd command on Linux
Автор: Silver Moon
Дата публикации: Jul 12, 2014
Перевод: Н.Ромоданов
Дата перевода: октябрь 2014 г.

Скорость работы устройства

Скорость работы устройства измеряется в единицах, указывающих сколько данных оно может читать или писать в единицу времени. Команда dd является простым инструментом командной строки, который можно использовать для чтения и записи произвольных блоков данных на диске и измерять скорость, с которой произошла передача данных.

В этой статье мы будем использовать команду dd для проверки скорости чтения и записи устройств usb и ssd.

Скорость передачи данных зависит не только от диска, но и от интерфейса, через который он подключен. Например порт usb 2.0 имеет максимальное функциональное ограничение по скорости в 35 Мбайт/с, так что даже если вы подключили к порту usb 2 высокоскоростной флэш-накопитель usb 3, скорость будет ограничена меньшим значением.

То же самое относится и к устройству SSD. Устройство SSD подключается через порты SATA, которые имеют разные версии. Sata 2.0 имеет максимальный теоретический предел скорость в 3Гбит/с, что равно примерно 375 Мбайт/с. В то время как SATA 3.0 поддерживает вдвое большую скорость.

Метод тестирования

Смонтируйте диск и перейдите в него из терминального окна. Затем используйте команду dd сначала записи файла, состоящего из блоков фиксированного размера. Затем прочитайте тот же файл с использованием такого же самого размера блоков.

Общий синтаксис команды dd выглядит следующим образом

Dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks

При записи на диске, мы просто выполняем чтение из устройства /dev/zero, которое является источником бесконечного числа байтов. Когда происходит чтении с диска, мы читаем записанный ранее файл и отправляем его в устройство /dev/null, которого на самом деле нет. В течение всего процесса команда dd отслеживает скорость, с которой происходит передача, и сообщает о ней.

Устройство SSD

Устройство SSD, которое мы используем, является диском «Samsung Evo 120GB» SSD. Это устройство ssd начального уровня, относящееся к бюджетным, а также это мой первый диск SSD. Он также является одним из самых производительных твердотельных накопителей из имеющихся на рынке.

В этом тесте диск ssd подключен к порту sata 2.0.

Скорость записи

Давайте сначала сделаем запись на ssd

$ dd if=/dev/zero of=./largefile bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s

Размер блока, на самом деле, довольно большой. Вы можете попробовать использовать меньший размер, например, 64k или даже 4k.

Скорость чтения

Теперь, наоборот, прочитайте тот же самый файл. Но сначала очистите кэш памяти с тем, чтобы быть уверенным, что файл, на самом деле, читается с диска.

Для того, чтобы очистить кэш памяти, выполните следующую команду

$ sudo sh -c «sync && echo 3 > /proc/sys/vm/drop_caches»

Теперь прочитайте файл

$ dd if=./largefile of=/dev/null bs=4k 165118+0 records in 165118+0 records out 676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s

Устройство USB

В этом тесте мы будем измерять скорость чтения и обыкновенных флеш-накопителей usb. Устройства подключаются к стандартным портам usb 2. Первым устройством является usb-накопитель sony 4gb, а вторым — strontium 16gb.

Сначала подключите устройство и смонтируйте его так, чтобы оно было доступно для чтения. Затем из командной строки перейдите в смонтированный каталог.

Устройство Sony 4GB — запись

В этом тесте, команда dd используется для записи 10000 кусков данных по 8 Кбайт каждый в один файле на диске.

# dd if=/dev/zero of=./largefile bs=8k count=10000 10000+0 records in 10000+0 records out 81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s

Скорость записи составляет около 7,5 Мбайт/с. Это низкий показатель.

Устройство Sony 4GB — чтение

Тот же самый файл считывается для проверки скорости чтения. Для того, чтобы очистить кэш памяти, выполните следующую команду

$ sudo sh -c «sync && echo 3 > /proc/sys/vm/drop_caches»

Теперь прочитайте файл с помощью команды dd

# dd if=./largefile of=/dev/null bs=8k 8000+0 records in 8000+0 records out 65536000 bytes (66 MB) copied, 2.65218 s, 24.7 MB/s

Скорость чтения равна приблизительно 25 Мбайт/с, что более или менее стандартно для дешевых флешек usb.

USB 2.0 имеет теоретическую максимальную скорость передачи сигналов равную 480 Мбит/с или 60 Мбайт/с. Но в силу различных ограничений максимальная пропускная способность ограничена приблизительно значением 280 Мбит/с или 35 Мбайт/с. Помимо этого фактическая скорость зависит от качества флешки, а также и от других факторов.

И поскольку описываемое выше устройство usb было подключено к порту USB 2.0 и была достигнута скорость чтения, равная 24,7 Мбайт/с, что не очень плохо. Но скорость записи сильно отстает.

Теперь давайте выполним тот же самый тест с флешкой Strontium 16gb. Strontium — это еще один бренд, под которым выпускаются очень дешевые флешки usb, но эти флешки надежные.

Скорость записи для устройства Strontium 16gb

Скорость чтения для устройства Strontium 16gb

Скорость чтения данных ниже, чем для устройства Sony.

Если и есть то, с чем вы очень не хотите столкнуться в вашей операционной системе, то это точно неожиданный выход из строя жестких дисков. С помощью резервного копирования и технологии хранения RAID вы можете очень быстро вернуть все данные на место, но потеря аппаратного устройства может очень сильно сказаться на бюджете, особенно если вы такого не планировали.

Чтобы избежать таких проблем можно использовать smartmontools. Это программный пакет для управления и мониторинга устройств хранения данных с помощью технологии Self-Monitoring Analysis and Reporting Technology или просто SMART.

Большинство современных ATA / SATA, SCSI / SAS накопителей информации предоставляют интерфейс SMART. Цель SMART — мониторинг надежности жесткого диска, для выявления различных ошибок и своевременного реагирования на их появление. Smartmontools состоит из двух утилит — smartctl и smartd. Вместе они представляют мощную систему мониторинга и предупреждения о возможных поломках HDD в Linux. Дальше будет подробно рассмотрена проверка жесткого диска linux.

Пакет smartmontools есть в официальных репозиториях большинства дистрибутивов Linux, поэтому установка сводится к выполнению одной команды. В Debian и основанных на нем системах выполните:

aptitude install smartmontools

yum install smartmontools

Теперь можно переходить к диагностике жесткого диска linux.

Проверка жесткого диска в smartctl

Сначала узнайте какие жесткие диски подключены к вашей системе:

ls -l /dev | grep -E «sd|hd»

В выводе будет что-то подобное:

Здесь — sdx — имя устройства HDD подключенного к компьютеру.

Для отображения информации о конкретном жестком диске (модель устройства, S/N, версия прошивки, версия ATA, доступность интерфейса SMART) Запустите smartctl с опцией info и именем жесткого диска. Например, для /dev/sda:

smartctl —info /dev/sda

Хотя вы можете и не обратить внимание на версию ATA, это один из самых важных факторов при поиске замены устройству. Каждая новая версия ATA совместима с предыдущими. Например, старые устройства ATA-1 и ATA-2 прекрасно будут работать на ATA-6 и ATA-7 интерфейсах, но не наоборот. Когда версии ATA устройства и интерфейса не совпадают, возможности оборудования не будут полностью раскрыты. В данном случае для замены лучше всего выбрать жесткий диск ATA-7.

Запустить проверку жесткого диска ubuntu можно командой:

smartctl -s on -a /dev/sda

Здесь опция -s включает флаг SMART на указном устройстве. Вы можете его убрать если поддержка SMART уже включена. Информация о диске разделена на несколько разделов, В разделе READ SMART DATA находится общая информация о здоровье жесткого диска.

SMART overall-health self-assessment rest result: PASSED

Этот тест может быть пройден (PASSED ) или нет (FAILED ). В последнем случае сбой неизбежен, начинайте резервное копирование данных с этого диска.

Следующая вещь которую можно посмотреть, когда нужна диагностика HDD в linux, это таблица SMART атрибутов.

В SMART таблице записаны параметры, определенные для конкретного диска разработчиком, а также порог отказа для этих параметров. Таблица заполняется автоматически и обновляется на основе прошивки диска.

  • ID # — ID атрибута, как правило, десятичное число между 1 и 255;
  • ATTRIBUTE_NAME — Название атрибута;
  • FLAG — флаг обработки атрибута;
  • VALUE — это поле представляет нормальное значение для состояния данного атрибута в диапазоне от 1 до 253, 253 — лучшее состояние, 1 — худшее. В зависимости от свойств, начальное значение может быть от 100 до 200;
  • WORST — худшее значение value за все время;
  • THRESH — самое низкое значение value, после перехода за которое нужно сообщить что диск непригоден для эксплуатации;
  • TYPE — тип атрибута, может быть Pre-fail или Old_age. Все атрибуты по умолчанию считаются критическими, то-есть если диск не прошел проверку по одному из атрибутов, то он уже считается не пригодным (FAILED) но атрибуты old_age не критичны;
  • UPDATED — показывает частоту обновления атрибута;
  • WHEN_FAILED — будет установлено в FAILING_NOW если значение атрибута меньше или равно THRESH, или в «-» если выше. В случае FAILING_NOW, лучше как можно скорее выполнить резервное копирование, особенно если тип атрибута Pre-fail.
  • RAW_VALUE — значение, определенное производителем.

Сейчас вы думаете, да smartctl хороший инструмент, но у меня нет возможности запускать его каждый раз вручную, было бы неплохо автоматизировать все это дело чтобы программа запускалась периодически и сообщала мне о результатах проверки. И это возможно, с помощью smartd.

Настройка smartd и smartctl для диагностики и мониторинга в реальном времени

Диагностика hdd в linux в реальном времени настраивается очень просто. Сначала отредактируйте файл конфигурации smartd — /etc/smartd.conf. Добавьте следующую строку:

  • -m — адрес электронной почты для отправки результатов проверки. Это может быть адрес локального пользователя, суперпользователя или внешний адрес, если настроен сервер для отправки электронной почты;
  • -M — частота отправки писем. once — отправлять только одно сообщение о проблемах с диском. daily — отправлять сообщения каждый день если была обнаружена проблема. diminishing — отправлять сообщения через день если была обнаружена проблема. test — отправлять тестовое сообщение при запуске smartd. exec — выполняет указанную программу в место отправки почты.

Сохраните изменения и перезапустите smartd. Вы должны получить на электронную почту письмо подобного содержания:

Также можно запланировать тесты по своему графику, для этого используйте опцию -s и регулярное выражение типа «T/MM/ДД/ДН/ЧЧ», где:

  • T — тип теста:
  • L — длинный тест;
  • S — короткий тест;
  • C — тест перемещение (ATA);
  • O — оффлайн (тест).

Остальные символы определяют дату и время теста:

  • ММ — месяц в году;
  • ДД — день месяца;
  • ЧЧ — час дня;
  • ДН — день недели (от 1 — понедельник 7 — воскресенье;
  • MM, ДД и ЧЧ — указываются с двух десятичных цифр.

Точка означает все возможные значения, выражение в скобках (A|B|C) — означает один из трех вариантов, выражение в квадратных скобках означает диапазон (от 1 до 5).

Например, чтобы выполнять полную проверку жесткого диска linux каждый рабочий день в час дня добавьте следующую строку в smartd.conf:

DEVICESCAN -s (L /../../ / 13)


Если вы хотите быстро проверить механическую работу жесткого диска, посмотреть его физическое состояние или выполнить более-менее полное сканирование поверхности диска используйте smartmontools. Не забывайте выполнять регулярное сканирование, потом будете себя благодарить. Вы уже делали это раньше? Будете делать? Или используете другие методы? Напишите в комментариях!

It requires reading the manual (man fio) but it will give you accurate results. Note that for any accuracy, you need to specify exactly what you want to measure. Some examples:

Sequential READ speed with big blocks

Fio —name TEST —eta-newline=5s —filename=fio-tempfile.dat —rw=read —size=500m —io_size=10g —blocksize=1024k —ioengine=libaio —fsync=10000 —iodepth=32 —direct=1 —numjobs=1 —runtime=60 —group_reporting

Sequential WRITE speed with big blocks (this should be near the number you see in the specifications for your drive):

Fio —name TEST —eta-newline=5s —filename=fio-tempfile.dat —rw=write —size=500m —io_size=10g —blocksize=1024k —ioengine=libaio —fsync=10000 —iodepth=32 —direct=1 —numjobs=1 —runtime=60 —group_reporting

Random 4K read QD1 (this is the number that really matters for real world performance unless you know better for sure):

Fio —name TEST —eta-newline=5s —filename=fio-tempfile.dat —rw=randread —size=500m —io_size=10g —blocksize=4k —ioengine=libaio —fsync=1 —iodepth=1 —direct=1 —numjobs=1 —runtime=60 —group_reporting

Mixed random 4K read and write QD1 with sync (this is worst case number you should ever expect from your drive, usually less than 1% of the numbers listed in the spec sheet):

Fio —name TEST —eta-newline=5s —filename=fio-tempfile.dat —rw=randrw —size=500m —io_size=10g —blocksize=4k —ioengine=libaio —fsync=1 —iodepth=1 —direct=1 —numjobs=1 —runtime=60 —group_reporting

Increase the —size argument to increase the file size. Using bigger files may reduce the numbers you get depending on drive technology and firmware. Small files will give «too good» results for rotational media because the read head does not need to move that much. If your device is near empty, using file big enough to almost fill the drive will get you the worst case behavior for each test. In case of SSD, the file size does not matter that much.

However, note that for some storage media the size of the file is not as important as total bytes written during short time period. For example, some SSDs may have significantly faster performance with pre-erased blocks or it might have small SLC flash area that»s used as write cache and the performance changes once SLC cache is full. As an another example, Seagate SMR HDDs have about 20 GB PMR cache area that has pretty high performance but once it gets full, writing directly to SMR area may cut the performance to 10% from the original. And the only way to see this performance degration is to first write 20+ GB as fast as possible. Of course, this all depends on your workload: if your write access is bursty with longish delays that allow the device to clean the internal cache, shorter test sequences will reflect your real world performance better. If you need to do lots of IO, you need to increase both —io_size and —runtime parameters. Note that some media (e.g. most flash devices) will get extra wear from such testing. In my opinion, if any device is poor enough not to handle this kind of testing, it should not be used to hold any valueable data in any case.

In addition, some high quality SSD devices may have even more intelligent wear leveling algorithms where internal SLC cache has enough smarts to replace data in place that is being re-written during the test if it hits the same address space (that is, test file is smaller than total SLC cache). For such devices, the file size starts to matter again. If you need your actual workload it»s best to test with file sizes that you»ll actually see in real life. Otherwise your numbers may look too good.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *