NFSv4 menyediakan akses rangkaian bersatu. Buat perkongsian NFS menggunakan konsol Pengurus Pelayan. Memasang NFS jauh

NFS membenarkan anda berkongsi direktori pada mesin Unix. Ketidakamanan NFS, dan khususnya NIS, dikaitkan dengan RPC - dari segi bilangan pelbagai eksploitasi, RPC nampaknya menjadi pemimpin tidak rasmi (kecuali Sendmail). Memandangkan protokol ini ditujukan untuk rangkaian dalaman, ia perlu dilindungi daripada pengguna "mereka". Walaupun sebelum menggunakannya, anda perlu memutuskan sama ada ia benar-benar diperlukan.

Pada rangkaian rumah, mereka boleh menjadi agak berguna, tetapi pada rangkaian korporat, atas sebab keselamatan, adalah lebih baik untuk mencari alternatif yang lebih selamat.

Sistem fail NFS.

Sistem Fail Rangkaian Sistem fail, NFS) telah dibangunkan oleh Sun sebagai cara untuk mengakses fail yang terletak pada mesin Unix lain dalam rangkaian tempatan. NFS tidak direka bentuk dengan mengambil kira keselamatan sama sekali, yang telah membawa kepada banyak kelemahan selama ini.

NFS boleh menjalankan TCP atau UDP dan menggunakan sistem RPC, yang bermaksud aplikasi yang biasa terdedah berikut mesti dijalankan: portmapper, nfs, nlockmgr (lockd), rquotad, statd dan mountd.

Tidak perlu menjalankan NFS - anda perlu mencari penyelesaian alternatif. Jika NFS masih diperlukan, di sini kita akan bercakap tentang cara meminimumkan risiko menggunakannya.

/etc/exports

Langkah pertama ialah memilih mesin yang akan mengeksport sistem fail mereka. Kemudian anda boleh menentukan mesin yang dibenarkan untuk menyambung ke pelayan NFS (atau pelayan, jika ada) pada rangkaian. Tidak perlu menggunakan NFS pada mesin secara terus (terus) yang disambungkan ke Internet. Selepas mesin dipilih, anda perlu memilih direktori pada mesin ini yang akan dieksport.

Direktori eksport ditakrifkan dalam fail /etc/exports. Format setiap entri adalah mudah: nama direktori, senarai pengguna yang dibenarkan akses dan mod akses. Cth:

Akses penuh (baca/tulis) ke direktori /home/pengguna dibenarkan ke mesin dengan alamat IP 10.0.0.6. Perkara terbaik ialah tidak memberikan akses penuh, tetapi mengehadkannya kepada akses baca sahaja (ro). Di samping itu, anda juga boleh menentukan pilihan berikut:

  • selamat- permintaan mount mesti datang dari port istimewa (bernombor sehingga 1024). Ini bermakna arahan mount telah dimasukkan oleh pengguna dengan keistimewaan root.
  • Akar_labu- permintaan daripada pengguna root akan dianggap sebagai permintaan daripada pengguna tanpa nama. Ini membolehkan anda menyebabkan sekurang-kurangnya kemudaratan kepada sistem. Pilihan ini mesti didayakan.
  • All_squash- semua permintaan (bukan sahaja daripada pengguna root) akan dianggap sebagai datang daripada pengguna tanpa nama. Berguna untuk direktori yang dieksport secara umum.

Jika keropok dengan akses root mendapat akses kepada mesin yang diberi akses rw kepada direktori yang dinyatakan dalam /etc/exports, ia akan mendapat kawalan penuh ke atas sistem fail, jadi ia tidak boleh mengeksport direktori akar (/), dan sistem- direktori penting, contohnya /usr, /bin, /sbin, /lib, /opt dan /etc. Direktori rumah pengguna bagus untuk dieksport.

Di sisi klien, pemasangan sistem fail kongsi mesti dilakukan dengan menentukan pilihan -o nosuid:

# mount -t nfs -o nosuid 10.0.0.3:/home/user/files /mnt/home/frank

Ini akan menghalang keropok yang mempunyai akses kepada pelayan NFS daripada mendapat akses root kepada pelanggan.

Had capaian.

Tanpa mengira perkhidmatan, IPTables mesti digunakan untuk menyekat akses kepada mesin. Dalam kes pelayan NFS, ini amat penting. Apabila menggunakan IPtables, anda mesti ingat bahawa daemon NFS menggunakan port 2049/TCP/UDP.

Sesetengah perkhidmatan RPC, seperti portmapper dan NFS, menggunakan port berterusan (masing-masing 113 dan 2049/tcp/udp), tetapi perkhidmatan RPC lain mempunyai port tidak berterusan, yang menjadikannya sukar untuk menapis paket menggunakan IPtables. Satu-satunya perkara yang diketahui ialah RPC menggunakan port dalam julat 32768-65535.

Jika anda menggunakan kernel 2.4.13 atau lebih baru, kemudian gunakan pilihan -p<порт>anda boleh menentukan port yang tepat untuk setiap perkhidmatan RPC.

Mari lihat fungsi start() daripada /etc/rc.d/init.d/nfslock, yang digunakan untuk memulakan nsflock:

mula()(

#. Mulakan daemon.

jika [ "$USERLAND_LOCKD" ]; kemudian

echo -n $"Memulakan penguncian NFS: "

daemon rpc.lockd

echo -n $"Memulakan statd NFS: "

daemon rpc.statd

echo [ $RETVAL -eq 0 ] && sentuh /var/touch/lock/subsys/nfslock

pulangkan $RETVAL)

Untuk memaksa daemon statd menggunakan port tertentu, anda boleh menggunakan pilihan -p, contohnya daemon rpc.statd -p 32800 (atau mana-mana yang lain - mana-mana yang anda suka). Dengan cara yang sama, anda perlu menetapkan port untuk mountd, nfsd, rquotad - semuanya dilancarkan daripada skrip /etc/rc.d/init.d/nfs:

mula()(

#Mulakan daemon.

tindakan -n $"Memulakan perkhidmatan NFS: " /usr/sbin/exportfs -r

jika t _x /usr/sbin/rpc.quotad ] ; kemudian echo -n $"Memulakan kuota NFS: " daemon rpc.rquotad echo

fi echo -n $"Memulakan NFS dipasang: "

daemon rpc.dipasang 3RPCMOUNTDOPTS

echo -n $"Memulakan daemon NFS: " daemon rpc.nfsd $RPCNFSDOPTS echo touch /var/lock/subsys/nfs

Teknologi untuk menukar port untuk lockd (nlockmgr) berbeza daripada yang di atas (tidak perlu cuba menukar fail /etc/rc.d/init.d/nfslock - tiada apa yang akan berfungsi).

Lockd sama ada dilaksanakan sebagai modul kernel atau disusun secara statik ke dalam kernel. Untuk menukar nombor port, anda perlu membuka fail /etc/modules dan cari pilihan yang dihantar ke modul:

pilihan dikunci nlm_udpport=33000 nlm_tcpport=33000

Memandangkan perkhidmatan RPC menggunakan port statik yang diketahui, IPtables mesti digunakan. Set peraturan berikut menganggap bahawa NFS ialah satu-satunya pelayan yang berjalan pada mesin dan hanya mesin yang disenaraikan dalam fail /usr/local/etc/nfsexports.hosts dibenarkan mengaksesnya:

IPX = "/usr/sbin/iptables"

# Kosongkan semua rantai

$IPT --flush

$IPT -t nat --flush $IPT -t mangle --flush $IPT -X

# Benarkan trafik gelung balik $IPT -A INPUT -i lo -j TERIMA $IPT -A OUTPUT -o lo -j TERIMA

# Peraturan lalai $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP

$IPT -A INPUT -m negeri -negeri DITUBUHKAN,BERKAITAN -j TERIMA $IPT -A OUTPUT -m negeri -negeri BAHARU,TERBUAT,BERKAITAN -j TERIMA

# Benarkan akses kepada setiap komputer

# dinyatakan dalam /usr/local/etc/nfsexports.hosts

untuk hos dalam "cat /usr/local/etc/nfsexports.hosts"; lakukan $IPT -I INPUT -s $host -p tcp -dport 111 -j TERIMA

$IPT -I INPUT -s $host -p udp -dport 111 -j TERIMA

$IPT -I INPUT -s $host -p udp -dport 2049 -j TERIMA

$IPT -I INPUT -s $host -p tcp --dport 32800 -j TERIMA

$IPT -I INPUT -s $host -p tcp --dport 32900 -j TERIMA

$IPT -I INPUT -s $host -p tcp -dport 33000 -j TERIMA

$IPT -I INPUT -s $host -p tcp --dport 33100 -j TERIMA

Sudah tentu, ini hanyalah rangka; banyak lagi peraturan perlu ditambah: sekurang-kurangnya benarkan SSH dan tetapkan beberapa parameter kernel menggunakan /proc.

Terowong NFS melalui SSH.

Singkatan NFS kadangkala bermaksud "Tiada Keselamatan Fail" - tiga perkataan ini bercakap untuk diri mereka sendiri. Oleh itu, adalah sangat penting untuk melindungi trafik NFS. Ini mudah dilakukan menggunakan ssh.

Langkah pertama ialah mengedit fail /etc/exports pada pelayan NFS supaya sistem fail dieksport ke nod tempatan:

Kemudian anda perlu menggunakan SSH untuk memajukan NFS dan port yang dipasang. NFS menggunakan port 2049/udp, dan dipasang, seperti yang dinyatakan, menggunakan nombor port 33000:

# ssh [e-mel dilindungi]-L 200: localhost:2049 -f tidur 120m

# ssh [e-mel dilindungi]-L 200: localhost:33000 -f tidur 120m

Kedua-dua arahan ini menyediakan pengguna dengan shell interaktif, tetapi kerana ia tidak diperlukan, SSH mengeluarkan arahan tidur 120: kembali ke baris arahan, tetapi pemajuan port akan mengambil masa 2 jam lagi.

Memasang sistem fail dari sisi klien kelihatan sangat luar biasa:

mount -t nfs -o nosuid port=200 mountport=210 nfserver.test.net:/home/user /mnt/another

