17 Aralık 2008

NFS ve Xen sorunu, çözüm UDP

Saç baş yolduran bir sorunla karşılaşan olursa yaşadıklarımızı yaşamasın diye günlüğe yazma ihtiyacı duydum.

Xen sanal makina altyapısını kullanan sanal makinalarımız var, ve bunlar NFS(Network File System: Ağ Dosya Sistemi) ile bir başka sunucudan kullanıcı ev dizinlerine erişiyorlar.

Bugün ilginç bir şekilde NFS işlemleri yavaşladı, dosyalara erişim ve IMAP sunucusu için elzem olan kilitleme işlemleri çooook uzun sürüyordu. IMAP sunucunun tepki vermediğini düşünen IMAP istemcisi ise (Thunderbird) tekrar tekrar bağlantı açıp sunucunun işini daha da zorlaştırıyordu.

İki koldan yaptığımız internet aramalarından çıkan çözüm önerilerinin tamamını tükettikten sonra (4 saat kadar sürdü bu) bir de IRC'ye sormak istedim. Daha önce de çözümsüz gibi görünen sorunları yaşamış birilerine IRC'de denk geldiğim olmuştu çünkü. Ancak "faydalı cevap/toplam soru" oranı düşük olduğu için yine son çare olarak gördüm. Freenode'da #solaris kanalına sorduk (NFS sunucu solaris, #nfs kanalında 10 kişi vardı ve cevap veren olmadı)

"UDP ile bağlan"

Dedi birisi, ve sorun çözüldü. Ben varsayılan olarak NFS'in UDP üzerinden çalıştığını düşünüyordum, ancak protokol belirtmediğinizde Deban Etch sürümü TCP bağlantısı kuruyormuş. NFS bağlama seçenekleri arasına "proto=udp" ekleyince sorunlar kuş oldu uçtu. Bunu komut satırından yapmak için

mount -t nfs -o proto=udp sunucu:/dizin /hedef
ve autofs kullanıyorsanız /etc/auto.master dosyasında, mevcut seçeneklerin yanına "proto=udp" ayarını aşağıdaki gibi eklemelisiniz.
/dizin map --ghost,intr,proto=udp

Bu meselenin sadece Xen altında çalışan sanal makinalarda ortaya çıktığını tekrar hatırlatayım.


ENGLISH VERSION

Today we had a problem with Xen virtual machines. Their NFS mounts started working very slow. Access to files and file locking were problematic and the IMAP server was crawling.

Web searches did not lead us to a solution, so we asked on #solaris IRC channel on Freenode.

It seems there is a problem with Xen guests, NFS and TCP. Switching to NFS mount over UDP did the trick. Use "-o proto=udp" as an option to mount command, or put "proto=udp" at the end of the map line in /etc/auto.master if you are using autofs. I tought that NFS used UDP by default but Debian Etch does not seem to agree.

Hiç yorum yok: