Могу ли я кешировать рейд mdadm с помощью ssd?

У меня есть массив в 1 ТБ, настроенный в raid 1 с использованием mdadm в Ubuntu 8, для хранения критически важных файлов. Я хотел бы ускорить чтение / запись, особенно для больших файлов, путем кэширования на SSD. Это возможно? Содержит ли mdadm возможность кэширования на другой диск?

В качестве альтернативы, есть ли что-то, что я должен сделать, чтобы назначить обычную оперативную память для кэширования? Имеется 4 ГБ ОЗУ, а файлы для записи редко бывают больше 1 ГБ, поэтому я думаю, что запись должна выполняться довольно быстро, только с использованием только кэширования ОЗУ.

Любая помощь будет принята с благодарностью.

6
задан 1 February 2013 в 17:10

2 ответа

Есть ли в mdadm средство для кэширования на другой диск?

Нет, программный рейд Linux (управляемый mdadm) предназначен исключительно для создания набора дисков для [ 1111] резервирование целей. 1

Я знаю два проекта, которые позволят сделать это: dm-cache и flashcache (оба относительно экспериментальные). Он позволяет вам использовать SSD в качестве кэша (для чтения и записи) для ваших более медленных жестких дисков или любого другого блочного устройства, такого как устройство md. Оба предлагают огромный выигрыш в производительности и очень легко найти баланс в долговечности и производительности.

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

Смежные вопросы:

1 Однако вы можете намекнуть ядру, чтобы использовать один из дисков для чтения в первую очередь, чтобы получить Некоторое улучшение производительности чтения, но это не совсем то же самое, что и в реальном SSD-кэше. См. этот ответ Жиля о том, как это сделать.


Есть ли что-то, что я должен сделать, чтобы назначить обычную оперативную память для кэширования?

Это уже включено в каждом ядре Linux! Вы можете увидеть количество кэшированных страниц, используя free:

free -m
             total       used       free     shared    buffers     cached
Mem:         24047      17703       6343          0       6492       3550
-/+ buffers/cache:       7660      16386
Swap:         3811          0       3811

Здесь вы видите, что в нем теперь 3550 МБ страниц (уровень файловой системы) в кеше и 6492 МБ страниц (блочное устройство уровень) на моей машине. Чтение одного из них не приведет к чтению с диска.

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

hdparm -Tt /dev/md127  # replace with your device - try both disks and md devices!

/dev/md127:
 Timing cached reads:   8624 MB in  2.00 seconds = 4313.50 MB/sec
 Timing buffered disk reads: 282 MB in  2.93 seconds =  96.31 MB/sec

Первый результат явно исходит из кэшей в памяти, тогда как второй считывается непосредственно с диска.

Чтобы продемонстрировать кэширование на основе файловой системы с использованием dd:

# first time
dd if=/home/gert/bigfile.img of=/dev/null 
5927206912 bytes (5.9 GB) copied, 25.9253 s, 229 MB/s

# second time
dd if=/home/gert/bigfile.img of=/dev/null 
5927206912 bytes (5.9 GB) copied, 4.91444 s, 1.2 GB/s

# third time, with file system cache disabled using iflag=direct
# yields results similar to first one
# Try using a bigger blocksize (bs=10M for example) if you're seeing very low speeds
dd if=/home/gert/bigfile.img of=/dev/null iflag=direct
0
ответ дан 1 February 2013 в 17:10

Примерно похожее решение для RAID4 / 5/6: https://www.kernel.org/doc/Documentation/md/raid5-cache.txt

Это вариант использования дополнительного диска в конфигурации RAID4 / 5/6 исключительно для целей кэширования. Также существуют режимы повышения производительности (чтение или запись) или надежности.

1
ответ дан 13 March 2020 в 10:05

Другие вопросы по тегам:

Похожие вопросы: