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

Производительность записи NFS

У нас есть три хоста VMware ESXi 4, обслуживающие виртуальные машины из общего ресурса OpenFiler NFS. Каждый хост имеет прямое гигабитное соединение с NAS. Хотя производительность чтения была отличной, запись файлов внутри гостевых виртуальных машин страдает.

Рекомендуемая конфигурация для обеспечения целостности данных - экспорт общих ресурсов NFS с sync вариант и смонтировать ext3 с data=journal.

Я хотел бы сравнить поведение конфигурации максимальной целостности с максимальной конфигурацией производительности ввода-вывода. Чтобы настроить производительность, я экспортировал общий ресурс NFS как

/mnt/raided/main/vm 10.0.0.0/255.255.0.0(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,async)

в то время как ext3 смонтирован с

/dev/raided/main /mnt/raided/main ext3 defaults,usrquota,grpquota,acl,user_xattr,data=writeback,noatime

Дают ли эти параметры конфигурации оптимальную производительность ввода-вывода? Как насчет смены файловой системы? Сильно ли улучшит производительность XFS?

Что, кроме сбоя NAS или сбоев питания, может вызвать проблемы с целостностью данных в этой конфигурации?

Насколько я понимаю, OpenFiler основан на семействе сборок ОС CentOS / RedHat. Сервер Linux nfs - не лучший вариант для начала *, а у CentOS / RedHat он хуже среднего.

* = по сравнению с файловыми системами NetApp, * bsd или серверами Solaris.

(Интересно, откажусь ли я от этого?)

Я бы много подумал об использовании синхронизации. Мне вспоминается речь Грязного Гарри «Тебе повезет?».

NFS v2 и v3 спроектированы таким образом, что, когда запись передается от сервера клиенту, данные находятся на диске. Это позволяет NFS быть без состояния, и, следовательно, сервер МОЖЕТ перезагружаться между каждым запросом. Надеюсь, что нет, но это могло случиться.

Это означает, что если клиент видит ACK при записи, ему больше не нужно заботиться о данных, находящихся на диске.

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

Да, «синхронизация» определенно сильно снижает производительность записи. Я бы никогда не стал рассматривать это, если бы не требовались высокие требования к целостности данных. Если у вас нет RAID и ИБП с резервным питанием от батарей, даже не беспокойтесь, потому что это в любом случае будет мало или не будет иметь никакого эффекта.

"ext3 data = journal" тоже не помогает. Если вы жаждете производительности записи, откажитесь от ext3 и перейдите на xfs, это намного быстрее, что даже не смешно.