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

Приоритет ввода-вывода NFS в ZFS / Solaris

У меня есть NAS Nexenta / ZFS, который я использую в качестве резервного хранилища NFS для небольшой фермы VMware vSphere. На данный момент у меня есть диски 9x1TB, все зеркальные (последний диск настроен как устройство записи журнала).

Производительность диска по NFS довольно хороша для моих нужд. Однако я заметил одну вещь: если я выполняю какие-либо операции с интенсивным вводом-выводом непосредственно на NAS, производительность виртуальной машины снижается до уровня обхода. Примером может служить копирование 1 ТБ данных между двумя разными файловыми системами ZFS в одном zpool.

Есть ли какой-нибудь хороший способ гарантировать, что запросы ввода-вывода, выполняемые демоном NFS, имеют приоритет над другими операциями ввода-вывода на диске? В идеальном мире мои виртуальные машины подключались к полностью отдельному zpool, чтобы на них не влияла нагрузка на файловые системы ZFS. Однако мне интересно, есть ли хороший способ сделать это с помощью одного zpool.

В Linux есть ionice, поэтому, если бы я использовал его, я мог бы использовать префикс mv команда с ionice если бы я должен был переместить много данных с низким приоритетом ввода-вывода. Однако я не думаю, что это доступно в ядре Solaris.

Какие-либо предложения?

AFAIK, для ZFS весь ввод-вывод - это ввод-вывод. Я имею в виду, что он не будет различать ваши локальные операции и те, которые NFS требует от ZFS.

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

Кстати, ваш выделенный диск емкостью 1 ТБ для устройства записи журнала вам вообще не поможет, если только этот конкретный диск не намного быстрее остальных (например, SATA 7200 против SAS 15k). Обычно мы используем SSD для устройств журналирования / кеширования или вообще ничего.

Добавьте больше RAM .. после этого. Возможно, вы захотите добавить еще немного оперативной памяти. L2ARC на SSD великолепны, у меня их несколько. Их не нужно зеркалировать. ЗИЛ должен быть зеркальным (не обязательно, но его игра окончена, если это не так и есть какой-то сбой). Вы также можете добавить немного оперативной памяти.

Дерек

У вас не будет никакого способа ограничить ваш ввод / вывод, если вы не воспользуетесь какой-нибудь уродливой смесью pv и dd... но это того не стоит. Другой плакат правильный в том, что твой 9-й диск как ЗИЛ бесполезен. Для этого лучше использовать SSD или диск без диска. Однако это может быть полезно для кеша L2arc.

Также см: http://opensolaris.org/jive/thread.jspa?messageID=493112

Сможете ли вы выполнять свои тяжелые задачи ввода-вывода с еще одной виртуальной машины?

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