Bagaimana cara me-mount opsi _netdev di / etc / fstab bekerja?


24

Saya ingin tahu apa mekanisme yang tepat (implementasi) yang digunakan untuk menunda pemasangan sampai setelah antarmuka jaringan aktif ketika seseorang menggunakan _netdevopsi /etc/fstab?
Apakah systemdmengubah perilaku ini?
Juga, apa delay_connectpilihan untuk sshfs menyediakan apa yang _netdevtidak?

Dari mount halaman manual :

_netdev
Filesystem berada pada perangkat yang memerlukan akses jaringan (digunakan untuk mencegah sistem dari mencoba me-mount sistem file ini sampai jaringan telah diaktifkan pada sistem).

Dari sshfs halaman manual :

-o delay_connect
menunda koneksi ke server

Jawaban:


25

SysV Init

The /etc/init.d/mountall.shskrip init tunggangan filesystem lokal saja:

mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev

Sistem file lain dipasang oleh skrip init yang terpisah, seperti misalnya /etc/init.d/mountnfs.sh, yang menyatakan (melalui header LSB) ketergantungannya $network. Jadi ini bisa dijadwalkan nanti, setelah jaringan dinyalakan, sementara mountall.shbisa berjalan jauh lebih awal.

systemd

Unit pemasangan lokal ditarik oleh local-fs.target, yang jauh oleh remote-fs.target. systemd-fstab-generatormemindai /etc/fstab, menghasilkan unit mount dan menugaskan ini ke target di atas berdasarkan kondisi yang mirip dengan di atas.

delay_connect

Opsi ini berarti bahwa sshfs tidak akan memulai koneksi SSH ke server jarak jauh saat mount, tetapi hanya akan melakukannya pada operasi sistem file pertama yang benar-benar membutuhkannya. Ini menunda pelaporan kesalahan, tetapi mungkin merupakan solusi yang berguna dalam beberapa kasus, misalnya jika sistem init Anda belum mendapatkan informasi yang cukup untuk memesan operasi pemasangan dengan benar. "Jaringan" sedang "naik" adalah istilah yang agak longgar , dan meskipun orang dapat menambahkan dependensi tambahan sewenang - wenang ke unit mount yang tidak membantu jika peristiwa pemicu bukan bagian dari transaksi bootup (dalam bahasa sistemd).


Jadi, Anda mengatakan bahwa _netdevitu tidak dimaksudkan sebagai argumen yang dilewatkan ke proses yang melakukan mount (dan yang spesifik untuk tipe mount seperti ext4/btrfs/cifs/fuse) tetapi dimaksudkan untuk dibaca oleh proses / skrip lain yang berdasarkan pada flag ini memutuskan kapan selama proses boot mount ini harus dieksekusi. Iya nih? Jika demikian maka saya curiga inilah alasan mengapa argumen ini dimulai dengan garis bawah sehingga untuk membedakannya dari argumen formal lainnya .
Piotr Dobrogost

Iya nih. Jika Anda meneruskan _netdevopsi ke mountperintah, itu akan terlihat /proc/mountstetapi tidak memiliki efek lain.
Ferenc Wágner

Pertanyaan bonus; apakah ini didokumentasikan di suatu tempat?
Piotr Dobrogost

1
The me-mount pengguna berisi: "SISTEM BERKAS-INDEPENDEN MOUNT PILIHAN - Beberapa pilihan ini hanya berguna ketika mereka muncul dalam /etc/fstab. File" Nah, _netdev(didokumentasikan agak lambat) adalah contoh yang bagus untuk ini.
Ferenc Wágner

2
Opsi _netdev diabaikan di mount (8) secara default. Opsi hanya digunakan oleh skrip init. - bugzilla.redhat.com/show_bug.cgi?id=607309#c4
Piotr Dobrogost

18

Dari man systemd.mountuntuk versi 231 dari systemd:

Mount unit yang mengacu pada sistem file lokal dan jaringan dibedakan oleh spesifikasi tipe sistem file mereka. Dalam beberapa kasus ini tidak cukup (misalnya mount berbasis perangkat blok jaringan, seperti iSCSI), dalam hal ini _netdev dapat ditambahkan ke string opsi mount unit, yang memaksa systemd untuk mempertimbangkan unit mount sebagai mount jaringan.


Awsome! Tidak tahu mengapa jawaban ini belum dipilih.
Valentin Bajrami

1

Upstart/Udev

Untuk upstartdan / atau udevsistem berbasis ini sedikit berbeda.

Kelihatannya udev masih akan mencoba untuk me-mount sistem file NFS dan netfsmerupakan jaring pengaman untuk saat itu gagal.

Harap perbaiki saya jika saya salah. bagaimanapun juga, jawaban ini hanya relevan untuk beberapa sistem warisan terbaru (Ubuntu 14.04 LTS, RHEL6).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.