automount nfs: pengaturan batas waktu autofs untuk server yang tidak dapat diandalkan - bagaimana cara menghindari hangup?

18

Saya menjalankan server kecil untuk bagian flat kami. Ini sebagian besar file server dengan beberapa layanan tambahan. Klien adalah mesin Linux (sebagian besar Ubuntu, tetapi beberapa distro lain juga) dan beberapa Mac (-Buku) di antaranya (tapi mereka tidak penting untuk pertanyaan). Server menjalankan Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', sistem tempat saya melakukan pengaturan dan pengujian menjalankan 11.10 'Desktop Edition'. Kami menjalankan saham kami dengan Samba (yang lebih kami kenal) untuk beberapa waktu tetapi kemudian bermigrasi ke NFS (karena kami tidak memiliki pengguna Windows di LAN dan ingin mencobanya) dan sejauh ini semuanya berfungsi dengan baik .

Sekarang saya ingin mengatur pemasangan otomatis dengan autofs untuk memperlancar segalanya (hingga sekarang semua orang memasang saham secara manual bila diperlukan). Pemasangan otomatis tampaknya juga berfungsi. Masalahnya adalah "server" kami tidak beroperasi 24/7 untuk menghemat energi (jika seseorang membutuhkan barang-barang dari server, ia mengaktifkannya dan mematikannya setelah itu, jadi ia hanya berjalan beberapa jam setiap hari). Tetapi karena pengaturan autofs klien menutup sering berhenti ketika server tidak berjalan.

  • Saya dapat memulai semua klien dengan baik, bahkan ketika server tidak berjalan.

  • Tetapi ketika saya ingin menampilkan direktori (dalam terminal atau nautilus), yang berisi tautan simbolik ke bagian di bawah /nfsketika server tidak berjalan, hang selama setidaknya dua menit (karena autofs tidak dapat terhubung ke server tetapi tetap mencoba, saya kira).

    • Apakah ada cara untuk menghindarinya? Sehingga pemasangan akan tertunda hingga perubahan ke direktori atau sampai konten direktori itu diakses? Tidak ketika "melihat" tautan ke bagian di bawah /nfs? Saya pikir tidak, tapi mungkin mungkin untuk tidak mencoba mengaksesnya begitu lama? Dan beri saya direktori kosong atau "tidak dapat menemukan / terhubung ke dir itu" atau sesuatu seperti itu.
  • Ketika server berjalan, semuanya berfungsi dengan baik.

  • Tetapi ketika server dimatikan, sebelum bagian dilepas, alat (suka dfatau ll) hang (dengan asumsi karena mereka pikir bagian itu masih aktif tetapi server tidak akan merespons lagi).

    • Apakah ada cara untuk meng-unmount share secara otomatis, ketika koneksi terputus?
  • Juga klien tidak akan mematikan atau memulai ulang ketika server sedang down dan mereka masih berbagi mount. Mereka menggantung (tampaknya seperti tak terbatas) dalam " membunuh proses yang tersisa " dan sepertinya tidak ada yang terjadi.

Saya pikir itu semua bermuara pada nilai batas waktu yang rapi untuk pemasangan dan pelepasan. Dan mungkin untuk menghapus semua saham ketika koneksi ke server terputus.

Jadi pertanyaan saya adalah: Bagaimana cara menangani ini? Dan sebagai bonus: apakah ada cara yang baik untuk menghubungkan di dalam /nfstanpa perlu me-mount saham asli (opsi autofs atau mungkin menggunakan FS palsu /nfsyang akan diganti ketika mount terjadi atau sesuatu seperti itu)?

Pengaturan Saya

The Pengaturan NFS cukup dasar tetapi melayani kita dengan baik sejauh (menggunakan NFSv4 ):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / ekspor

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Di bawah root ekspor, /srvkami mendapat dua direktori dengan bind:

/ etc / fstab (Server)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

Yang pertama kebanyakan hanya baca (tapi saya menegakkannya melalui atribut file dan kepemilikan alih-alih pengaturan NFS) dan yang ke-2 adalah rw untuk semua. Catatan: Mereka tidak memiliki entri tambahan di / etc / ekspor , namun memasangnya secara terpisah berfungsi.

Di sisi klien mereka mendapatkan pengaturan /etc/fstabdan dipasang secara manual sesuai kebutuhan ( mortonadalah nama server dan itu diselesaikan dengan baik).

/ etc / fstab (Klien)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Untuk pengaturan autofs saya menghapus entri dari /etc/fstabpada klien dan mengatur sisanya seperti ini:

/etc/auto.master

/nfs    /etc/auto.nfs

Pertama saya mengikat executable yang disediakan /etc/auto.net(Anda dapat melihatnya di sini ) tetapi tidak secara otomatis me-mount apa pun untuk saya. Lalu saya menulis /etc/auto.nfsberdasarkan pada beberapa HowTos yang saya temukan online:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

Dan itu agak berhasil ... Atau akan bekerja jika server akan menjalankan 24/7. Jadi, kami mendapatkan hangup ketika klien melakukan boot tanpa server berjalan atau ketika server turun saat berbagi tempat yang masih terhubung.

Brutus
sumber

Jawaban:

2

