У меня очень непоследовательная работа с NFS между двумя хриплыми машинами, и я не могу этого объяснить.
Настроить:
Машина 1 'video1': двойной 5506 Вт / 12 ГБ оперативной памяти, XFS на 8x3 ТБ RAID6, экспортированный как 'video1' из '/ mnt / storage'
Машина 2 «storage1»: Phenom X2 @ 3,2 ГГц с оперативной памятью 8 ГБ, ZFS на 5x2 ТБ экспортируется как «storage1» из / mnt / storage1-storage
Локальная производительность записи:
mackek2@video1:/mnt/storage/testing$ dd if=/dev/zero of=localwrite10GB bs=5000k count=2000
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 16.7657 s, 611 MB/s
Локальная производительность чтения:
Оба подключены к одному и тому же гигабитному коммутатору HP, а iperf обеспечивает невероятную скорость 940 Мбит / с в обоих направлениях.
Моя проблема в том, что когда я пишу в экспорт видео1 из хранилища1, производительность повсюду. Кажется, что для первых нескольких (5-7) концертов передачи файлов (я надеюсь переместить файлы AVCHD или MJPEG объемом 30-120 ГБ как можно быстрее) производительность снижается с 900 Мбит / с до 150-180 Мбит / с, так что время медленно, как 30 Мбит / с. Если я перезагружаю сервер ядра NFS, производительность поднимается еще на несколько концертов.
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GB count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 223.794 s, 45.8 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GBTest2 count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 198.462 s, 51.6 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=bigfile776 count=7000 bs=2000K
7000+0 records in
7000+0 records out
14336000000 bytes (14 GB) copied, 683.78 s, 21.0 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite15GB count=3000 bs=5000K
3000+0 records in
3000+0 records out
15360000000 bytes (15 GB) copied, 521.834 s, 29.4 MB/s
Когда дела идут быстро, nfsiostat на клиенте выдает средние значения RTT в несколько мс, но при снижении производительности он достигает RTT более 1,5 секунды. Кроме того, глубина записи в CPU увеличивается до 8 во время записи.
Теперь, когда я читаю из того же экспорта, я получаю красивые 890 Мбит / с или несколько мегабит в секунду за все чтение.
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite10GBTest2 of=/dev/null
20000000+0 records in
20000000+0 records out
10240000000 bytes (10 GB) copied, 89.82 s, 114 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite15GB of=/dev/null
30000000+0 records in
30000000+0 records out
15360000000 bytes (15 GB) copied, 138.94 s, 111 MB/s
То же самое происходит с хранилищем1 в качестве сервера NFS. Очередь ЦП подпрыгивает, скорость падает до дерьма, и я вырываю волосы.
Я попытался увеличить число демонов NFS до 64, и оно все еще выплескивается после нескольких концертов.
источник
Ответы:
Вы не включаете параметры монтирования или экспорта, поэтому в NFS есть ряд факторов, которые могут повлиять на производительность. Я бы порекомендовал попробовать следующие варианты для максимальной производительности и надежности NFS (исходя из моего опыта):
Варианты монтирования:
tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768
Параметры экспорта:
async
источник
nfsvers=3
это не было необходимо.nfsvers=3
это не так важно. В Linux при монтировании NFS по умолчанию использовалась NFS версии 2, если вы не указали версию 3. В этих случаях было очень полезно явно установить версию. В современных выпусках mount будет согласовывать, начиная с v4, затем пробуя v3, затем возвращаясь к v2.