Jika helah ssh tunneling terlalu rumit, anda boleh menggunakan projek SHFS (Shell Filesystem) ( http: //shfs.sourceforge.net/ ), yang memungkinkan untuk mengautomasikan keseluruhan prosedur ini.

Selepas pemasangan, anda mesti mengakses SHFS menggunakan sama ada arahan mount -t shfs atau arahan shfsmount baharu. Sintaks arahan ini adalah serupa dengan yang sebelumnya:

shfsmount [e-mel dilindungi]:/home/user/mnt/user

CFS dan TCFS

Sistem Fail Kriptografi menggunakan penyulitan telus dan penyahsulitan trafik NFS menggunakan Algoritma DES. Di samping itu, ia menyokong pengurusan kunci automatik, yang menjadikan proses itu telus yang mungkin untuk pengguna.

Walaupun CFS dibangunkan untuk SunOS dan BSD, ia agak menarik kerana nampaknya ia merupakan percubaan pertama untuk mengekod fail kongsi secara telus. Sistem Fail Kriptografi Telus (TCFS) menyediakan cara yang lebih telus untuk menyulitkan trafik NFS.

Selain pengekodan data, sistem fail ini menyokong pemeriksaan integriti data.

N FS ( Sistem Fail Rangkaian) terutamanya direka untuk perkongsian fail Dan folder antara / Unix sistem daripada Sistem Mikro Matahari V 1980. Ia membolehkan anda memasang sistem fail tempatan melalui rangkaian dan hos jauh untuk berinteraksi dengan mereka seolah-olah ia dipasang secara setempat pada sistem yang sama. Dengan menggunakan NFS, kita boleh menyediakan perkongsian fail antara Unix V Linux sistem dan Linux untuk sistem Unix.

Faedah NFS

  1. NFS mencipta akses tempatan Kepada fail yang dipadam.
  2. Ia menggunakan seni bina standard pelanggan/pelayan untuk berkongsi fail antara semua mesin berasaskan * NIX.
  3. Dengan menggunakan NFS tidak perlu untuk kedua-dua mesin berjalan pada yang sama OS.
  4. Dengan menggunakan NFS kita boleh menyesuaikan penyelesaiannya penyimpanan berpusat.
  5. Pengguna menerima mereka data tanpa mengira lokasi fizikal mereka.
  6. Automatik kemas kini untuk fail baharu.
  7. Versi yang lebih baru NFS menyokong pemasangan acl, pseudo di bawah akar.
  8. Boleh dilindungi tembok api Dan Kerberos.

Perkhidmatan NFS

Perkhidmatan Sistem V dilancarkan. Pakej pelayan NFS termasuk tiga produk termasuk dalam pakej peta port Dan nfs-Utils.

  1. peta port: Memaparkan panggilan yang dibuat daripada mesin lain ke perkhidmatan yang betul RPC(tidak diperlukan dengan NFSv4).
  2. nfs: menukar permintaan jauh akses awam kepada fail kepada permintaan pada sistem fail tempatan.
  3. rpc.mountd: perkhidmatan ini bertanggungjawab untuk melekap Dan menyahlekap sistem fail.

Fail konfigurasi penting untuk NFS

  1. /etc/exports: fail konfigurasi utamanya NFS, semua dieksport fail Dan katalog, yang ditakrifkan dalam fail ini dan seterusnya pelayan destinasi NFS.
  2. /etc/fstab: Untuk melekap Direktori NFS pada sistem anda tanpa but semula, kita perlu merekodkan /etc/fstab.
  3. /etc/sysconfig/nfs: Fail konfigurasi NFS untuk kawalan pada port mana RPC dan perkhidmatan lain uji bakat.

Menyediakan dan memasang NFS pada pelayan Linux

Untuk mengkonfigurasi pelekap NFS, kami memerlukan sekurang-kurangnya dua kereta Linux/Unix. Di sini dalam tutorial ini, kami akan menggunakan dua pelayan.

  1. Pelayan NFS: nfserver.example.ru dengan IP – 192.168.0.55
  2. Pelanggan NFS: nfsclient.example.ru dengan IP – 192.168.0.60

Memasang Pelayan NFS dan Pelanggan NFS

Kami perlu memasang pakej NFS pada kami pelayan NFS dan juga dengan kereta Pelanggan NFS. Kami boleh memasangnya menggunakan “ ” ( topi merah Linux) dan pakej pemasangan “ apt-get” (Debian Dan Ubuntu).

# yum install nfs-utils nfs-utils-lib # yum install portmap (tidak diperlukan dengan NFSv4) # apt-get install nfs-utils nfs-utils-lib

Sekarang lari perkhidmatan pada kedua-dua mesin.

# /etc/init.d/portmap start # /etc/init.d/nfs start # chkconfig --level 35 portmap on # chkconfig --level 35 nfs on

Selepas memasang pakej dan menjalankan perkhidmatan pada kedua-dua mesin, kami perlu mengkonfigurasi kedua-dua mesin untuk berkongsi fail.

Menyediakan pelayan NFS

Mula-mula, mari kita sediakan pelayan NFS.

Menyediakan direktori eksport

#mkdir/nfsshare

Sekarang kita perlu membuat entri dalam " /etc/exports"Dan mula semula perkhidmatan untuk menjadikan direktori kami boleh dikongsi di web.

# vi /etc/exports /nfsshare 192.168.0.60(rw,sync,no_root_squash)

Dalam contoh di atas, terdapat direktori di bawah / bertajuk " nfsshare", kini dikongsi dengan klien IP " 192.168.0.60 ” dengan keistimewaan membaca Dan rekod (RW), anda juga boleh menggunakan nama hos pelanggan sebaliknya IP dalam contoh di atas.

Tetapan NFS

Beberapa pilihan lain yang boleh kami gunakan dalam fail " /etc/exports” perkongsian fail kelihatan seperti ini.

  1. ro: Dengan pilihan ini kami boleh sediakan akses baca sahaja kepada fail yang dikongsi, iaitu pelanggan hanya akan dapat membaca.
  2. rw: Pilihan ini membenarkan klien ke pelayan akses untuk kedua-duanya membaca Dan rekod dalam katalog am.
  3. penyegerakan: Penyegerakan mengakui permintaan kepada direktori kongsi hanya selepas perubahan telah komited.
  4. no_subtree_check: Pilihan ini menghalang pemeriksaan pokok pokok. Apabila direktori kongsi ialah subdirektori sistem fail yang lebih besar, NFS mengimbas setiap direktori di atasnya untuk menyemak kebenaran dan butirannya. Melumpuhkan pengesahan pokok pokok boleh meningkatkan kebolehpercayaan NFS, tetapi kurangkan keselamatan.
  5. tiada_akar_labu: Frasa ini membenarkan akar, menyambung ke folder tertentu.

Untuk lebih banyak pilihan dengan " /etc/exports“Bacaan yang disyorkan muka surat manual untuk eksport.

Menyediakan klien NFS

Selepas persediaan NFS-pelayan, kita perlukan lekapkan direktori kongsi atau partition ini pada pelanggan pelayan.

Memasang direktori kongsi pada klien NFS

Sekarang Pelanggan NFS, kita perlu lekapkan direktori ini untuk mengaksesnya secara tempatan. Untuk melakukan ini, pertama sekali, kita perlu mengetahui sumber yang tersedia pada pelayan jauh atau pelayan NFS.

# showmount -e 192.168.0.55 Senarai eksport untuk 192.168.0.55: /nfsshare 192.168.0.60

Memasang direktori yang boleh diakses pada NFS

Untuk lekapkan umum NFS direktori, kita boleh menggunakan arahan mount berikut.

# mount -t nfs 192.168.0.55:/nfsshare /mnt/nfsshare

Perintah di atas akan menetapkan direktori kongsi kepada " /mnt/nfsshare” pada pelayan pelanggan. Anda boleh menyemaknya dengan arahan berikut.

#gunung | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) 192.168.0.55:/nfsshare on /mnt type nfs (rw,addr=192.1568.0.0)

Perintah pelekap di atas dilekapkan ke Direktori kongsi NFS pada Pelanggan NFS buat sementara waktu untuk melekapkan direktori NFS secara berterusan pada sistem anda, tanpa mengira but semula, kami perlu membuat entri dalam “ /etc/fstab“.

# vi /etc/fstab

Tambah baris baharu berikut seperti yang ditunjukkan di bawah.

192.168.0.55:/nfsshare /mnt nfs lalai 0 0

Menguji mod pemasangan NFS

Kita boleh menguji kita Pemasangan pelayan NFS dengan mencipta fail ujian pada bahagian pelayan dan semak kehadirannya dihidupkan Pelanggan NFS sebelah atau sebaliknya.

Pada bahagian pelayan nfserver

Kami telah mencipta fail teks baharu yang dipanggil “ nfstest.txt” dalam direktori kongsi ini.

# cat > /nfsshare/nfstest.txt Ini ialah fail ujian untuk menguji kerja persediaan pelayan NFS.

Pada bahagian klien nfsclient

Pergi ke direktori kongsi di pelayan pelanggan dan anda akan menemui fail kongsi tanpa sebarang kemas kini manual atau perkhidmatan but semula.

# ll /mnt/nfsshare jumlah 4 -rw-r--r-- 1 punca 61 Sep 21 21:44 nfstest.txt root@nfsclient ~]# cat /mnt/nfsshare/nfstest.txt Ini ialah fail ujian untuk menguji kerja persediaan pelayan NFS.

Mengeluarkan pelekap NFS

Jika anda mahu nyahlekap direktori kongsi ini daripada pelayan selepas anda selesai dengan perkongsian fail anda boleh dengan mudah nyahlekap direktori khusus itu menggunakan arahan " umount“. Lihat contoh ini di bawah.

Root@nfsclient ~]# umount /mnt/nfsshare

Anda dapat melihat bahawa pelekap telah dialih keluar daripada sistem fail.

# df -h -F nfs

Anda akan melihat bahawa direktori kongsi ini tidak lagi tersedia.

Perintah Penting untuk NFS

Beberapa arahan yang lebih penting untuk NFS .

  1. showmount -e: Rancangan tersedia objek yang dikongsi pada komputer tempatan anda
  2. showmount -e : Senarai yang tersedia objek yang dikongsi pada jauh pelayan
  3. showmount -d: Senarai semua subdirektori
  4. exportfs -v: Memaparkan senarai yang dikongsi fail Dan pilihan pada pelayan
  5. exportfs -a: Mengeksport semua objek tersedia yang disenaraikan dalam /etc/exports, atau nama
  6. exportfs -u: Eksport semula semua objek tersedia yang disenaraikan dalam /etc/exports, atau nama
  7. exportfs -r: Kemas kini senarai pelayan selepas perubahan /etc/exports

Ini semua tentang Lekapkan NFS pada masa ini, jika berminat, boleh baca panduan tentang itu. Tinggalkan awak

#image.jpgSelamat bersenang-senang, pembaca dan tetamu blog saya. Terdapat rehat yang sangat lama antara siaran, tetapi saya kembali dalam perjuangan). Dalam artikel hari ini saya akan melihat Operasi protokol NFS, dan menyediakan pelayan NFS dan klien NFS pada Linux.

Pengenalan kepada NFS

NFS (Sistem Fail Rangkaian- sistem fail rangkaian) pada pendapat saya - penyelesaian yang sempurna pada rangkaian tempatan, di mana anda memerlukan pantas (lebih pantas berbanding SAMBA dan kurang intensif sumber berbanding sistem fail jauh dengan penyulitan - sshfs, SFTP, dll...) pertukaran data dan keselamatan maklumat yang dihantar tidak berada di barisan hadapan . protokol NFS membolehkan anda melekapkan sistem fail jauh melalui rangkaian ke dalam pepohon direktori tempatan, seolah-olah ia adalah sistem fail cakera yang dipasang.

Oleh itu, aplikasi tempatan boleh berfungsi dengan sistem fail jauh seolah-olah ia adalah aplikasi tempatan. Tetapi anda perlu berhati-hati (!) dengan menyediakan NFS, kerana dengan konfigurasi tertentu adalah mungkin untuk membekukan sistem pengendalian pelanggan menunggu I/O yang tidak berkesudahan.

protokol NFS berasaskan kerja protokol RPC, yang masih di luar pemahaman saya)) jadi bahan dalam artikel akan menjadi sedikit kabur... Sebelum anda boleh menggunakan NFS, sama ada pelayan atau pelanggan, anda mesti memastikan bahawa kernel anda mempunyai sokongan untuk fail NFS sistem. Anda boleh menyemak sama ada kernel menyokong sistem fail NFS dengan mencari kehadiran baris yang sepadan dalam fail /proc/filesystems:

ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd

Jika baris yang dinyatakan tiada dalam fail /proc/filesystems, maka anda perlu memasang pakej yang diterangkan di bawah. Ini mungkin akan membolehkan anda memasang modul kernel bergantung untuk menyokong sistem fail yang sesuai.

Jika, selepas memasang pakej, sokongan NFS tidak dipaparkan dalam fail yang ditetapkan, maka anda perlu menyusun semula kernel untuk mendayakan fungsi ini.

cerita Sistem Fail Rangkaian

protokol NFS dibangunkan oleh Sun Microsystems dan mempunyai empat versi dalam sejarahnya. NFSv1 telah dibangunkan pada tahun 1989 dan adalah percubaan, berjalan pada protokol UDP. Versi Satu diterangkan dalam RFC 1094.

NFSv2 dikeluarkan pada tahun yang sama 1989, diterangkan oleh RFC1094 yang sama dan juga berdasarkan protokol UDP, sementara pada masa yang sama membenarkan untuk membaca sekurang-kurangnya 2GB daripada fail. NFSv3 telah dimuktamadkan pada tahun 1995 dan diterangkan dalam RFC 1813.

Inovasi utama versi ketiga ialah sokongan untuk fail besar, sokongan tambahan untuk protokol TCP dan paket TCP yang lebih besar, yang mempercepatkan prestasi teknologi dengan ketara. NFSv4 telah dimuktamadkan pada tahun 2000 dan diterangkan dalam RFC 3010, disemak pada tahun 2003 dan diterangkan dalam RFC 3530.

Versi ke-4 termasuk peningkatan prestasi, sokongan untuk pelbagai cara pengesahan (khususnya, Kerberos dan LIPKEY dengan pengenalan protokol RPCSEC GSS) dan senarai kawalan akses (kedua-dua jenis POSIX dan Windows). NFS v4.1 telah diluluskan oleh IESG pada tahun 2010 dan menerima RFC 5661.

Inovasi asas versi 4.1 ialah spesifikasi pNFS - NFS Selari, mekanisme untuk akses selari klien NFS kepada data daripada pelayan NFS berbilang teragih. Kehadiran mekanisme sedemikian dalam sistem fail rangkaian sampel akan membantu membina sistem storan dan maklumat "awan" yang diedarkan.

pelayan NFS

Memandangkan kita ada NFS- Ini rangkaian sistem fail, anda perlu mengkonfigurasi jaring dalam Linux. (Anda juga boleh membaca artikel konsep utama rangkaian). Seterusnya anda perlu memasang pakej yang sesuai. Pada Debian ini ialah pakej nfs-kernel-server dan nfs-common, pada RedHat ini ialah pakej nfs-utils.

Dan juga, anda perlu membenarkan syaitan berjalan pada tahap pelaksanaan yang sesuai (arahan dalam RedHat - /sbin/chkconfig nfs on, dalam Debian - /usr/sbin/update-rc.d nfs-kernel-server defaults).

Pakej yang dipasang dalam Debian dilancarkan dalam susunan berikut:

ARKIB ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx Satu akar punca 20 Okt Lapan Belas 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx Satu akar punca 20 tujuh Okt 20 dua 01:23 S16nfs-kernel-server -> ../init .d/nfs-kernel-server

Dengan kata lain, ia bermula dahulu nfs-common, kemudian pelayan itu sendiri nfs-kernel-server.

Dalam RedHat keadaannya adalah serupa, dengan satu-satunya pengecualian bahawa skrip pertama dipanggil nfslock, dan pelayan dipanggil secara ringkas nfs. Tentang nfs-common Tapak debian secara literal memberitahu kami perkara berikut: fail kongsi untuk klien dan pelayan NFS, pakej ini mesti dipasang pada mesin yang akan berfungsi sebagai klien atau pelayan NFS.

