Оптимальный рейдовый массив на Centos 6

1678
Mark Elthof

У меня есть диски 4x2 ТБ, и я хочу создать хорошо работающий массив RAID5 (сервер - это микросервер HP N40L с 8 ГБ ОЗУ, загрузка с SSHD 64 ГБ). ОС - Centos 6.3, x86_64.

Я создал массив raid с помощью этой команды:

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 

Когда я тогда делаю:

mdadm --examine /dev/sda1 

... Мне сказали, что мой "Размер куска" равен 512 КБ (очевидно, это новое значение по умолчанию для mdadm).

Теперь я хочу отформатировать массив с XFS. Мне сказали (на http://www.mythtv.org/wiki/Optimizing_Performance#Optimizing_XFS_on_RAID_Arrays ), что «сунит» равен размеру моего блока, выраженному в количестве 512-байтовых блоков, так что в моем случае 512 КБ = 1024 блоков по 512 байт. Точно так же, «ширина» - это количество эффективных дисков в моем массиве, раз сунит. В моем случае у меня 4 диска в рейде 5, поэтому 3 эффективных диска и 3х1024 = 3072. Поэтому я отформатировал свой новый массив с помощью команды:

mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0 

Теперь у меня есть два вопроса. Приведенная выше команда выдала мне эту ошибку:

mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0 log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB [...] 

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

Второй вопрос заключается в том, правильно ли я рассчитал параметры XFS или полностью лаю неправильное дерево (если это поможет, массив будет по большей части хранить большие музыкальные и видеофайлы). Я понял, например, «размер куска» и «размер полосы»? Оптимален ли размер блока 4096 в моей команде mkfs? И так далее.

Буду признателен за любые советы по этому вопросу.

2

1 ответ на вопрос

1
suprjami

XFS doesn't support stripe units larger than 256k, so just re-make your RAID array with a 256k stripe. This is the --chunk parameter of mdadm.

A 4k block size might be too small for your intended usage. If you were storing lots of small files then 4k would probably be more ideal. XFS can go right up to 64k blocks. It's quicker to read and write contiguous blocks, but you lose some space to overhead of larger block sizes.

You can only allocate in blocks, so select your block size based on the size of the files you expect to be dealing with. With a 4k block size, a file of size 1kb takes up 4kb of space (1 block), and a file of size 65kb takes up 68kb of space (17 blocks). With a 64kb block size, a file of size 1kb takes up 64kb (one block) and a file of size 65kb takes up 128kb (2 blocks).

If you're dealing in small files then you'll waste a lot of space with a large block size. If you're dealing in hundreds-of-gigabyte video files then you probably don't care about 64kb here or there, and the performance advantage of the larger block size makes more of a difference.

One other thing to understand is Allocation Groups. Each AG gets a separate IO thread. The XFS allocator tries to put each directory in a different AG. A basic theory is one AG per physical device.

Have a read of the XFS documentation and come to understand how the filesystem is built:

Make some educated guesses and decide what factors are most important to you. Get some files which represent your production data (or a copy of the actual production data) and run some benchmarks on what is important to you. Pick a metric like how quickly does your video or audio software read and write files based on different block sizes? How does having multiple audio/video engineers concurrently accessing files affect throughput with different AGs?

XFS is designed for massive hundreds-of-terabytes filesystems, living on SANs worth more than a house, storing massive uncompressed media files like professional movie studios would need. If you're using this to store your pirated music and TV shows on a cheap Linux box then just use ext4, it'll be much easier to troubleshoot and fix if you ever run into problems.

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