Intereting Posts
Как просмотреть метаданные локальных / загруженных файлов .deb в Debian Как добавить новые строки в переменные в сценарии bash Проблема установки последней версии shellcheck из tar.xz Не удается установить linux-image-4.4.0-131-generic (4.4.0-131.157) блока операторов Механизм в сценариях оболочки? Как сделать iso моей установленной системы Клиенты Openvpn не могут получить доступ к локальной сети Создание iso-образа стойкого live-usb с несколькими разделами сопоставление и слияние строк с awk & печать с помощью Solaris Отображения асинхронного привода GKrellM vs. udev при загрузке Игнорировать определенные символы при сравнении переменных? Какая команда вынуждает диск вращаться? Как я могу просматривать состояние и управлять скриптом python, регулярно выполняющимся на сервере? есть ли способ остановить отправку пользователей на нежелательные учетные записи электронной почты? Почему есть два файла ifcfg-eth0, но в другом каталоге

Программное обеспечение RAID10 setup пишет небольшие файлы очень медленно, это нормально?

У меня есть программная настройка RAID-10 на Linux 3.16.6-203.fc20.x86_64, с 1,2 метаданными и размером блока по умолчанию (512K):

$ cat /proc/mdstat md0 : active raid10 sdc1[4] sdb1[0] sdd1[2] sde1[3] 3907023872 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] bitmap: 4/30 pages [16KB], 65536KB chunk unused devices: <none> 

Файловая система – ext4, поверх LVM, поверх группы томов RAID-10.

 $ df -k . Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_raid10-lv_home 2015734504 810039552 1103278568 43% /home 

с вариантами крепления:

 $ mount | grep vg_raid10-lv_home /dev/mapper/vg_raid10-lv_home on /home type ext4 (rw,relatime,seclabel,stripe=256) 

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

 $ dd if=/dev/zero of=tmp.bin bs=1G count=1 oflag=dsync 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 7.85743 s, 137 MB/s 

Однако при записи небольшого 100b ( EDIT: как указано в ответах, я писал 512 байт, а не 100 байтовых блоков ) в RAID-массив, он очень медленный (около 84 мс на синхронную запись):

 $ dd if=/dev/zero of=tmp.bin bs=512 count=1000 oflag=dsync 1000+0 records in 1000+0 records out 512000 bytes (512 kB) copied, 84.2859 s, 6.1 kB/s 

Это нормально для конфигурации RAID-10, которая у меня есть?

RAID10 не ускоряет любую форму O_*SYNC , по крайней мере, не для небольших файлов. Вы пишете 512 бит за раз, и после каждой записи вытесняете его на диск (плюс метаданные, необходимые для его чтения, например, размер файла).

Для этого требуется, чтобы RAID10 записывал как минимум 2 диска, возможно 4 (т. Е. Все ваши диски). И все эти записи должны быть завершены, прежде чем он сможет вернуться к dd, так как об этом просит O_DSYNC .

Ваша команда dd дает мне 73,7 кБ / с – на SSD. Так что да, я думаю, это нормально. Вернее, dd просто не является хорошим эталоном.

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

(Вы замедляете его еще больше, если у вас есть 4K сектора дисков, которые вынуждены делать что-то особенное, чтобы писать меньше, чем полный сектор.)

Вы не делаете «100b» (байтовые блоки? Каково ваше намерение?) Куски, вы делаете 512 байтовых кусков. Это всегда медленно, потому что RAID использует 512 тыс. Кусков. Это означает, что на каждые 512 байт RAID-система должна читать 512-килобайтный фрагмент, обновлять 512 байтов в этом фрагменте, вычислять его четность и записывать данные + четность на диск. Он должен делать обновление, вычисление четности и 512 бит + 512 к четности каждый раз для каждого из 1000 блоков, которые вы пишете. Чтение выполняется только один раз, поскольку он хранится в буферном кеше, и вся операция занимает всего один кусок RAID.

Итак, да, это нормально. Не делай этого 🙂

EDIT: выше было бы верно для RAID5. Для RAID10 четность не вычисляется, но для каждого dd блока 512 байт есть еще 2 раза запись 512k, по одному для каждого зеркала. Таким образом, вы все еще пишете 1000 МБ при обновлении всего 512 тыс. Возможно, система достаточно умна, чтобы только выписывать обновленные сектора, но я сильно подозреваю, что это не то, что происходит. Также рассмотрите обновления к растровому изображению для записи.