Pakej ini termasuk program: lockd, statd, showmount, nfsstat, gssd dan idmapd. Dengan melihat kandungan skrip permulaan /etc/init.d/nfs-common anda boleh menjejaki urutan berikut berfungsi: skrip menyemak kehadiran fail binari boleh laku /sbin/rpc.statd, menyemak kehadiran dalam fail /etc/default/nfs-common, /etc/fstab dan /etc/exports ciri yang memerlukan berjalan syaitan idmapd Dan gssd, memulakan daemon /sbin/rpc.statd, kemudian sebelum memulakan /usr/sbin/rpc.idmapd dan /usr/sbin/rpc.gssd menyemak kehadiran executable ini fail binari, kemudian untuk demon /usr/sbin/rpc.idmapd menyemak kehadiran modul kernel sunrpc, nfs dan nfsd, serta sokongan untuk sistem fail rpc_pipefs dalam kernel (dengan kata lain, kehadirannya dalam /proc/ fail sistem), jika semuanya berjaya, ia akan dilancarkan /usr/sbin/rpc.idmapd. Selain itu, untuk syaitan /usr/sbin/rpc.gssd menyemak modul kernel rpcsec_gss_krb5 dan memulakan syaitan.

Jika anda melihat kandungannya Skrip permulaan pelayan NFS pada Debian (/etc/init.d/nfs-kernel-server), maka anda boleh mengikuti urutan berikut: pada permulaan, skrip menyemak kewujudan fail /etc/exports, kehadiran modul kernel nfsd, kehadiran sokongan untuk sistem fail NFS dalam kernel Linux (perkataan lain dalam fail /proc/filesystems), jika semuanya sudah sedia, maka syaitan akan mula /usr/sbin/rpc.nfsd, kemudian semak sama ada parameter NEED_SVCGSSD ditetapkan (ditetapkan dalam fail pilihan pelayan /etc/default/nfs-kernel-server) dan, jika ditetapkan, memulakan syaitan /usr/sbin/rpc.svcgssd, yang terakhir melancarkan syaitan /usr/sbin/rpc.mountd. daripada daripada skrip ini itu jelas Operasi pelayan NFS terdiri daripada demons rpc.nfsd, rpc.mountd dan jika pengesahan Kerberos digunakan, maka demon rcp.svcgssd. Dalam topi merah, demon rpc.rquotad dan nfslogd masih berjalan (Atas sebab tertentu dalam Debian saya tidak menemui maklumat tentang syaitan ini dan sebab ketiadaannya, nampaknya ia telah dipadamkan...).

