Назад | Перейти на главную страницу

Попытка определить правильное количество групп распределения XFS для сервера postgresql в Linux

Я запускаю сервер postgres 8.4.5 на ядре linux 2.6.33.7 на массиве рейдов на 8 дисков с контроллером LSI.

Большинство таблиц имеют размер около 1 ГБ или меньше.

Я знаю, что XFS использует группы распределения (AG) для достижения параллелизма ввода-вывода.

Мой первый вопрос: означает ли это, что если две таблицы находятся в одной группе доступности, все запросы ввода-вывода ставятся в очередь к ним обоим, если какая-либо из них считывается / записывается?

Если да, то я предполагаю, что хотел бы распределить свои таблицы по группам распределения, правильно? Разве это не гарантирует, что несколько пользователей, запрашивающих разные таблицы, получат максимальную производительность?

Какой размер раздела в гигабайтах? Я обычно делю это на 4, чтобы определить количество групп распределения XFS. Я сталкивался с ситуациями, когда у меня была только одна группа распределения и возникали проблемы с восстановлением с ошибкой, указывающей на то, что не было другого AG, на который можно было бы ссылаться в процессе восстановления файла. В любом случае, я думаю, что общее правило - размер раздела / 4. Существует некоторый уровень параллелизма при выполнении операций ввода-вывода для нескольких групп распределения. Но я предполагаю, что отдача от этого числа уменьшается, поэтому любое значение между размером раздела / 2 и размером раздела / 4 является разумным.

Поэтому для раздела 200 ГБ с именем «partitionname» на / dev / sdb1 я бы, вероятно, использовал следующую последовательность команд mkfs.xfs.

mkfs.xfs -f -L /partitionname -d agcount=50 -l size=128m,version=2 /dev/sdb1

Также см: http://en.wikipedia.org/wiki/XFS#Allocation_groups

и http://everything2.com/index.pl?node_id=1479435 где отмечено:

At least one allocation group is needed per 4 gigs of space...