Перевірка жорсткого диска на Linux. Як виміряти швидкість жорсткого диска Що таке SSD-boost або flashcache

Щоб визначити швидкість запису на диск, необхідно виконати наступну команду в консолі:

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

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

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

На цьому все. Таким чином ми змогли дізнатися продуктивність нашого жорсткого диска та дати зразкову оцінку його можливостей.

Це потребує reading manual (man fio), але це буде мати свої результати. Зауважте, що для будь-якої тяжкості, ви потрібні на особливість exactly what you want to measure. деякі 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(Цей повинен бути близько номера ви бачите в 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(Цей ліхтарний номер, ви повинні expect from your drive, usually less than 1% of 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. За допомогою великих файлів можна змінити номери, які Ви бажаєте depending on drive technology and firmware. Невеликі файли будуть "відмінні" результати для ротаційного медіа тому, що read head не потребує пересування, що дуже. Якщо ваш пристрій є близьким empty, використовуючи файл величезний до всього fill the drive will get you the worst case behavior for each test. У випадку з SSD, файл файлу не matter that much.

Але, помічайте, що для деякого розміру медіа розмір файлу не є важливим як загальний час написання протягом тривалого періоду. Для прикладу, деякі SSDs можуть мати дуже велику ефективність з попередніми блоками або її максимальні маленькі SLC flash area that's used as write cache and the operation changes once SLC cache is full. As another example, Seagate SMR HDDs ha 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. За допомогою курсу, це все залежить від вашої роботи: якщо натиснута робота з бурхтом з довгими рішучими, що дозволяє вашу клавіатуру, щоб позбутися internal cache, shorter test sequences буде відображати вашу реальну світову дію. IO, вам потрібна для збільшення both --io_size and --runtime parameters. testing, it should not be used to hold any valueable data in any case.

В додаток, деякі високої якості SSD devices може бути навіть більше intelligent wear leveling algorithms where internal SLC cache ha enough smarts replace data in place that is being re-written during the test if it hits the same address space (that is, is smaller than total SLC cache). Для таких пристроїв, файл файлу зірки до матчу ще. Якщо ви потребуєте поточного робочого часу, це "відповідь до тесту з файлом розмірів, які ви" існують в реальному житті. Іншіwise your numbers may look too good.

Зверніть увагу, що fio буде створювати потрібні temporary file on first run. Це буде з'єднано з рівним часом до того, щоб отримати те, що добре номери з пристроїв, що cheat by compressing the data до того, щоб отримати це permanente storage. temporary file буде називатися fio-tempfile.dat в додаткових examples and stored in current working directory. Якщо ви повинні першу зміну до directory, що є встановленим на вашому приладі, щоб спробувати.

Якщо ви маєте хороший SSD і намагаєтеся додати додаткові цифри, збільшення - числанеобов'язково. Що defines the concurrency for the reads and writes. Докладніше про всі numjobs set to 1 so test is about single threaded process reading and writing (possibly with a queue set with iodepth). High end SSDs (e.g. Intel Optane) повинні отримувати високі номери навіть без збільшення номерів jobs (e.g. 4 повинні бути потрібні для отримання високої кількості номерів) but some "Enterprise" SSDs потребує 32 - 1 internal latency those devices is higher but the overall throughput is insane.

Наразі ударними темпами йде модернізація дискових підсистем практично у будь-яких хостерів. Твердотільні накопичувачі стали суттєвим ривком у покращенні продуктивності комп'ютерного та в тому числі серверного обладнання. Справа в тому, що диск уже багато років був вузьким місцем, що називається "слабкою ланкою", у продуктивності будь-яких інформаційних систем. Тобто всі інші елементи - процесор, оперативна пам'ять, системні шини і навіть мережа - все вже давно дуже швидше і продуктивніше накопичувачів. SSD дає приріст продуктивності будь-якого пристрою приблизно 3-5 разів. Це означає, що будь-які програми будуть запускатися в кілька разів швидше, іноді навіть в десятки разів швидше.

Отже, хостер пропонує вам дві тарифні лінійки – SSD та не_SSD. Ви, звичайно, берете SSD. Але як переконатися, що хостер видав дійсно SSD? Адже для роботи сайту немає жодної різниці - у вас все працюватиме на хостингу з будь-яким диском. Тобто, теоретично хостер може вам оголосити, що він має сервери на швидких твердотільних дисках. А насправді продавати потужності на традиційних традиційних HDD. І ви, швидше за все, навіть не дізнаєтесь про це.

Адже SSD набагато дорожчий за звичайні диски. А у хостерів потужності адже серйозні, їм потрібно терабайти даних зберігати. Уявляєте, скільки такі системи можуть коштувати, враховуючи, що 1 Гб твердотільного накопичувача приблизно в 10 разів дорожче 1 Гб звичайного диска?

Що таке SSD-boost чи flashcache?

Загалом, є гібридна система. Коли використовують зв'язку SSD+HDD. При цьому всі дані зберігаються на традиційних великих дисках. Є спеціальний софт, який налаштовує ці диски в особливий хитрий масив, де SSD виступає кешем для будь-яких даних, які записуються або зчитуються. У такому масиві маємо невеликий SSD, допустимо на 120 Гб і за ним великий HDD, на 2 Tb. Така зв'язка дає швидкість читання/запису як у SSD, але обсяг, як HDD. Ось такі справи. При цьому, хостер може вам сказати, що у нього все на SSD. Чесні хостери називають це SSD-boost. На роботі сайтів це негативно не відбивається.

Я перевіряв швидкість дисків у десятків різних хостерів. Ви здивуєтеся, але лише 1 із 5 хостерів дає «чесний» SSD.

Такі речі фіксую скріншотами.

Тести фейкових SSD деяких хостерів

Хостер №1

Тут ми бачимо лише 30 Мб/с на запис. Це нормальна швидкість для звичайного HDD. Але у хостера він оголошений як SSD.

Хостер №2

Аналогічна картина. Але швидкість читання вже трохи краща. Можливо, це випадок з flashcache, але дуже перевантажений. А швидше за все просто raid масив зі звичайних HDD. Можна їх збирати таким чином, що збільшується у 1,5-2 рази продуктивність на читання.

Хостер №3

Улюблений багатьма хостер. Показує взагалі дикі результати. Мало того, що HDD, так ще й перевантажений зверненнями до диска.

Хостер №4

Тут загалом весела історія. Робив клієнту аудит сервера, були скарги на гальма. Дай, гадаю, перевірю диск.

Ось така картина. Пишу клієнту так і так - хостер вас нахабно обманює. Клієнт бігом у саппорт – виявляється справді. Клієнту «забули» включити SSD під час переходу колись там із тарифу на тариф, розумієте? Перемикають, тестуємо знову і бачимо, як з'явився справжній SSD.

Тести реальних SSD

Тепер, щоб розуміти різницю, я покажу вам скріншоти тестів дійсно SSD.

Ось так це виглядає. Швидкість запису понад 100 Mb/s має бути. Це мінімум для SSD. Це тест із мого робочого ноутбука, на якому я зараз пишу цей пост. У ньому стоїть найдешевший SSD на 120 Гб. Як бачите, швидкість роботи у нього в 4-5 разів швидше ніж у традиційного диска.

А ось тест хостера, що надає реальний SSD.

Ось тут точно справжній SSD. Ось таким воно й має бути. Можливо налаштований буст, але це SSD і жити з цим хостером можна.

Як зробити тест швидкості диска у хостера?

Я для цього використовую утиліту dd. Вона є в будь-якому Linux. Але поводитися з нею слід обережно, інакше є ризик зіпсувати взагалі весь сервер, усі дані на ньому. Оскільки ця утиліта пише сирі дані в будь-який пристрій або файл, який вкажеш.

Отже, для тесту запису слід взяти потік нулів зі спеціального пристрою /dev/zero і направити його у файл, на диску, що тестується. Будь-який довільний файл. Наприклад, у папку тимчасових файлів /tmp/test.img

Dd if=/dev/zero of=/tmp/test.img bs=1M count=1024 oflag=dsync

Така команда створить файл 1 Гб розміром і виведе швидкість запису.

Відразу ж можна перевірити і швидкість читання, тільки тут опція if повинна вказувати на створений файл, а of кудись у порожнечу. У лінуксах є такий пристрій /dev/null, в нього і направимо:

Dd if=/tmp/test.img of=/dev/null bs=1M count=1024

Але перед цим потрібно скинути дисковий кеш, інакше файл буде рахований за секунду, а вам виведеться швидкість читання в Gb/s. Це робиться такою командою:

Sysctl vm.drop_caches=3

Після цього проводимо тест читання другою командою.

Ну і після закінчення потрібно видалити тестовий файл, щоб не займав місце:

Rm -f /tmp/test.img

Це все спрацює лише на виділеному сервері або VPS. Причому не на кожному VPS. Оскільки вони різняться ще й за технологією віртуалізації. Багато хостерів дають не повноцінну віртуалізацію (KVM, XEN), а контейнери (openVZ). Тут немає доступу до параметрів ядра, а значить не вдасться скинути кеш. Прийде читати і писати в різні файли, або перед тестом читання почекати кілька годин, поки дисковий кеш перезапишеться іншими даними. Також досить складно перевірити швидкість на віртуальному хостингу, оскільки ви не маєте там root доступу. Але утиліта dd зазвичай доступна будь-якому системному користувачеві, тому можна перевірити і на ньому, маючи доступ до SSH.

Оригінал: 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

Пристрій, який ми використовуємо, є диском "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)

Розмір блоку насправді досить великий. Ви можете спробувати використовувати менший розмір, наприклад, 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)

Швидкість запису становить близько 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)

Швидкість читання дорівнює приблизно 25 Мбайт/с, що більш-менш стандартно для дешевих флешок usb.

USB 2.0 має теоретичну максимальну швидкість передачі сигналів, що дорівнює 480 Мбіт/с або 60 Мбайт/с. Але з різних обмежень максимальна пропускна здатність обмежена приблизно значенням 280 Мбіт/с чи 35 Мбайт/с. Крім цього фактична швидкість залежить від якості флешки, а також інших факторів.

І оскільки описаний вище пристрій usb було підключено до порту USB 2.0 і досягнуто швидкість читання, рівна 24,7 Мбайт/с, що дуже погано. Але швидкість запису дуже відстає.

Тепер давайте виконаємо той же тест з флешкою ​​Strontium 16gb. Strontium це ще один бренд, під яким випускаються дуже дешеві флешки usb, але ці флешки надійні.

Швидкість запису для Strontium 16gb

# dd if=/dev/zero of=./largefile bs=64k count=1000 1000+0 records in 1000+0 records out 65536000 bytes (66 MB)

Швидкість читання для пристрою Strontium 16gb

# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" # dd if=./largefile of=/dev/null bs=8k 8000+0 records in 8000+0 records out 65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s

Швидкість читання даних нижче, ніж для Sony.


За наявності деякої кількості жорстких дисків, а також флеш-накопичувачів (флешок), виникає необхідність визначити їх продуктивність, для того щоб визначиться для яких цілей використовувати те або інше запам'ятовуючий пристрій. Перевірку швидкості читання/запису жорстких дисків зазвичай проводять за допомогою hdparm.