Daripada ini menjadi jelas bahawa Pelayan Sistem Fail Rangkaian terdiri daripada proses berikut (baca - setan), terletak dalam direktori /sbin dan /usr/sbin:

  • rpc.statd- Pemantauan status rangkaian yang mustahil (aka Network Status Monitor, aka NSM). Ia membolehkan anda membatalkan kunci dengan betul selepas ranap/but semula. Untuk memberitahu tentang pelanggaran, gunakan program /usr/sbin/sm-notify. Imp statd berfungsi pada kedua-dua pelayan dan pelanggan. Sebelum ini, pelayan ini diperlukan untuk rpc.lockd berfungsi, tetapi kernel kini bertanggungjawab untuk mengunci (nota: kalau tak silap #image.jpg). (Program RPC 100 ribu 20 satu dan 100 ribu 20 empat - dalam versi baharu)
  • rpc.lockd- Lockd lock imp (aka pengurus kunci NFS (NLM)) mengendalikan permintaan kunci fail. Imp penyekat berfungsi pada kedua-dua pelayan dan pelanggan. Pelanggan meminta penguncian fail, dan pelayan membenarkannya. (lapuk dan tidak digunakan dalam pengedaran baharu sebagai setan. Fungsinya dalam pengedaran moden (dengan kernel lebih lama daripada 2.2.18) dilakukan oleh kernel, lebih tepat lagi oleh modul kernel (lockd).) (RPC program 100024)
  • rpc.nfsd- Syaitan utama pelayan NFS ialah nfsd (dalam versi baharu kadangkala dipanggil nfsd4). Imp ini menyediakan permintaan pelanggan NFS. Parameter RPCNFSDCOUNT dalam fail /etc/default/nfs-kernel-server pada Debian dan NFSDCOUNT dalam fail /etc/sysconfig/nfs pada RedHat menentukan bilangan syaitan untuk dijalankan (lalai ialah 8). (program RPC 100003)
  • rpc.mountd- Tanpa pemasangan NFS mountd mengendalikan permintaan pelanggan untuk melekapkan direktori. Imp yang dipasang berfungsi pada pelayan NFS. (Program RPC 100005)
  • rpc.idmapd- Idmapd untuk NFSv4 pada pelayan menukar uid/gid tempatan pengguna kepada format nama@domain, dan perkhidmatan pada klien menukar nama pengguna/kumpulan nama@jenis domain kepada pengguna tempatan dan pengecam kumpulan (mengikut konfigurasi fail /etc/idmapd.conf, butiran lanjut dalam man idmapd.conf):.
  • Selain itu, versi lama NFS menggunakan imp: nfslogd- NFS log imp merekodkan aktiviti untuk sistem fail yang dieksport, berfungsi pada pelayan NFS dan rquotad- pelayan kuota jauh menyediakan maklumat tentang kuota pengguna dalam sistem fail jauh, boleh berfungsi pada kedua-dua pelayan dan pelanggan. (program RPC 100011)

Dalam NFSv4, apabila menggunakan Kerberos, syaitan juga dilancarkan:

  • rpc.gssd- Bes NFSv4 menyediakan kaedah pengesahan melalui GSS-API (pengesahan Kerberos). Berfungsi pada klien dan pelayan.
  • rpc.svcgssd- Imp pelayan NFSv4, yang menyediakan pengesahan klien sebelah pelayan.

peta port dan protokol RPC (Sun RPC)

Selain daripada pakej yang dinyatakan di atas, NFSv2 dan v3 memerlukan pakej tambahan peta port(digantikan dalam pengedaran yang lebih baharu dengan dinamakan semula kepada rpcbind). Pakej ini biasanya dipasang secara automatik dengan NFS sebagai pakej bergantung dan melaksanakan operasi pelayan RPC, dengan kata lain, ia bertanggungjawab untuk penugasan dinamik port untuk beberapa perkhidmatan yang didaftarkan dalam pelayan RPC.

Secara harfiah, menurut dokumentasi, ini adalah pelayan yang menukar nombor program RPC (Panggilan Prosedur Jauh) kepada nombor port TCP/UDP. portmap beroperasi pada beberapa entiti: panggilan atau permintaan RPC, port TCP/UDP, versi protokol (tcp atau udp), nombor program dan versi program. Demon portmap dilancarkan oleh skrip /etc/init.d/portmap sebelum permulaan perkhidmatan NFS.

Secara ringkasnya, tugas pelayan RPC (Remote Procedure Call) adalah untuk memproses panggilan RPC (yang dipanggil prosedur RPC) daripada proses tempatan dan jauh.

Menggunakan panggilan RPC, perkhidmatan mendaftar atau mengalih keluar diri mereka sendiri ke/daripada pemeta port (aka port mapper, aka portmap, aka portmapper, aka, dalam versi baharu, rpcbind), dan pelanggan menggunakan panggilan RPC untuk menghantar permintaan kepada portmapper menerima maklumat yang berkaitan. Nama mesra pengguna perkhidmatan program dan nombor yang sepadan ditakrifkan dalam fail /etc/rpc.

Memandangkan mana-mana perkhidmatan menghantar permintaan yang sepadan dan mendaftar sendiri pada pelayan RPC dalam pemeta port, pelayan RPC memperuntukkan, memetakan kepada perkhidmatan port TCP dan UDP di mana perkhidmatan bermula dan menyimpan dalam kernel maklumat yang sepadan tentang perkhidmatan yang sedang berjalan. (nama), nombor unik perkhidmatan (selaras dengan /etc/rpc), tentang protokol dan port di mana perkhidmatan beroperasi dan tentang versi perkhidmatan dan memberikan maklumat yang ditunjukkan kepada pelanggan atas permintaan. Penukar port itu sendiri mempunyai nombor program (100000), nombor versi 2, port TCP 100 sebelas dan port UDP 111.

Di atas, apabila menunjukkan komposisi syaitan pelayan NFS, saya menunjukkan nombor program RPC utama. Saya mungkin mengelirukan anda sedikit dengan perenggan ini, jadi saya akan mengatakan frasa utama yang harus menjelaskannya: fungsi utama pemeta port adalah untuk kembali, atas permintaan pelanggan yang memberikan nombor program RPC (atau program RPC nombor) dan versi kepadanya (pelanggan) port di mana program yang diminta sedang berjalan. Sehubungan itu, jika pelanggan perlu mengakses RPC dengan nombor program tertentu, ia mesti terlebih dahulu menghubungi proses peta port pada mesin pelayan dan mencari nombor port komunikasi dengan perkhidmatan RPC yang diperlukannya.

Pengendalian pelayan RPC boleh diwakili oleh langkah-langkah berikut:

Untuk mendapatkan maklumat daripada pelayan RPC, gunakan utiliti rpcinfo. Apabila anda menentukan ciri hos -p, atur cara memaparkan senarai semua program RPC berdaftar pada hos hos. Tanpa menyatakan hos, program akan memaparkan perkhidmatan pada localhost. Contoh:

ARCHIV ~ # rpcinfo -p prog-ma vers proto port 100 ribu Dua tcp 100 sebelas portmapper 100 ribu Dua udp 100 sebelas portmapper 100 ribu 20 empat Satu udp 50 sembilan ribu empat ratus 50 satu status 100 ribu 20 empat puluh Satu tcp lapan ratus 70 dua status 100 ribu 20 satu Satu udp 40 empat ribu tiga ratus 10 nlockmgr 100 ribu 20 satu Tiga udp 40 empat ribu tiga ratus 10 nlockmgr 100 ribu 20 satu Empat udp 40 empat ribu tiga ratus 10 nlockmgr 100 ribu 20 satu empat tcp 40 Satu tcp ribu lapan ratus 50 satu nlockmgr 100 ribu 20 satu Tiga tcp 40 empat ribu lapan ratus 50 satu nlockmgr 100 ribu 20 satu Empat tcp 40 empat ribu lapan ratus 50 satu nlockmgr 100 ribu tiga Dua tcp Dua ribu 40 sembilan nfs 100 ribu dua Tiga tcp ribu 40 sembilan nfs 100 ribu tiga Empat tcp Dua ribu 40 sembilan nfs 100 ribu tiga Dua udp Dua ribu 40 sembilan nfs 100 ribu tiga Tiga udp Dua ribu 40 sembilan nfs 100 ribu tiga Empat udp Dua ribu 40 sembilan nfs 100 ribu 5 Satu udp 50 seribu tiga ratus 6 dipasang 100 ribu 5 Satu tcp 40 seribu empat ratus 5 dipasang 100 ribu 5 Dua udp 50 seribu tiga ratus 6 dipasang 100 ribu 5 Dua tcp 40 seribu empat ratus 5 dipasang 100 ribu 5 Tiga udp 50 seribu tiga ratus 6 dipasang 100 ribu 5 Tiga tcp 40 seribu empat ratus 5 dipasang

Seperti yang anda lihat, rpcinfo menunjukkan (dalam lajur dari kiri ke kanan) nombor program, versi, protokol, port dan nama yang didaftarkan.

Menggunakan rpcinfo anda boleh mengalih keluar pendaftaran program atau mendapatkan maklumat tentang perkhidmatan RPC tertentu (lebih banyak pilihan dalam man rpcinfo). Seperti yang anda lihat, portmapper versi dua syaitan didaftarkan pada udp dan port tcp, versi rpc.statd Satu pada port udp dan tcp, pengurus kunci NFS versi 1,3,4, pelayan bukan nfs versi 2,3,4, serta versi tidak lekap 1,2,3.

Pelayan NFS (lebih tepat, rpc.nfsd) menerima permintaan daripada klien dalam bentuk datagram UDP pada port 2049. Walaupun fakta bahawa NFS berfungsi dengan penyelesai port, yang membolehkan pelayan menggunakan port yang ditetapkan secara dinamik, port UDP Dua ribu 40 sembilan diberikan secara ketat kepada NFS dalam kebanyakan pelaksanaan.

Operasi Protokol Sistem Fail Rangkaian

Memasang NFS jauh

Proses pemasangan sistem fail NFS jauh boleh diwakili oleh rajah berikut:

Perihalan protokol NFS semasa memasang direktori jauh:

  1. Pelayan RPC dilancarkan pada pelayan dan klien (biasanya semasa boot), diservis oleh proses portmapper dan didaftarkan pada port tcp/111 dan udp/111.
  2. Perkhidmatan dilancarkan (rpc.nfsd, rpc.statd, dsb.), yang didaftarkan pada pelayan RPC dan didaftarkan pada port rangkaian rawak (jika port statik tidak dinyatakan dalam tetapan perkhidmatan).
  3. arahan mount pada komputer klien menghantar kernel permintaan untuk melekapkan direktori rangkaian yang menunjukkan jenis sistem fail, hos dan secara praktikal direktori, kernel menghantar dan menjana permintaan RPC ke proses peta port pada pelayan NFS pada port udp/ 111 (jika fungsi untuk berfungsi melalui tcp tidak ditetapkan pada klien )
  4. Kernel pelayan NFS menanyakan RPC untuk kehadiran imp rpc.mountd dan mengembalikan kepada kernel klien port rangkaian di mana imp sedang berjalan.
  5. mount menghantar permintaan RPC ke port di mana rpc.mountd sedang berjalan. Pada ketika ini, pelayan NFS boleh mengesahkan klien berdasarkan alamat IP dan nombor portnya untuk melihat sama ada klien boleh memasang sistem fail yang ditetapkan.
  6. Mountless mengembalikan perihalan sistem fail yang diminta.
  7. Perintah pelekap pelanggan mengeluarkan panggilan sistem pelekap untuk mengaitkan pemegang fail yang terdapat dalam langkah 5 dengan titik pelekap setempat pada hos pelanggan. Pemegang fail disimpan dalam kod klien NFS, dan mulai sekarang sebarang capaian oleh proses pengguna kepada fail pada sistem fail pelayan akan menggunakan pemegang fail sebagai titik permulaan.

Pertukaran data antara klien dan pelayan NFS

Akses biasa kepada sistem fail jauh boleh diterangkan dengan skema berikut:

Penerangan tentang proses mengakses fail yang terletak pada pelayan NFS:

Menyediakan pelayan NFS

Penalaan Pelayan secara amnya terdiri daripada menentukan direktori tempatan yang dibenarkan untuk dipasang sistem jauh dalam fail /etc/exports. Tindakan ini dipanggil hierarki direktori eksport. Sumber utama maklumat mengenai direktori yang dieksport ialah fail berikut:

  • /etc/exports- fail konfigurasi utama yang menyimpan konfigurasi direktori yang dieksport. Digunakan semasa memulakan NFS dan oleh utiliti exportfs.
  • /var/lib/nfs/xtab- mengandungi senarai direktori yang dipasang oleh pelanggan jauh. Digunakan oleh imp rpc.mountd apabila pelanggan cuba melekapkan hierarki (rekod pelekapan dibuat).
  • /var/lib/nfs/etab- senarai direktori yang boleh dipasang oleh sistem jauh, menunjukkan semua ciri direktori yang dieksport.
  • /var/lib/nfs/rmtab- senarai direktori yang tidak dieksport pada masa ini.
  • /proc/fs/nfsd- sistem fail khas (kernel 2.6) untuk menguruskan pelayan NFS.
    • eksport- senarai hierarki yang dieksport aktif dan pelanggan kepada siapa mereka dieksport, serta hartanah. Kernel mendapat maklumat ini daripada /var/lib/nfs/xtab.
    • benang- mengandungi bilangan benang (boleh juga diubah)
    • menggunakan filehandle anda boleh mendapatkan penunjuk ke fail
    • dan lain-lain...
  • /proc/net/rpc- mengandungi statistik "mentah", yang boleh diperoleh menggunakan nfsstat, serta pelbagai cache.
  • /var/run/portmap_mapping- maklumat tentang perkhidmatan yang didaftarkan dalam RPC

Catatan: Secara umumnya, di Internet terdapat banyak tafsiran dan rumusan tujuan fail xtab, etab, rmtab, saya tidak tahu siapa yang perlu dipercayai #image.jpg Walaupun di http://nfs.sourceforge.net/ tafsiran tidak jelas.

Menyediakan fail /etc/exports

Dalam kes biasa, fail /etc/exports ialah satu-satunya fail yang memerlukan pengeditan untuk fungsi pelayan NFS. Fail ini mengawal sifat berikut:

  • Apa jenis pelanggan boleh mengakses fail pada pelayan
  • hierarki yang mana? direktori pada pelayan boleh diakses oleh setiap klien
  • Bagaimanakah nama pelanggan tersuai dipaparkan pada nama tempatan pengguna

Tidak kira baris mana fail eksport mempunyai format berikut:

export_point klien1(fungsi) [klien2(fungsi) ...]

di mana export_point laluan mutlak hierarki direktori yang dieksport, pelanggan1 - n nama 1 atau lebih pelanggan atau alamat IP, dipisahkan oleh ruang, yang dibenarkan untuk dipasang export_point. Fungsi gariskan peraturan pemasangan untuk pelanggan yang ditunjukkan sebelum pilihan.

Ini yang biasa contoh konfigurasi fail eksport:

ARCHIV ~ # cat /etc/exports /archiv1 files(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

Dalam contoh ini, fail komputer dan 10.0.0.1 dibenarkan akses ke titik eksport /archiv1, manakala fail hos mempunyai akses baca/tulis dan hos 10.0.0.1 dan subnet 10.0.230.1/24 mempunyai akses baca sahaja.

Penerangan hos dalam /etc/exports dibenarkan dalam format berikut:

  • Nama nod individu diterangkan sebagai fail atau fail.DOMAIN.local.
  • Penerangan topeng domain dibuat dalam format berikut: *DOMAIN.local merangkumi semua nod domain DOMAIN.local.
  • Subnet ditentukan sebagai alamat IP/pasangan topeng. Contohnya: 10.0.0.0/255.255.255.0 termasuk semua nod yang alamatnya bermula dengan 10.0.0.
  • Menentukan nama kumpulan rangkaian @myclients yang mempunyai akses kepada sumber (apabila menggunakan pelayan NIS)

Fungsi umum untuk mengeksport hierarki direktori

Fungsi biasa berikut digunakan dalam fail eksport:(pertama, fungsi yang digunakan secara lalai dalam kebanyakan sistem ditunjukkan, dalam kurungan - bukan lalai):

  • auth_nlm (no_auth_nlm) atau kunci_selamat (kunci_tidak selamat)- menyatakan bahawa pelayan harus mendapatkan pengesahan permintaan kunci (menggunakan protokol Pengurus Kunci NFS).
  • nohide (sembunyikan)- jika pelayan mengeksport dua hierarki direktori, manakala satu bersarang (dipasang) dalam satu lagi. Pelanggan mesti, sudah tentu, melekapkan hierarki kedua (kanak-kanak), jika tidak, titik pelekap hierarki kanak-kanak akan kelihatan seperti direktori kosong. Fungsi nohide menghasilkan hierarki direktori ke-2 tanpa pemasangan remeh. (nota: I pilihan ini Saya tidak dapat membuatnya berfungsi...)
  • ro(rw)- Membenarkan permintaan baca (tulis) sahaja. (Akhirnya, sama ada ia boleh dibaca/ditulis atau tidak ditentukan berdasarkan hak sistem fail, dengan semua ini, pelayan tidak dapat membezakan permintaan untuk membaca fail daripada permintaan untuk dilaksanakan, jadi ia membenarkan membaca jika pengguna telah membaca atau melaksanakan hak.)
  • selamat (tidak selamat)- permintaan bahawa permintaan NFS datang dari port selamat (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • subtree_check (no_subtree_check)- Jika subdirektori sistem fail dieksport, tetapi bukan keseluruhan sistem fail, pelayan menyemak sama ada fail yang diminta berada dalam subdirektori yang dieksport. Melumpuhkan pengesahan mengurangkan keselamatan tetapi meningkatkan kelajuan pemindahan data.
  • segerak (async)- menyatakan bahawa pelayan harus bertindak balas kepada permintaan hanya selepas menulis konfigurasi yang dilakukan oleh permintaan tersebut ke cakera. Fungsi async memberitahu pelayan untuk tidak menunggu maklumat ditulis ke cakera, yang meningkatkan prestasi tetapi mengurangkan kebolehpercayaan, kerana Sekiranya sambungan putus atau kegagalan peralatan, maklumat mungkin hilang.
  • wdelay (no_wdelay)- mengarahkan pelayan untuk menangguhkan pelaksanaan permintaan tulis jika permintaan tulis berikutnya belum selesai, menulis data dalam blok yang lebih besar. Ini meningkatkan prestasi apabila menghantar baris gilir besar bagi arahan tulis. no_wdelay menentukan untuk tidak menangguhkan pelaksanaan perintah tulis, yang boleh berguna jika pelayan menerima bilangan arahan yang tidak berkaitan tanpa had.

Eksport pautan simbolik dan fail peranti. Apabila mengeksport hierarki direktori yang mengandungi pautan simbolik, objek rujukan mesti boleh diakses oleh sistem pelanggan (jauh), dengan kata lain, salah satu daripada peraturan berikut mesti dipenuhi:

  • objek pautan mesti wujud pada sistem fail klien
  • perlu mengeksport dan melekapkan objek rujukan

Fail peranti merujuk kepada antara muka Inti Linux. Apabila anda mengeksport fail peranti, antara muka ini dieksport. Jika sistem klien tidak mempunyai peranti jenis yang sama, peranti yang dieksport tidak akan berfungsi.

Pada sistem klien, apabila memasang objek NFS, anda boleh menggunakan pilihan nodev supaya fail peranti dalam direktori yang dipasang tidak digunakan.

Fungsi lalai mungkin berbeza antara sistem dan boleh didapati dalam /var/lib/nfs/etab. Selepas menerangkan direktori yang dieksport dalam /etc/exports dan memulakan semula pelayan NFS, semua fungsi yang hilang (baca: fungsi lalai) akan ditunjukkan dalam fail /var/lib/nfs/etab.

Fungsi untuk memaparkan (padanan) ID pengguna

Untuk pemahaman yang lebih baik tentang perkara berikut, saya akan menasihati anda untuk membaca artikel Menguruskan Pengguna Linux. Setiap pengguna Linux mempunyai UID dan GID utamanya sendiri, yang diterangkan dalam fail /etc/passwd dan /etc/group.

Pelayan NFS menganggap bahawa sistem pengendalian hos jauh telah mengesahkan pengguna dan memberikan mereka UID dan GID yang betul. Mengeksport fail memberikan pengguna sistem klien akses yang sama kepada fail tersebut seolah-olah mereka dilog terus pada pelayan. Sehubungan itu, apabila klien NFS menghantar permintaan kepada pelayan, pelayan menggunakan UID dan GID untuk mengenal pasti pengguna pada sistem setempat, yang boleh membawa kepada beberapa masalah:


Fungsi berikut menetapkan peraturan untuk memaparkan pengguna jauh dalam yang tempatan:

Contoh menggunakan fail pemetaan pengguna:

ARCHIV ~ # cat /etc/file_maps_users # Pemetaan pengguna # ulasan tempatan jauh uid 0-50 Seribu dua # pengguna pemetaan dengan UID jauh 0-50 ke UID setempat Seribu dua gid 0-50 Seribu dua # pengguna pemetaan dengan /span GID jauh 0-50 kepada GID 1002 tempatan

Pengurusan Pelayan NFS

Pelayan NFS diurus menggunakan utiliti berikut:

  • nfsstat
  • showmsecure (tidak selamat)mount
  • exportfs

nfsstat: statistik NFS dan RPC

Utiliti nfsstat membolehkan anda melihat statistik pelayan RPC dan NFS. Fungsi arahan boleh didapati dalam man nfsstat.

showmount: memaparkan maklumat tentang status NFS

utiliti showmount pertanyaan rpc.mountd pada hos jauh tentang sistem fail yang dipasang. Secara lalai, senarai pelanggan yang diisih dikembalikan. kunci:

  • --semua- senarai pelanggan dan titik lekap dipaparkan menunjukkan tempat pelanggan melekapkan direktori. Maklumat ini mungkin tidak boleh dipercayai.
  • --direktori- senarai titik pelekap dipaparkan
  • --eksport- senarai sistem fail yang dieksport diberikan berdasarkan kepercayaan nfsd

Apabila anda menjalankan showmount tanpa hujah, maklumat tentang sistem yang dibenarkan untuk dipasang akan dicetak ke konsol tempatan koleksi. Sebagai contoh, hos ARCHIV memberikan kami senarai direktori yang dieksport dengan alamat IP hos yang dibenarkan untuk melekapkan koleksi yang ditetapkan:

FILES ~ # showmount --exports archive Senarai eksport untuk arkib: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

Jika anda menentukan nama hos/IP dalam hujah, maklumat tentang hos ini akan dipaparkan:

ARCHIV ~ # fail showmount clnt_create: RPC: Program tidak didaftarkan # mesej ini memberitahu kami bahawa NFSd tidak berjalan pada hos FILES

exportfs: menguruskan direktori yang dieksport

Perintah ini menyediakan koleksi yang dieksport, data dalam fail /etc/exports, adalah lebih tepat untuk menulis bahawa ia tidak berfungsi, tetapi menyegerakkan dengan fail /var/lib/nfs/xtab dan mengalih keluar yang tidak wujud daripada xtab. exportfs dilakukan apabila menjalankan nfsd demon dengan hujah -r. Utiliti exportfs dalam mod kernel 2.6 bercakap dengan imp rpc.mountd melalui fail dalam direktori /var/lib/nfs/ dan tidak bercakap dengan kernel secara langsung. Tanpa ciri, memaparkan senarai sistem fail yang sedang dieksport.

hartanah exportfs:

  • [client:directory-name] - tambah atau alih keluar sistem fail yang ditetapkan untuk klien yang ditetapkan)
  • -v - memaparkan lebih banyak maklumat
  • -r - eksport semula semua koleksi (segerakkan /etc/exports dan /var/lib/nfs/xtab)
  • -u - keluarkan daripada senarai yang dieksport
  • -a - tambah atau alih keluar semua sistem fail
  • -o - fungsi dipisahkan dengan koma (serupa dengan pilihan yang digunakan dalam /etc/exports; iaitu anda boleh menukar fungsi sistem fail yang telah dipasang)
  • -i - jangan gunakan /etc/exports semasa menambah, hanya sifat baris arahan semasa
  • -f - set semula senarai sistem yang dieksport dalam kernel 2.6;

Pelanggan NFS

Sebelum mengakses fail pada sistem fail jauh, pelanggan mesti lekapkannya dan terima daripada pelayan penunjuk kepadanya. Gunung NFS boleh dilakukan menggunakan lekapkan arahan atau menggunakan salah satu pelekap automatik yang membiak (amd, autofs, automount, supermount, superpupermount). Proses pemasangan ditunjukkan dengan sempurna dalam ilustrasi di atas.

hidup pelanggan NFS tidak perlu melepaskan sebarang syaitan, fungsi klien membuat kernel modul kernel/fs/nfs/nfs.ko, yang digunakan semasa memasang sistem fail jauh. Koleksi yang dieksport daripada pelayan boleh dipasang pada klien dengan cara berikut:

  • secara manual menggunakan arahan mount
  • secara automatik semasa but, apabila memasang sistem fail yang digariskan dalam /etc/fstab
  • secara automatik menggunakan syaitan autofs

Saya tidak akan mempertimbangkan kaedah ke-3 dengan autof dalam artikel ini, kerana jumlah maklumatnya yang besar. Mungkin akan ada penerangan berasingan dalam artikel-artikel seterusnya.

Memasang Sistem Fail Rangkaian dengan arahan pelekap

Contoh penggunaan arahan mount dibentangkan dalam post Block Device Control Commands. Di sini saya akan melihat contoh arahan mount untuk memasang sistem fail NFS:

FAIL ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ..... .. arkib:/archiv-small pada /archivs/archiv-jenis kecil nfs (rw,addr=10.0.0.6) archiv:/archiv-besar pada /archivs/archiv-jenis nfs (ro,addr=10.0.0.6)

Perintah pertama melekapkan direktori /archiv-small yang dieksport pada pelayan arkiv ke titik pelekap setempat /archivs/archiv-small dengan pilihan lalai (dalam erti kata lain, baca-tulis).

Walaupun arahan mount dalam pengedaran terkini ia dapat memikirkan jenis sistem fail yang digunakan walaupun tanpa menyatakan jenisnya; namun, lebih baik untuk menentukan parameter -t nfs. Perintah ke-2 melekapkan direktori yang dieksport /archiv-big pada pelayan arkiv ke direktori tempatan /archivs/archiv-big dengan pilihan baca sahaja (ro). arahan mount tanpa ciri jelas menunjukkan kepada kita hasil pemasangan. Selain fungsi baca sahaja (ro), yang lain boleh ditentukan fungsi utama apabila memasang NFS:

  • nosuid - Fungsi ini melarang pelaksanaan program setuid daripada direktori yang dipasang.
  • nodev(tiada peranti - bukan peranti) - Fungsi ini melarang penggunaan aksara dan menyekat fail khas sebagai peranti.
  • kunci (nolock)- Membenarkan penguncian NFS (lalai). nolock melumpuhkan penguncian NFS (tidak menjalankan lockd) dan mudah apabila bekerja dengan pelayan lama yang tidak menyokong penguncian NFS.
  • mounthost=nama- Nama hos yang NFS mountless dijalankan - mountd.
  • mountport=n - Port yang digunakan oleh imp yang dipasang.
  • pelabuhan=n- port yang digunakan untuk menyambung ke pelayan NFS (lalai ialah 2049 jika rpc.nfsd tidak didaftarkan pada pelayan RPC). Jika n=0 (lalai), maka NFS menghantar permintaan ke peta port pada pelayan untuk mencari port.
  • saiz=n(baca saiz blok - baca saiz blok) - Bilangan bait dibaca pada satu masa daripada pelayan NFS. Standard - 4096.
  • wsize=n(tulis saiz blok - tulis saiz blok) - Bilangan bait yang ditulis pada satu masa ke pelayan NFS. Standard - 4096.
  • tcp atau udp- Untuk memasang NFS, gunakan protokol TCP atau UDP, masing-masing.
  • bg- Jika anda kehilangan akses kepada pelayan, ulangi ujian di latar belakang supaya tidak mengganggu proses but sistem.
  • fg- Jika anda kehilangan akses kepada pelayan, ulangi ujian dalam mod keutamaan. Pilihan ini boleh menyekat proses but sistem dengan mengulangi percubaan pemasangan. Atas sebab ini, parameter fg digunakan terutamanya untuk penyahpepijatan.

Fungsi yang mempengaruhi caching atribut pada lekapan NFS

Atribut fail, disimpan dalam inod ( inod), seperti masa pengubahsuaian, saiz, pautan keras, pemilik, biasanya berubah sekali-sekala untuk fail biasa dan lebih jarang untuk direktori. Banyak program, seperti ls, mengakses fail baca sahaja dan tidak menukar atribut atau kandungan fail, tetapi membuang sumber sistem pada operasi rangkaian yang mahal.

Untuk mengelakkan pembaziran sumber yang tidak perlu, anda boleh cache atribut ini. Kernel menggunakan masa pengubahsuaian fail untuk menentukan sama ada cache sudah lapuk dengan membandingkan masa pengubahsuaian dalam cache dan masa pengubahsuaian fail itu sendiri. Cache atribut dikemas kini secara berkala mengikut parameter ini:

  • ac (noac)(cache attrebute - caching atribut) - Membenarkan caching atribut (secara lalai). Walaupun noac memperlahankan pelayan, ia mengelakkan sifat basi apabila berbilang pelanggan secara aktif menulis maklumat kepada hierarki biasa.
  • acdirmax=n(maksimum fail direktori cache atribut - menyimpan atribut maksimum untuk fail direktori) - Nai Kuantiti yang besar saat yang NFS tunggu sebelum mengemas kini atribut direktori (lalai: Enam puluh saat)
  • acdirmin=n(minimum fail direktori cache atribut - cache atribut minimum untuk fail direktori) - Sebilangan kecil saat yang NFS tunggu sebelum mengemas kini atribut direktori (lalai 30 saat)
  • acregmax=n(maksimum fail cache atribut - cache atribut maksimum untuk fail biasa) - Bilangan saat maksimum yang NFS tunggu sebelum mengemas kini atribut fail biasa (lalai: Enam puluh saat)
  • acregmin=n(minimum fail cache atribut - cache atribut minimum untuk fail biasa) - Sebilangan kecil saat yang NFS tunggu sebelum mengemas kini atribut fail biasa (lalai Tiga saat)
  • acteo=n(masa tamat cache atribut - tamat masa cache atribut) - Menggantikan nilai untuk semua pilihan di atas. Jika acteo tidak dinyatakan, maka nilai di atas mengambil nilai lalai.

Fungsi Pengendalian Ralat NFS

Fungsi berikut mengawal perkara yang dilakukan oleh NFS apabila tiada respons daripada pelayan atau apabila ralat I/O berlaku:

  • fg(bg)(latar depan - latar depan, latar belakang - latar belakang) - Buat probe pelekap NFS yang gagal di latar depan/latar belakang.
  • keras (lembut)- memaparkan mesej "pelayan tidak bertindak balas" kepada konsol apabila tamat masa dicapai dan meneruskan ujian pemasangan. Dengan fungsi ini lembut- semasa tamat masa, melaporkan ralat I/O kepada program yang memanggil operasi. (adalah disyorkan untuk tidak menggunakan pilihan lembut)
  • nointr (intr)(tiada gangguan - jangan ganggu) - Tidak membenarkan isyarat untuk mengganggu operasi fail dalam hierarki direktori yang dipasang keras apabila tamat masa yang besar dicapai. intr- membolehkan gangguan.
  • retrans=n(nilai penghantaran semula) - Selepas n tamat masa kecil, NFS menjana tamat masa yang besar (lalai 3). Tamat masa yang besar menghentikan operasi atau mencetak mesej "pelayan tidak bertindak balas" ke konsol, bergantung pada sama ada fungsi keras/lembut ditentukan.
  • cuba semula=n(nilai cuba semula) - Bilangan minit perkhidmatan NFS akan mengulangi operasi pelekap sebelum menyerah (lalai 10000).
  • timeo=n(nilai tamat masa) - Bilangan ke-10 saat perkhidmatan NFS menunggu sebelum menghantar semula dalam kes RPC atau tamat masa kecil (lalai 7). Nilai ini meningkat dengan setiap tamat masa kepada nilai yang lebih besar iaitu Enam puluh saat atau sehingga tamat masa yang besar berlaku. Jika rangkaian sibuk, pelayan lambat, atau permintaan melalui berbilang penghala atau get laluan, meningkatkan nilai ini boleh meningkatkan prestasi.

Lekapkan NFS automatik semasa but (penerangan sistem fail dalam /etc/fstab)

Saya menyentuh perihalan fail /etc/fstab dalam artikel yang sepadan. Dalam contoh semasa, saya akan melihat beberapa contoh pemasangan sistem fail NFS dengan penerangan tentang pilihan:

FAIL ~ # kucing /etc/fstab | grep nfs archiv:/archiv-small /archivs/archiv-small nfs rw,timeo=4,rsize=16384,wsize=16384 Null Null nfs-server:/archiv-big /archivs/archiv-big nfs rw,timeo=50 ,keras,fg Zero 0

Contoh pertama melekapkan sistem fail /archiv-small dari hos arkib ke titik lekap /archivs/archiv-small, jenis sistem fail ditentukan sebagai nfs (sentiasa mesti dinyatakan untuk jenis ini), sistem fail dipasang dengan pilihan baca-tulis (rw) .

Hos arkib disambungkan melalui saluran tempatan yang pantas, jadi untuk meningkatkan prestasi, parameter timeo telah dikurangkan dan nilai rsize dan wsize telah meningkat dengan ketara. Medan untuk program dump dan fsck ditetapkan kepada sifar supaya program ini tidak menggunakan sistem fail yang dipasang NFS.

Contoh ke-2 memasang sistem fail /archiv-big daripada hos pelayan nfs. Kerana Kami disambungkan kepada hos pelayan nfs melalui sambungan yang perlahan, parameter timeo dinaikkan kepada 5 saat (50 10 saat), dan parameter keras juga ditetapkan keras supaya NFS terus memasang semula sistem fail selepas lama. tamat masa, parameter fg juga ditetapkan, supaya apabila sistem but dan hos pelayan nfs tidak tersedia, ia tidak membeku.

Sebelum menyimpan konfigurasi dalam /etc/fstab, pastikan anda cuba melekap secara manual dan pastikan semuanya berfungsi!!!

Prestasi NFS yang dipertingkatkan

Prestasi NFS boleh dipengaruhi oleh beberapa perkara, terutamanya apabila menjalankan sambungan yang perlahan. Apabila bekerja dengan sambungan yang perlahan dan banyak dimuatkan, lebih baik menggunakan parameter keras supaya tamat masa tidak menyebabkan program berhenti berfungsi. Tetapi anda perlu memikirkan bagaimana jika anda memasang sistem fail melalui NFS dengan parameter keras melalui fstab, dan hos jauh ternyata tidak tersedia, sistem akan membeku apabila memuatkan.

Selain itu, salah satu cara paling mudah untuk meningkatkan prestasi NFS ialah meningkatkan bilangan bait yang dipindahkan pada satu masa. Saiz Empat ribu sembilan puluh enam bait adalah sangat kecil untuk sambungan pantas moden, meningkatkan nilai ini kepada Lapan ribu 100 sembilan puluh dua atau lebih boleh didapati secara eksperimen untuk mencari kelajuan terbaik.

Juga, seseorang tidak boleh terlepas pandang fungsi tamat masa. NFS menunggu respons kepada pemindahan data dalam tempoh masa yang dinyatakan dalam fungsi timeo; jika respons tidak diterima dalam masa ini, maka pemindahan berulang dibuat.

Tetapi pada sambungan yang sibuk dan perlahan, masa ini mungkin kurang daripada masa tindak balas pelayan dan kapasiti saluran komunikasi, mengakibatkan penghantaran semula yang tidak perlu yang melambatkan kerja. Secara lalai, timeo ialah 0.7 saat (700 milisaat). selepas tiada respons untuk Tujuh ratus ms, pelayan akan menghantar semula dan menggandakan masa menunggu kepada 1.4 saat, peningkatan masa akan terus ke nilai yang lebih tinggi iaitu Enam puluh saat. Seterusnya, bergantung pada parameter keras/lembut, beberapa tindakan akan berlaku (lihat di atas).

Anda boleh memilih masa terbaik untuk nilai khusus paket yang dihantar (nilai saiz/wsize) menggunakan arahan ping:

FAIL ~ # ping -s 30 dua ribu tujuh ratus enam puluh lapan arkib PING arkib.DOMAIN.tempatan (10.0.0.6) 32768(32796) bait data. 30 dua ribu tujuh ratus 70 6 bait daripada archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 masa=0.931 ms 30 dua ribu tujuh ratus 70 6 bait daripada archiv.domain.local (10.0.0.6): icmp_req= 2 ttl=64 masa=0.958 ms 30 dua ribu tujuh ratus 70 6 bait daripada archiv.domain.local (10.0.0.6): icmp_req=3 ttl=64 masa=1.03 ms 30 dua ribu tujuh ratus 70 6 bait daripada arkib .domain.local (10.0.0.6): icmp_req=4 ttl=64 masa=1.00 ms 30 dua ribu tujuh ratus 70 6 bait daripada archiv.domain.local (10.0.0.6): icmp_req=5 ttl=64 masa=1.08 ms ^C --- archiv.DOMAIN.statistik ping tempatan --- 5 paket dihantar, 5 diterima, kehilangan paket 0%, masa 4006ms rtt min/avg/max/mdev = 0.931/1.002/1.083/0.061 ms

Seperti yang anda lihat, apabila menghantar paket bersaiz 30 dua ribu tujuh ratus enam puluh lapan (32Kb), masa perjalanannya dari klien ke pelayan dan belakang terapung sekitar Satu milisaat. Jika masa ini melebihi dua ratus ms, maka anda harus berfikir tentang meningkatkan nilai masa supaya ia melebihi nilai pertukaran sebanyak tiga hingga empat kali. Masing-masing, ujian ini lebih baik dilakukan semasa beban rangkaian yang berat

Melancarkan NFS dan menyediakan Firewall

Nota itu disalin daripada blog http://bog.pp.ru/work/NFS.html, yang mana terima kasih banyak!!!

Jalankan pelayan NFS, lekapkan, sekat, kuota dan status dengan port "betul" (untuk tembok api)

  • adalah lebih baik untuk mula-mula menyahlekap semua sumber pada pelanggan
  • hentikan dan lumpuhkan rpcidmapd daripada bermula jika NFSv4 tidak dirancang: chkconfig --level Three hundred 40 5 rpcidmapd off service rpcidmapd stop
  • jika perlu, benarkan perkhidmatan portmap, nfs dan nfslock bermula: chkconfig --levels Three hundred 40 5 portmap/rpcbind on chkconfig --levels Three hundred 40 5 nfs on chkconfig --levels Three hundred 40 5 nfslock on
  • jika perlu, hentikan perkhidmatan nfslock dan nfs, mulakan portmap/rpcbind, punggah modul perkhidmatan nfslock stop service nfs stop service portmap start # service rpcbind start umount /proc/fs/nfsd service rpcidmapd stop rmmod nfsd service autofs stop # somewhere later it mesti dijalankan rmmod nfs rmmod nfs_acl rmmod lockd
  • buka port dalam iptables
    • untuk RPC: UDP/111, TCP/111
    • untuk NFS: UDP/2049, TCP/2049
    • untuk rpc.statd: UDP/4000, TCP/4000
    • untuk dikunci: UDP/4001, TCP/4001
    • untuk dipasang: UDP/4002, TCP/4002
    • untuk rpc.rquota: UDP/4003, TCP/4003
  • untuk pelayan rpc.nfsd, tambah baris RPCNFSDARGS="--port 2049" ke /etc/sysconfig/nfs
  • untuk pelayan mount, tambahkan baris MOUNTD_PORT=4002 ke /etc/sysconfig/nfs
  • untuk fungsi rpc.rquota untuk versi baharu anda perlu menambah baris RQUOTAD_PORT=4003 ke /etc/sysconfig/nfs
  • untuk fungsi rpc.rquota adalah perlu untuk versi lama (lagipun, anda mesti mempunyai pakej kuota 3.08 atau lebih baru) tambah pada /etc/services rquotad 4003/tcp rquotad 4003/udp
  • akan menyemak kecukupan /etc/exports
  • jalankan perkhidmatan rpc.nfsd, mountd dan rpc.rquota (rpcsvcgssd dan rpc.idmapd dilancarkan pada masa yang sama, jika anda teringat untuk memadamkannya) perkhidmatan nfsd mula atau dalam versi baharu perkhidmatan nfs mula
  • untuk pelayan penyekat untuk sistem baharu, tambahkan baris LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 ke /etc/sysconfig/nfs
  • untuk pelayan kunci untuk sistem lama, tambah terus ke /etc/modprobe[.conf]: options lockd nlm_udpport=4001 nlm_tcpport=4001
  • ikat pelayan status rpc.statd ke port Empat ribu (untuk sistem lama, jalankan rpc.statd dengan kekunci -p 4000 dalam /etc/init.d/nfslock) STATD_PORT=4000
  • mulakan perkhidmatan lockd dan rpc.statd perkhidmatan nfslock bermula
  • pastikan semua port diikat secara normal menggunakan "lsof -i -n -P" dan "netstat -a -n" (sesetengah port digunakan oleh modul kernel yang lsof tidak nampak)
  • jika sebelum "membina semula" pelayan digunakan oleh pelanggan dan mereka tidak dapat dinyahlekap, maka anda perlu memulakan semula perkhidmatan pemasangan automatik pada pelanggan (am-utils, autofs)

Contoh konfigurasi pelayan dan klien NFS

Konfigurasi pelayan

Jika anda ingin menjadikan direktori partition NFS anda awam dan boleh ditulis, anda boleh menggunakan pilihan all_squash dalam kombinasi dengan pilihan anonuid dan anongid. Sebagai contoh, untuk menetapkan kebenaran untuk pengguna "tiada sesiapa" dalam kumpulan "tiada sesiapa", anda boleh melakukan perkara berikut:

ARCHIV ~ # cat /etc/exports # Akses baca dan tulis untuk klien pada 192.168.0.100, dengan akses rw untuk pengguna Sembilan puluh sembilan dengan gid Ninety-nine /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid = 99)) # Akses baca dan tulis untuk klien pada 192.168.0.100, dengan akses rw untuk pengguna Sembilan puluh sembilan dengan gid Sembilan puluh sembilan /fail 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

Ini juga bermakna jika anda ingin membenarkan akses kepada direktori yang ditetapkan, nobody.nobody mesti menjadi pemilik direktori kongsi:

# chown -R nobody.nobody /files

Konfigurasi Pelanggan

Pada klien, anda perlu melekapkan direktori jauh dengan cara yang mudah, contohnya dengan arahan pelekap:

FAIL ~ # mount -t nfs archive:/files /archivs/files

Ringkasan

Fuh... Artikel dah habis. Pada masa ini kami telah belajar apa itu Sistem Fail Rangkaian dan cara memakannya, dalam artikel seterusnya saya akan cuba membuat HOWTO dengan pengesahan Kerberos. Saya harap bahan itu boleh difahami dan diperlukan.

Saya akan gembira melihat penambahan dan komen anda!

NFS HOWTO, nfs.sourceforge, man nfs? man mount, man eksport

RFC Seribu sembilan puluh empat - NFSv1, v2
RFC Seribu lapan ratus tiga belas - NFSv3
RFC Tiga ribu 500 30 - NFSv4
RFC 5 ribu 600 enam puluh satu - NFSv4.1
NFS HOWTO
nfs.sourceforge.net
lelaki gunung
eksport manusia

Penyelesaian yang mudah untuk mengakses sistem fail yang diedarkan

Sistem fail adalah satu keperluan. Kami bekerja pada komputer yang menyediakan akses kepada pencetak, kamera, pangkalan data, penderia jauh, teleskop, penyusun dan telefon bimbit. Peranti ini mempunyai sedikit persamaan - khususnya, kebanyakannya menjadi realiti selepas Internet menjadi meluas (contohnya, kamera elektronik dan peranti mudah alih yang bertindak sebagai komputer kecil). Walau bagaimanapun, mereka semua memerlukan sistem fail untuk menyimpan dan mengakses maklumat dengan selamat.

Kami biasanya tidak peduli bagaimana data, aplikasi yang menggunakannya dan antara muka yang membentangkannya kepada kami disimpan dalam komputer itu sendiri. Kebanyakan pengguna ingin melihat (dan sepatutnya) sistem fail sebagai dinding yang memisahkannya daripada logam kosong yang menyimpan bit dan bait. Oleh itu, susunan protokol yang menyambungkan sistem fail cenderung kekal sebagai kotak hitam untuk kebanyakan pengguna dan, sememangnya, pengaturcara. Akhirnya, bagaimanapun, organisasi rangkaian Semua peranti ini turun untuk membenarkan pertukaran data antara sistem fail.

Sistem fail rangkaian dan upacara suci lain

Dalam banyak cara, pertukaran data tidak lebih daripada menyalin maklumat dalam jarak yang jauh. Protokol rangkaian bukan satu-satunya cara yang membolehkan pertukaran data universal menjadi mungkin. Lagipun, setiap sistem komputer mesti menukar datagram menjadi sesuatu yang boleh difahami oleh sistem pengendalian di hujung yang lain. TCP ialah protokol pemindahan yang sangat cekap, tetapi ia tidak dioptimumkan untuk akses fail pantas atau untuk kawalan jauh perisian aplikasi.

Diedarkan berbanding Pengkomputeran Rangkaian

Protokol rangkaian tradisional mempunyai sedikit tawaran untuk mengatur pengiraan yang diedarkan antara komputer dan, terutamanya, antara rangkaian. Hanya pengaturcara yang melulu akan bergantung pada protokol pemindahan data dan kabel optik untuk membolehkan pengkomputeran selari. Kami biasanya bergantung pada model bersiri, di mana sebaik sahaja sambungan diwujudkan, protokol mula berfungsi lapisan pautan, melakukan prosedur ucapan yang agak kompleks antara kad rangkaian. Pengkomputeran selari dan sistem fail teragih tidak lagi bergantung pada IP atau Ethernet. Pada masa ini, kita boleh mengabaikannya apabila bercakap tentang prestasi. Walau bagaimanapun, isu perlindungan adalah perkara yang berbeza.

Satu bahagian teka-teki ialah bagaimana fail diakses pada sistem komputer. Pada masa kini, untuk sistem mengakses fail, adalah tidak penting sama ada fail yang diperlukan tersedia pada satu komputer, atau sama ada ia terletak pada beberapa komputer atas sebab tertentu. Pada masa ini, semantik sistem fail dan struktur data sistem fail adalah dua sangat topik yang berbeza. Semantik sistem fail Plan 9 atau sistem fail teragih gaya AFS (Sistem Fail Andrew) menyembunyikan cara fail disusun atau cara sistem fail dipetakan kepada perkakasan dan sokongan rangkaian. NFS tidak semestinya menyembunyikan cara fail dan direktori disimpan pada sistem fail jauh, tetapi ia juga tidak mendedahkan cara perkakasan sebenar sistem fail, direktori dan fail disimpan.

NFS: Menyelesaikan Masalah UNIX

Mengakses sistem fail yang diedarkan, bagaimanapun, memerlukan lebih sedikit daripada beberapa arahan untuk membolehkan pengguna melekapkan direktori yang terletak pada komputer lain pada rangkaian. Sun Microsystems menghadapi masalah ini beberapa tahun lalu apabila ia mula mengedarkan sesuatu yang dipanggil Panggilan Prosedur Jauh(RPC), dan NFS.

Masalah utama yang Sun cuba selesaikan ialah cara untuk menyambungkan berbilang komputer UNIX untuk mencipta persekitaran kerja teragih tunggal tanpa perlu menulis semula semantik sistem fail UNIX dan menambah terlalu banyak struktur data khusus untuk sistem fail teragih - integriti setiap sistem perlu dipelihara, sambil membenarkan pengguna bekerja dengan katalog pada komputer lain tanpa menyebabkan kelewatan atau sekatan yang tidak diingini dalam aliran kerja mereka.

Sudah tentu, NFS melakukan lebih daripada menyediakan akses kepada fail teks. Anda juga boleh mengedarkan aplikasi "berjalan" melalui NFS. Prosedur keselamatan digunakan untuk melindungi rangkaian daripada gangguan berniat jahat oleh fail boleh laku. Tetapi bagaimana sebenarnya ini berlaku?

NFS ialah RPC

NFS secara tradisinya ditakrifkan sebagai aplikasi RPC yang memerlukan TCP untuk pelayan NFS dan sama ada TCP atau protokol mesra rangkaian lain untuk klien NFS. Pasukan Petugas Kejuruteraan Internet (IETF) menerbitkan Permintaan untuk Komen (RFC) untuk RPC dalam RFC 1832. Satu lagi piawaian penting untuk fungsi pelaksanaan NFS menerangkan format data yang digunakan oleh NFS; ia diterbitkan dalam RFC 1831 sebagai dokumen "Perwakilan Data Luaran" (XDR).

RFC lain berurusan dengan algoritma keselamatan dan penyulitan yang digunakan untuk bertukar maklumat pengesahan semasa sesi NFS, tetapi kami akan merangkumi mekanisme asas terlebih dahulu. Salah satu protokol yang kami minati ialah Pasang protokol, diterangkan dalam Lampiran 1 RFC 1813.

RFC ini menerangkan protokol yang membolehkan NFS berfungsi, tetapi ia tidak menerangkan cara NFS berfungsi masa kini. Anda telah mempelajari sesuatu yang penting, iaitu protokol NFS didokumenkan sebagai piawaian IETF. Selepas versi terkini NFS tersekat pada 3, protokol RPC tidak berkembang melebihi fasa maklumat RFC dan dilihat sebahagian besarnya sebagai di luar kepentingan kumpulan kerja kejuruteraan Sun Microsystems yang besar dan perisa proprietari UNIX. Sejak 1985, Sun telah mengeluarkan beberapa versi NFS, yang mendahului kebanyakan sistem fail moden beberapa tahun. Sun Microsystems memindahkan kawalan NFS kepada IETF pada tahun 1998, dan kebanyakan kerja pada NSF versi 4 (NFSv4) telah dijalankan di bawah naungan IETF.

Iaitu, apabila anda bekerja dengan RPC dan NFS hari ini, anda bekerja dengan versi yang mencerminkan kepentingan syarikat dan kumpulan di luar Sun. Walau bagaimanapun, ramai jurutera Sun tetap berminat dengan pembangunan NFS.

NFS versi 3

NFS dalam penjelmaannya sebagai versi 3 (NFSv3) tidak mengekalkan keadaannya (bukan stateful), tetapi NFSv4 mengekalkan keadaannya. Ungkapan asas ini tidak mengejutkan sesiapa pun hari ini, walaupun dunia TCP/IP di mana NFS dibina sebahagian besarnya tidak mempunyai kewarganegaraan—fakta yang membantu analisis trafik dan syarikat perisian keselamatan berasa cukup baik.

Protokol NFSv3 terpaksa bergantung pada beberapa protokol tambahan untuk memasang direktori secara telus pada komputer jauh, supaya tidak bergantung pada mekanisme sistem fail yang digunakan padanya. NFS tidak selalu berjaya dalam hal ini. Contoh yang baik- Protokol Mount memanggil ID fail awal, manakala protokol Pengurus Kunci Rangkaian mengendalikan penguncian fail. Kedua-dua operasi diperlukan keadaan sekarang, yang tidak disediakan oleh protokol NFSv3. Akibatnya, terdapat interaksi kompleks antara lapisan protokol yang tidak mencerminkan mekanisme aliran data yang serupa. Selain itu, apabila anda menambah fakta bahawa penciptaan fail dan direktori dalam Microsoft® Windows® dilakukan dengan cara yang berbeza daripada dalam UNIX, keadaan menjadi lebih rumit.

Protokol NFSv3 dikehendaki menggunakan port untuk menyediakan beberapa protokol sokongannya; ini mencipta gambaran yang agak kompleks tentang port, tahap protokol dan isu keselamatan yang datang dengan semuanya. Hari ini, model pengendalian ini telah ditinggalkan, dan semua operasi yang sebelum ini dilakukan oleh pelaksanaan protokol tambahan melalui port individu diuruskan oleh protokol NFSv4 melalui port tunggal yang terkenal.

Protokol NFSv3 juga bersedia untuk berfungsi dengan sistem fail Unicode-aware, kelebihan yang kekal secara teori sehingga lewat 1990-an. Ia sesuai dengan semantik sistem fail UNIX dan merupakan sebab untuk penciptaan pelaksanaan sistem fail yang bersaing seperti AFS dan Samba. Tidak menghairankan, sokongan Windows adalah lemah, tetapi pelayan fail Samba menyediakan perkongsian fail untuk sistem UNIX dan Windows.

NFS versi 4

Protokol NFSv4 adalah, seperti yang kami nyatakan, protokol stateful. Beberapa perubahan radikal menjadikan tingkah laku ini mungkin. Kami telah menyebut bahawa protokol tambahan mesti dipanggil kerana proses peringkat pengguna telah dihapuskan. Sebaliknya, semua operasi buka fail dan beberapa panggilan RPC telah dilaksanakan sebagai operasi sistem fail peringkat kernel.

Semua versi NFS mentakrifkan setiap unit kerja dari segi operasi klien dan pelayan RPC. Setiap permintaan NFSv3 memerlukan bilangan panggilan RPC dan panggilan port terbuka yang agak ketara untuk menghasilkan keputusan. Versi 4 memudahkan ini dengan memperkenalkan konsep kononnya komposit operasi (kompaun), yang merangkumi sejumlah besar operasi pada objek sistem fail. Kesan langsung, sudah tentu, terdapat lebih sedikit panggilan RPC dan kurang data yang perlu dipindahkan melalui rangkaian, walaupun setiap panggilan RPC pada dasarnya membawa lebih banyak data, melakukan lebih banyak kerja. Dianggarkan bahawa panggilan RPC dalam NFSv3 memerlukan lima kali ganda bilangan interaksi pelanggan-pelayan berbanding prosedur RPC kompaun.

RPC tidak begitu penting lagi dan pada asasnya berfungsi sebagai pembalut ke atas beberapa operasi yang terkandung dalam timbunan NFSv4. Perubahan ini juga menjadikan timbunan protokol kurang bergantung pada semantik sistem fail yang digunakan. Tetapi ini tidak bermakna bahawa operasi sistem fail sistem pengendalian lain diabaikan: contohnya, perkongsian sumber Windows memerlukan ketekunan keadaan merentas panggilan untuk membuka sumber. Kegigihan stateful bukan sahaja menjadikan analisis trafik lebih mudah, tetapi apabila dilaksanakan pada tahap semantik sistem fail, ia menjadikan operasi sistem fail lebih mudah untuk dikawal. Panggilan terbuka sumber stateful membolehkan pelanggan menyimpan data fail dan menyatakan - sesuatu yang sebaliknya akan berlaku pada pelayan. Dalam kehidupan sebenar (di mana pelanggan Windows berada di mana-mana), menjadikan pelayan NFS berfungsi dengan telus dan seragam dengan sumber yang dikongsi Windows adalah berbaloi dengan masa yang anda luangkan untuk menyediakan konfigurasi NFS.

Menggunakan NFS

Memasang NFS secara amnya serupa dengan memasang Samba. Di bahagian pelayan anda menentukan sistem fail atau direktori untuk dieksport atau perkongsian; pihak pelanggan memasang direktori ini. Sebaik sahaja pelanggan jauh memasang direktori NFS, direktori itu boleh diakses sama seperti direktori lain pada sistem fail tempatan. Menyediakan NFS pada pelayan adalah proses yang mudah. Sekurang-kurangnya, anda harus mencipta atau mengedit fail /etc/exports dan mulakan daemon NFS. Untuk mengkonfigurasi perkhidmatan NFS yang lebih selamat, anda juga harus mengedit fail /etc/hosts.allow dan /etc/hosts.deny. Pelanggan NFS hanya memerlukan arahan mount. Maklumat dan pilihan tambahan diterangkan dalam dokumentasi dalam talian Linux® (halaman manusia).

pelayan NFS

Entri dalam fail /etc/exports mempunyai format yang jelas. Untuk berkongsi sistem fail, edit fail /etc/exports dan huraikan sistem fail (dengan parameter) dalam format umum berikut:

direktori (atau sistem fail) klien1 (pilihan1, pilihan2) klien2 (pilihan1, pilihan2)

Parameter biasa

Terdapat beberapa pilihan umum yang tersedia untuk mengkonfigurasi pelaksanaan NFS anda. Ini termasuk:

  • selamat: Pilihan ini (lalai) digunakan untuk sambungan NFS pelabuhan yang tersedia TCP/IP kurang daripada 1024. Menentukan tidak selamat melumpuhkan ini.
  • rw: Tetapan ini membenarkan pelanggan NFS membaca/menulis akses. Akses lalai ialah baca sahaja.
  • tak segerak: Pilihan ini mungkin meningkatkan prestasi, tetapi ia juga boleh menyebabkan kehilangan data jika anda memulakan semula pelayan NFS tanpa menghentikan daemon NFS terlebih dahulu. Tetapan lalai ialah penyegerakan.
  • no_wdelay: Pilihan ini melumpuhkan kelewatan rakaman. Jika mod async ditetapkan, NFS mengabaikan tetapan ini.
  • nohide: Jika anda melekapkan satu direktori di atas yang lain, direktori lama biasanya tersembunyi atau kelihatan kosong. Untuk mengelakkan tingkah laku ini, dayakan parameter sembunyikan.
  • no_subtree_check: Pilihan ini melumpuhkan pemantauan subdirektori yang dilakukan untuk beberapa semakan keselamatan yang anda mungkin tidak mahu abaikan. Tetapan lalai adalah untuk membenarkan kawalan subdirektori.
  • no_auth_nlm: Parameter ini, apabila ditetapkan kepada insecure_locks, mengarahkan daemon NFS untuk tidak melakukan pengesahan semasa permintaan kunci. Tetapan lalai ialah auth_nlm atau secure_locks.
  • mp (titik lekap=laluan): Apabila pilihan ini diisytiharkan secara eksplisit, NSF memerlukan direktori yang dieksport untuk dipasang.
  • fsid=num: Pilihan ini biasanya digunakan apabila menyediakan sistem pemulihan selepas kegagalan NFS. Jika anda ingin melaksanakan failover untuk NFS, sila rujuk dokumentasi NFS.

Pemetaan pengguna

Melalui pemetaan pengguna NFS, anda boleh mengenal pasti pengguna pseudo atau pengguna sebenar dan kumpulan dengan pengguna menjalankan volum NFS. Pengguna NFS mempunyai hak pengguna atau kumpulan yang dibenarkan oleh pemetaan. Menggunakan pengguna dan kumpulan tunggal (generik) untuk volum NFS menyediakan tahap keselamatan dan fleksibiliti tanpa usaha pentadbiran yang ketara.

Apabila menggunakan fail pada sistem fail yang dipasang NFS, capaian pengguna biasanya terbantut. Ini bermakna pengguna mengakses fail sebagai pengguna tanpa nama yang mempunyai akses baca sahaja kepada fail tersebut. Tingkah laku ini amat penting untuk pengguna root. Walau bagaimanapun, terdapat situasi di mana anda mahu pengguna mengakses fail pada sistem jauh sebagai akar atau yang lain pengguna tertentu. NFS membenarkan anda untuk menentukan pengguna (mengikut nombor pengenalan pengguna (UID) dan nombor pengenalan kumpulan (GID)) untuk mengakses fail jauh, dan anda boleh melumpuhkan tingkah laku "penindasan" lalai biasa.

Pilihan paparan pengguna termasuk:

  • root_squash: Pilihan ini menghalang pengguna root daripada mengakses volum NFS yang dipasang.
  • no_root_squash: Pilihan ini membolehkan pengguna root mengakses volum NFS yang dipasang.
  • all_squash: Pilihan ini, berguna untuk volum NFS dengan akses terbuka, menyekat semua UID dan GID dan hanya menggunakan akaun pengguna tanpa nama. Tetapan lalai ialah no_all_squash.
  • anonuid dan anongid: Tetapan ini menukar UID dan GID pengguna tanpa nama kepada akaun yang ditentukan.

Penyenaraian 1 menunjukkan contoh entri /etc/exports.

Penyenaraian 1. Contoh /etc/exports entri
/opt/files 192.168.0.* /opt/files 192.168.0.120 /opt/files 192.168.0.125(rw, all_squash, anonuid=210, anongid=100) /opt/files *(ro, insecure)

Entri pertama mengeksport direktori /opt/files untuk semua hos pada rangkaian 192.168.0. Entri berikut mengeksport /opt/fail untuk satu hos: 192.168.0.120. Entri ketiga menentukan hos 192.168.0.125 dan memberikan akses baca/tulis kepada fail dengan hak pengguna yang mempunyai id pengguna=210 dan id kumpulan=100 . Entri terakhir digunakan untuk direktori awam dan membenarkan akses baca sahaja dan hanya di bawah akaun pengguna tanpa nama.

Pelanggan NFS

Awas

Setelah NFS digunakan untuk memasang sistem fail jauh, ia juga akan menjadi sebahagian daripada mana-mana operasi penciptaan sistem fail kongsi. salinan sandaran sistem yang anda jalankan komputer pelanggan. Tingkah laku ini boleh mendatangkan hasil yang berpotensi berbahaya jika anda tidak mengecualikan direktori yang dipasang semasa membuat sandaran.

Untuk menggunakan NFS sebagai klien, rpc.statd dan portmap mesti dijalankan pada komputer klien. Anda boleh menjalankan ps -ef untuk menyemak kehadiran dua daemon ini. Jika ia berfungsi (seperti yang sepatutnya), anda boleh melekapkan direktori eksport pelayan menggunakan arahan umum berikut:

mount server:directory local mount point

Secara umumnya, anda harus berjalan sebagai root apabila memasang sistem fail. Pada komputer jauh, anda boleh menggunakan arahan berikut (dengan mengandaikan pelayan NFS mempunyai alamat IP 192.168.0.100):

lekapkan 192.168.0.100:/opt/files/mnt

Pengedaran sistem anda mungkin memerlukan anda untuk menentukan jenis sistem fail semasa memasangnya. Jika ya, gunakan arahan:

mount -t nfs 192.168.0.100:/opt/files /mnt

Direktori jauh harus dipasang tanpa sebarang masalah jika anda telah mengkonfigurasi pelayan dengan betul. Sekarang jalankan arahan cd untuk menukar ke direktori /mnt, kemudian perintah ls untuk melihat fail. Untuk menjadikan pelekap ini kekal, anda mesti mengedit fail /etc/fstab dan mencipta entri yang serupa dengan yang berikut:

192.168.0.100:/opt/files /mnt nfs rw 0 0

Catatan: Untuk mendapatkan maklumat lanjut tentang entri /etc/fstab, lihat bantuan dalam talian fstab.

Kritikan terhadap NFS

Kritikan membawa kepada peningkatan

Kritikan yang berkaitan dengan keselamatan NFS adalah sebab bagi banyak penambahbaikan dalam NSFv4. Pencipta versi baharu mengambil langkah sebenar untuk meningkatkan keselamatan interaksi pelanggan-pelayan. Malah, mereka memutuskan untuk melaksanakan model sistem keselamatan yang sama sekali baru.

Untuk memahami model sistem keselamatan, anda harus membiasakan diri dengan antara muka pengaturcaraan aplikasi Perkhidmatan Keselamatan Generik (GSS-API) versi 2, semakan 1. GSS-API diterangkan sepenuhnya dalam RFC 2743, yang, malangnya, merupakan salah satu dokumen RFC yang paling sukar untuk difahami.

Daripada pengalaman kami dengan NFSv4, kami tahu bahawa bukan mudah untuk membuat sistem fail rangkaian bebas daripada sistem pengendalian. Tetapi lebih sukar untuk menjadikannya bebas daripada sistem pengendalian dan protokol rangkaian semua kawasan sistem perlindungan. Kami memerlukan kedua-duanya, kerana NFS perlu dapat mengendalikan sejumlah besar operasi pengguna dan lakukan ini tanpa kaitan dengan spesifik interaksi melalui protokol rangkaian.

Sambungan antara klien dan pelayan NFS dilindungi menggunakan sistem keselamatan yang dipanggil (agak dangkal) kuat RPC. NFSv4 menggunakan piawaian Open Network Computing Remote Procedure Call (ONCRPC) yang ditakrifkan dalam RFC 1831. Sistem keselamatan terpaksa diperkukuh, jadi bukannya pengesahan mudah (dikenali sebagai AUTH_SYS) sebagai bahagian wajib protokol NFSv4, sejenis sistem keselamatan berasaskan GSS-API yang dikenali sebagai RPCSEC_GSS. Mekanisme keselamatan paling penting yang tersedia dalam NFSv4 termasuk Kerberos versi 5 dan LIPKEY.

Walaupun Kerberos mempunyai had apabila digunakan melalui Internet, LIPKEY mempunyai kelebihan bagus untuk bertindak seperti Secure Sockets Layer (SSL), ia menggesa pengguna untuk nama pengguna dan kata laluan mereka sambil mengelakkan pergantungan TCP pada SSL, pergantungan yang tidak dikongsi oleh NFSv4. Anda boleh mengkonfigurasi NFS untuk melaksanakan variasi keselamatan jika RPCSEC_GSS tidak diperlukan. Versi NFS sebelumnya tidak mempunyai keupayaan ini dan oleh itu tidak dapat memberikan keselamatan yang kukuh, integriti data, keperluan pengesahan atau jenis penyulitan.

Protokol NFSv3 telah menerima kritikan keselamatan yang ketara. Jika pelayan NFSv3 berlari melalui TCP, adalah mustahil untuk menjalankan rangkaian NFSv3 melalui Internet. Malangnya, ia juga memerlukan pembukaan berbilang port, yang memperkenalkan beberapa lubang keselamatan yang dipublikasikan dengan baik. Dengan menjadikan port 2049 mandatori untuk NFS, ia menjadi mungkin untuk menggunakan NFSv4 dengan firewall tanpa perlu memberi terlalu banyak perhatian kepada port yang didengari oleh protokol lain, seperti protokol Mount. Oleh itu, menghapuskan protokol Mount mempunyai beberapa kesan positif:

  • Memerlukan mekanisme pengesahan yang kuat: NFSv4 mewajibkan mekanisme pengesahan yang kuat. Variasi Kerberos agak biasa. Mekanisme Kunci Awam Infrastruktur Rendah (LIPKEY) juga mesti disokong. NFSv3 tidak pernah menyokong apa-apa selain penyulitan UNIX standard untuk pengesahan akses - ini menimbulkan masalah keselamatan utama dalam rangkaian besar.
  • Skim gaya senarai kawalan capaian mandatori (ACL). Microsoft Windows NT: Walaupun NFSv3 membenarkan penyulitan kuat untuk pengesahan, ia tidak menggunakan skim akses ACL dalam gaya tingkap N.T. ACL dalam gaya mudah alih Sistem operasi Antara Muka (POSIX) kadangkala dilaksanakan, tetapi tidak pernah diterima secara umum. NFSv4 menjadikan skim ACL gaya Windows NT wajib.
  • Mekanisme kontrak dan gaya pengesahan: NFSv4 memperkenalkan keupayaan untuk merundingkan mekanisme dan gaya pengesahan. Dalam NSFv3 adalah mustahil untuk melakukan sesuatu yang lebih daripada definisi manual gaya penyulitan yang digunakan. Pentadbir Sistem terpaksa merundingkan penyulitan dan protokol keselamatan.

Adakah NFS masih tiada tandingan?

NFSv4 menggantikan NFSv3 pada kebanyakan sistem UNIX dan Linux. Sebagai sistem fail rangkaian, NSFv4 mempunyai sedikit pesaing. Pesaing yang berdaya maju ialah Common Internet File System (CIFS)/Server Message Block (SMB), memandangkan ia hadir dalam semua perisa Windows dan (kini) Linux. AFS tidak pernah mempunyai banyak pengaruh komersial; ia menekankan elemen sistem fail teragih yang memudahkan pemindahan dan replikasi data.

Versi NFS yang sedia Linux dikeluarkan selepas kernel mencapai versi 2.2, tetapi salah satu kegagalan yang lebih biasa bagi versi kernel Linux ialah Linux menggunakan NFSv3 agak lewat. Sebenarnya, sudah lama sebelum Linux menyokong sepenuhnya NSFv3. Dengan kemunculan NSFv4, kelemahan ini telah dihapuskan dengan cepat dan sokongan penuh NSFv4 telah dilaksanakan bukan sahaja dalam Solaris, AIX dan FreeBSD.

NFS kini dianggap sebagai teknologi matang, yang mempunyai kelebihan yang agak besar: ia selamat dan mudah - kebanyakan pengguna mendapati ia mudah untuk menggunakan satu log masuk selamat untuk mengakses rangkaian dan menggunakan keupayaannya, walaupun apabila fail dan aplikasi terletak pada pelbagai sistem. Walaupun ini mungkin kelihatan seperti kelemahan berbanding sistem fail teragih yang menyembunyikan struktur sistem daripada pengguna, perlu diingat bahawa banyak aplikasi menggunakan fail yang berada pada sistem pengendalian yang berbeza dan oleh itu pada komputer yang berbeza. NFS memudahkan untuk bekerja dengan sistem pengendalian yang berbeza tanpa perlu terlalu risau tentang semantik sistem fail dan ciri prestasi.

NFS, atau Sistem Fail Rangkaian, ialah protokol sistem fail rangkaian yang popular yang membolehkan pengguna melekapkan direktori rangkaian jauh pada mesin mereka dan memindahkan fail antara pelayan. Anda boleh menggunakan ruang cakera pada mesin lain untuk fail anda dan bekerja dengan fail yang terletak pada pelayan lain. Pada asasnya, ini adalah alternatif kepada perkongsian Windows untuk Linux, tidak seperti Samba, ia dilaksanakan pada peringkat kernel dan berfungsi dengan lebih stabil.

Artikel ini akan membincangkan pemasangan nfs pada Ubuntu 16.04. Kami akan melihat pada memasang semua komponen yang diperlukan, menyediakan folder kongsi, dan menyambungkan folder rangkaian.

Seperti yang telah disebutkan, NFS ialah sistem fail rangkaian. Untuk bekerja, anda memerlukan pelayan untuk dihoskan folder kongsi dan pelanggan yang boleh melekapkan folder rangkaian sebagai cakera biasa dalam sistem. Tidak seperti protokol lain, NFS menyediakan akses telus kepada fail jauh. Program akan melihat fail seperti dalam sistem fail biasa dan berfungsi dengannya seperti fail tempatan, nfs hanya mengembalikan bahagian fail yang diminta, bukannya keseluruhan fail, jadi sistem fail ini akan berfungsi dengan sempurna pada sistem dengan Internet pantas atau pada rangkaian tempatan.

Memasang Komponen NFS

Sebelum kita boleh bekerja dengan NFS, kita perlu memasang beberapa program. Pada mesin yang akan menjadi pelayan, anda perlu memasang pakej nfs-kernel-server, yang akan digunakan untuk membuka saham nfs dalam ubuntu 16.04. Untuk melakukan ini, jalankan:

sudo apt install nfs-kernel-server

Sekarang mari kita semak sama ada pelayan telah dipasang dengan betul. Perkhidmatan NFS mendengar sambungan untuk kedua-dua TCP dan UDP pada port 2049. Anda boleh melihat sama ada port ini sebenarnya digunakan dengan arahan:

rpcinfo -p | grep nfs

Ia juga penting untuk menyemak sama ada NFS disokong pada peringkat kernel:

cat /proc/filesystems | grep nfs

Kami melihat bahawa ia berfungsi, tetapi jika tidak, anda perlu memuatkan modul kernel nfs secara manual:

Mari tambahkan nfs pada permulaan:

sudo systemctl membolehkan nfs

Anda perlu memasang pakej nfs-common pada komputer klien untuk dapat berfungsi dengan sistem fail ini. Anda tidak perlu memasang komponen pelayan, cukup pakej ini sahaja:

sudo apt install nfs-common

Menyediakan pelayan NFS pada Ubuntu

Kita boleh membuka akses NFS ke mana-mana folder, tetapi mari buat yang baharu untuk tujuan ini:

folder_alamat pelanggan (pilihan)

Alamat folder ialah folder yang perlu dibuat boleh diakses melalui rangkaian. Klien - Alamat IP atau alamat rangkaian dari mana folder ini boleh diakses. Tetapi dengan pilihan ia sedikit lebih rumit. Mari lihat beberapa daripada mereka:

  • rw- benarkan membaca dan menulis dalam folder ini
  • ro- benarkan baca sahaja
  • penyegerakan- bertindak balas kepada permintaan seterusnya hanya apabila data disimpan ke cakera (lalai)
  • tak segerak- jangan sekat sambungan semasa data sedang ditulis ke cakera
  • selamat- gunakan hanya port di bawah 1024 untuk sambungan
  • tidak selamat- gunakan mana-mana port
  • nohide- jangan sembunyikan subdirektori apabila membuka akses kepada beberapa direktori
  • akar_labu- gantikan permintaan daripada akar dengan permintaan tanpa nama
  • all_squash- jadikan semua permintaan tanpa nama
  • anonuid Dan anongid- menentukan uid dan gid untuk pengguna tanpa nama.

Sebagai contoh, untuk folder kami baris ini mungkin kelihatan seperti ini:

/var/nfs 127.0.0.1(rw,sync,no_subtree_check)

Setelah semuanya dikonfigurasikan, yang tinggal hanyalah mengemas kini jadual eksport NFS:

sudo exportfs -a

Itu sahaja, membuka saham nfs dalam ubuntu 16.04 selesai. Sekarang mari kita cuba untuk mengkonfigurasi klien dan cuba untuk melekapkannya.

Sambungan NFS

Kami tidak akan membincangkan isu ini secara terperinci dalam artikel hari ini. Ini adalah topik yang agak besar yang layak untuk artikelnya sendiri. Tetapi saya masih akan mengatakan beberapa perkataan.

Untuk melekapkan folder rangkaian, anda tidak memerlukan sebarang klien nfs Ubuntu, hanya gunakan arahan pelekap:

sudo mount 127.0.0.1:/var/nfs/ /mnt/

Kini anda boleh cuba mencipta fail dalam direktori yang disambungkan:

Kami juga akan melihat sistem fail yang dipasang menggunakan df:

127.0.0.1:/var/nfs 30G 6.7G 22G 24% /mnt

Untuk melumpuhkan sistem fail ini, hanya gunakan umount standard:

sudo umount /mnt/

kesimpulan

Artikel ini membincangkan penyediaan nfs ubuntu 16.04, seperti yang anda lihat, semuanya dilakukan dengan mudah dan telus. Menyambungkan saham NFS dilakukan dalam beberapa klik menggunakan arahan standard, dan membuka saham nfs dalam ubuntu 16.04 tidaklah lebih rumit daripada menyambung. Jika anda mempunyai sebarang soalan, tulis dalam komen!

Catatan berkaitan: