У меня есть массив в 1 ТБ, настроенный в raid 1
с использованием mdadm
в Ubuntu 8, для хранения критически важных файлов. Я хотел бы ускорить чтение / запись, особенно для больших файлов, путем кэширования на SSD. Это возможно? Содержит ли mdadm
возможность кэширования на другой диск?
В качестве альтернативы, есть ли что-то, что я должен сделать, чтобы назначить обычную оперативную память для кэширования? Имеется 4 ГБ ОЗУ, а файлы для записи редко бывают больше 1 ГБ, поэтому я думаю, что запись должна выполняться довольно быстро, только с использованием только кэширования ОЗУ.
Любая помощь будет принята с благодарностью.
Есть ли в mdadm средство для кэширования на другой диск?
blockquote>Нет, программный рейд Linux (управляемый
mdadm
) предназначен исключительно для создания набора дисков для [ 1111] резервирование целей. 1 sup>Я знаю два проекта, которые позволят сделать это: dm-cache и flashcache (оба относительно экспериментальные). Он позволяет вам использовать SSD в качестве кэша (для чтения и записи) для ваших более медленных жестких дисков или любого другого блочного устройства, такого как устройство md. Оба предлагают огромный выигрыш в производительности и очень легко найти баланс в долговечности и производительности.
К сожалению, на данный момент это еще не упаковано или не включено в ядро. Поэтому это не очень простая задача в Ubuntu. Не стесняйтесь пачкать руки, но помните, что это немного экспериментального программного обеспечения и трудно получить поддержку.
Смежные вопросы:
- Как установить и использовать flashcache / bcache для кэширования жесткого диска на SSD?
- Советы по рейду с SSD и два HDD
1 sup> Однако вы можете намекнуть ядру, чтобы использовать один из дисков для чтения в первую очередь, чтобы получить Некоторое улучшение производительности чтения, но это не совсем то же самое, что и в реальном SSD-кэше. См. этот ответ Жиля о том, как это сделать.
Есть ли что-то, что я должен сделать, чтобы назначить обычную оперативную память для кэширования?
blockquote>Это уже включено в каждом ядре 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
Примерно похожее решение для RAID4 / 5/6: https://www.kernel.org/doc/Documentation/md/raid5-cache.txt
Это вариант использования дополнительного диска в конфигурации RAID4 / 5/6 исключительно для целей кэширования. Также существуют режимы повышения производительности (чтение или запись) или надежности.