Menggunakan sistem pemasangan apa pun, Anda ingin menghindari situasi di mana Nautilus mendaftar direktori yang berisi pemasangan yang mungkin atau tidak dipasang. Jadi, dengan autofs, jangan membuat mounts, misalnya, / nfs. Jika Anda melakukannya, ketika Anda menggunakan Nautilus untuk mendaftar 'Sistem File' itu akan mencoba untuk membuat mount apa pun yang seharusnya ada di / nfs, dan jika upaya mount gagal, butuh beberapa menit untuk menyerah.

Jadi yang saya lakukan adalah mengubah auto.master untuk membuat mount di / nfs / mnt.

Ini memperbaiki masalah bagi saya. Saya hanya mendapatkan penundaan yang lama jika saya mencoba membuat daftar isi / nfs / mnt, yang dapat saya hindari dengan mudah.

Tim Passingham
sumber
20

Pasang NFS-share pada klien menggunakan opsi-mount "bg, intr, hard".

Paling penting dalam kasus Anda adalah "bg" untuk latar belakang - yang memberi tahu sistem untuk tidak memblokir ketika server tidak tersedia.

"intr" untuk interrruptable - sehingga Anda dapat membunuh mount yang tergantung pada klien dengan perintah kill.

"Keras" adalah kebalikan dari "lunak". Perbedaannya adalah bahwa "hard" akan terus berusaha tanpa henti sementara "soft" akan secara eksponensial mundur dari coba lagi ketika server tidak tersedia.

Nils
sumber
Terima kasih atas tanggapannya. Saya tidak dapat menguji sekarang karena saya tidak di rumah, tetapi setelah berusaha mendapatkan halaman manual (lagi), saya punya beberapa pertanyaan lagi: harddan bgterdengar berlawanan secara intuitif dengan saya pada awalnya. Saya ingin mount tidak mencoba lagi dan segera kembali jika itu menebus? intrtampaknya baik-baik saja tetapi juga tampaknya tidak berfungsi lagi: " Opsi pemasangan intr / nointr dihentikan setelah kernel 2.6.25. Hanya SIGKILL yang dapat menghentikan operasi NFS yang tertunda pada kernel ini, dan jika ditentukan, opsi pemasangan ini diabaikan untuk memberikan kompatibilitas mundur. dengan kernel yang lebih tua. "?
Brutus
2
Hard akan mencoba lagi tanpa akhir - bg TIDAK akan memblokir jika mount tidak memungkinkan saat ini. Hasilnya akan dipasang saat tersedia, tetapi semua operasi lain akan berjalan. INTR tampaknya menjadi default sekarang - yang sangat bagus. Pada awalnya Anda harus me-reboot klien yang menggantung jika server NFS Anda mati ...
Nils
Aku hanya diuji, tetapi menambahkan hard,bguntuk /etc/auto.mastertampaknya perubahan apa-apa. A time ls -l ~(dir pengguna saya berisi symlink ke /nfs/upload) masih membutuhkan waktu lebih dari dua menit, ketika server tidak berjalan.
Brutus
Apakah Anda memulai ulang autofs? Hanya submap-perubahan yang akan menyebar tanpa restart dari autofs.
Nils
Saya lakukan:sudo reload autofs && sudo restart autofs
Brutus
7

Saya bermain-main lagi dengan beberapa opsi dari halaman manual. Semua bg,hard, bg,soft, fg,harddan fg,softmemberi saya kembali kali lebih dari dua minuets.

Pengaturan retrans=1,retry=0(dikombinasikan dengan salah satu di atas), memberi saya waktu sekitar tiga detik. Cukup layak. Meskipun saya tidak yakin apa arti setiap kombinasi. Akan menggali lebih jauh.

Saya juga menemukan opsi autofs MOUNT_WAITdan UMOUNT_WAIT. Saya belum bisa mendapatkan beberapa hasil berbeda dengan mereka tetapi saya akan terus berusaha. Sepertinya lika cara yang baik untuk menggunakan "lebih aman" (alias coba lagi, dll) opsi NFS tetapi waktu pengembalian cepat untuk autofs, atau tidak?

Brutus
sumber
1
Tampaknya juga ada pilihan lain, seperti yang rsize=32768,wsize=32768,noatimedisebutkan di sini: techrepublic.com/blog/opensource/…
Ehtesh Choudhury
-1

Untuk mengatur sistem file NFS agar dipasang secara otomatis setiap kali Anda memulai sistem Red Hat Linux Anda, Anda perlu menambahkan entri untuk sistem file NFS ke file / etc / fstab. File / etc / fstab berisi informasi tentang semua jenis sistem file yang dipasang (dan tersedia untuk dipasang) untuk sistem Red Hat Linux Anda. EX:: nfs Sesuai dengan nama host, alamat IP, atau nama domain yang sepenuhnya memenuhi syarat dari server yang mengekspor sistem file. Ini adalah jalur ke direktori yang diekspor. Yang menentukan di mana pada sistem file lokal untuk me-mount direktori yang diekspor. Mount point ini harus ada sebelum / etc / fstab dibaca atau mount akan gagal. Area menentukan opsi mount untuk sistem file. Misalnya, jika area opsi menyatakan rw, suid, sistem file yang diekspor akan di-mount read-write dan pengguna dan groupid yang ditetapkan oleh server akan digunakan. Perhatikan bahwa tanda kurung tidak boleh digunakan di sini

M.Zaman
sumber