hdparm- консольна утиліта (Раніше входила до складу пакету hwtools)призначена для перегляду та регулювання параметрів жорстких дисків з інтерфейсом ATA (паралельний інтерфейс підключення накопичувачів, жорстких дисків та оптичних накопичувачів, до комп'ютера).

Параметри жорстких дисків задаються з ухилом на надійність роботи, навіть не дуже якісному обладнанні, але в більшості сучасних материнських плат і жорстких дисків можна помітно збільшити продуктивність IDEпідсистеми без зменшення надійності.

В даний час немає надійних методів для визначення оптимальних параметрів пристроїв (крім обережних проб та спостережень), а також не існує жодної централізованої бази даних (у якій була зібрана інформація про спостереження досвідчених користувачів), то найбезпечнішим є здійснення порівняння деяких параметрів " за замовчуваннямі на основі них вибору пристрою з найбільш оптимальними параметрами. Найпростіше це зробити за допомогою hdparmтим більше, що вона входить до складу практично всіх сучасних дистрибутивів Linux.

Хоча основне призначення hdparmналаштування та оптимізація, її можна використовувати як постій інструмент для проведення тестів, для цього достатньо виконати (Для роботи hdparm вимагає прав адміністратора / root ):

Sudo hdpam -t "ім'я пристрою"

Наприклад:

Sudo hdpam -t /dev/sda

Дізнатися ім'я диска можна:

Fdisk -l

Тест бажано проводити за відсутності помітної дискової активності. Опція " -t" дозволяє відображати швидкість послідовного читання даних з диска, без затримок, викликаних роботою файлової системи.

Проведений тест покаже найвищу швидкість передачі даних для диска, що тестується. Перевірка читання/запису відбувається на початку диска, на найшвидшому його ділянці, тому отримані цифри мало відповідають реальної швидкості роботи диска. Найбільш реальний результат можна отримати при перевірці диска у довільних точках, у випадковому порядку... Провести такий тест можна за допомогою консольної утиліти seeker.

seeker- консольна утиліта, яка проводить перевірку швидкості читання/запису жорстких дисків довільно, з доступом до диска у випадковому порядку. При цьому методі тестування головка диска швидко переміщається з одного місця до іншого, зчитуючи невеликі фрагменти даних. Процес включає механічні операції і доступ до диска набагато повільніше ніж тест при послідовному доступі.

Довільний метод перевірки використовуваний у seekerнабагато ближче до реальної роботи жорсткого диска і результати тестів виглядають більш правдоподібними. Тому використовуючи seekerдуже важливо тестувати диск повністю (/dev/sda), а не окремий його розділ (/dev/sda1, /dev/sda2, /dev/sda3 та інше):

Sudo seeker "ім'я диска"

Утиліта проста у використанні, запускається без додаткових опцій, тестування диска проводиться протягом тридцяти секунд, а для більш повного доступу до диска утиліту краще запускати з правами адміністратора (root). Крім жорстких дисків за допомогою seekerможна провести порівняльне тестування наявних флеш-накопичувачів (наприклад для використання найшвидшого пристрою як LiveUSB).