Протестировать работу диска
При тестировании диска ты проверяешь фактические значения его характеристик — количество операций ввода и вывода (IOPS), производительность.
Результаты тестирования можно сравнить со значениями, которые указаны в конфигурации диска. Проводить тестирование можно для всех типов дисков.
Для тестирования используется утилита fio. С fio можно использовать файл-тесты — подготовленные текстовые файлы с настройками тестирования.
Установить утилиту fio
Выполни команды:
sudo apt update
sudo apt install fio
Подготовить диск
Не используй эту команду для дисков, которые содержат какую-либо информацию — команда уничтожает все данные на диске. В примерах ниже приведены тесты с записью на диск с параметром filename=/dev/sdb
— запись также уничтожит данные и файловую систему на диске, если они там есть.
Создай новый сетевой диск.
Запиши на диск данные для тестирования:
dd if=/dev/urandom of=/dev/sdX bs=4M
Протестировать диск
Выбери нужный тест или выполни все тесты с любом порядке:
- случайная запись блоками 4 КБ — тестирование количества операций ввода (W IOPS);
- случайное чтение блоками 4 КБ — тестирование количества операций вывода (R IOPS);
- случайная запись блоками 4 MБ — тестирование пропускной способности;
- случайное чтение блоками 4 MБ — тестирование пропускной способности.
Параметры тестов:
size
— общий размер тестового файла;blocksize
— размер одного блока, с которым проводится операция чтения или записи;filename
— файл для записи или чтения. В примерах ниже приведены тесты с записью на диск с параметромfilename=/dev/sdb
— запись также уничтожит данные и файловую систему на диске, если они там есть;iodepth
— количество потоков.
Случайная запись блоками 4 КБ
Создай тест:
nano write.ini
Добавь в файл содержимое:
[writetest]
size=2000M
blocksize=4k
filename=/dev/sdb
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32Запусти тест:
fio write.ini
В выводе теста посмотри значение IOPS:
write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets
Случайная запись блоками 4 МБ
Создай тест:
nano write.ini
Добавь в файл содержимое:
[writetest]
size=2000M
blocksize=4M
filename=/dev/sdb
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32Запусти тест:
fio write.ini
В выводе теста посмотри значение пропускной способности (BW):
write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets
Случайное чтение блоками 4 КБ
Создай тест:
nano read.ini
Добавь в файл содержимое:
[readtest]
size=2000M
blocksize=4k
filename=/dev/sdb
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32Запусти тест:
fio read.ini
В выводе теста посмотри значение IOPS:
read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)
Случайное чтение блоками 4 MБ
Создай тест:
nano read.ini
Добавь в файл содержимое:
[readtest]
size=2000M
blocksize=4M
filename=/dev/sdb
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32Запусти тест:
fio read.ini
В выводе теста посмотри значение пропускной способности (BW):
read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)