NFS სერვერის ინსტალაცია და კონფიგურაცია. NFS სერვერის დაყენება NFS სამაგრის მოხსნა


შუადღე მშვიდობისა, მკითხველებო და სტუმრებო. იყო ძალიან დიდი შესვენება პოსტებს შორის, მაგრამ მე დავბრუნდი მოქმედებაში). დღევანდელ სტატიაში მე გადავხედავ NFS პროტოკოლის ოპერაცია, და NFS სერვერისა და NFS კლიენტის დაყენება Linux-ზე.

NFS-ის შესავალი

NFS (ქსელის ფაილური სისტემა - ქსელის ფაილური სისტემა) ჩემი აზრით - იდეალური გადაწყვეტა ლოკალურ ქსელში, სადაც სწრაფი (სამბასთან შედარებით უფრო სწრაფი და ნაკლებად რესურსი ინტენსიური ვიდრე დისტანციურ ფაილურ სისტემებთან დაშიფვრით - sshfs, SFTP და ა.შ...) მონაცემთა გაცვლაა საჭირო და არ არის გადაცემული ინფორმაციის წინა პლანზე უსაფრთხოება. NFS პროტოკოლისაშუალებას იძლევა დაამონტაჟეთ დისტანციური ფაილური სისტემები ქსელში ადგილობრივ დირექტორიაში, თითქოს ეს იყოს დამონტაჟებული დისკის ფაილური სისტემა. ეს საშუალებას აძლევს ადგილობრივ აპლიკაციებს იმუშაონ დისტანციურ ფაილურ სისტემასთან, თითქოს ისინი ლოკალური იყოს. მაგრამ თქვენ უნდა იყოთ ფრთხილად (!). NFS-ის დაყენება, რადგან გარკვეული კონფიგურაციით შესაძლებელია კლიენტის ოპერაციული სისტემის გაყინვა გაუთავებელი I/O-ს მოლოდინში. NFS პროტოკოლისამუშაოზე დაფუძნებული RPC პროტოკოლი, რაც ჯერ კიდევ სცილდება ჩემს გაგებას)) ასე რომ, სტატიაში მასალა ცოტა ბუნდოვანი იქნება... სანამ NFS-ის გამოყენებას შეძლებთ, იქნება ეს სერვერი თუ კლიენტი, უნდა დარწმუნდეთ, რომ თქვენს ბირთვს აქვს NFS ფაილის მხარდაჭერა სისტემა. შეგიძლიათ შეამოწმოთ თუ არა ბირთვი მხარს უჭერს NFS ფაილურ სისტემას ფაილში შესაბამისი ხაზების არსებობის დათვალიერებით. /proc/ფაილის სისტემები:

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

თუ მითითებული ხაზები ფაილში /proc/ფაილის სისტემებიარ ჩანს, მაშინ თქვენ უნდა დააინსტალიროთ ქვემოთ აღწერილი პაკეტები. ეს, სავარაუდოდ, საშუალებას მოგცემთ დააინსტალიროთ დამოკიდებული ბირთვის მოდულები საჭირო ფაილური სისტემების მხარდასაჭერად. თუ პაკეტების დაყენების შემდეგ NFS მხარდაჭერა არ არის ნაჩვენები მითითებულ ფაილში, მაშინ დაგჭირდებათ ამ ფუნქციის ჩართვა.

ამბავი ქსელის ფაილური სისტემა

NFS პროტოკოლიშემუშავებულია Sun Microsystems-ის მიერ და აქვს 4 ვერსია თავის ისტორიაში. NFSv1შეიქმნა 1989 წელს და იყო ექსპერიმენტული, მუშაობდა UDP პროტოკოლზე. ვერსია 1 აღწერილია. NFSv2გამოვიდა იმავე 1989 წელს, აღწერილია იგივე RFC1094-ით და ასევე ეფუძნება UDP პროტოკოლს, ხოლო ფაილიდან არაუმეტეს 2 გბ-ის წაკითხვის საშუალებას იძლევა. NFSv3დასრულდა 1995 წელს და აღწერილია. მესამე ვერსიის მთავარი ინოვაციები იყო დიდი ფაილების მხარდაჭერა, TCP პროტოკოლისა და დიდი TCP პაკეტების მხარდაჭერა, რამაც მნიშვნელოვნად დააჩქარა ტექნოლოგიის შესრულება. NFSv4დასრულდა 2000 წელს და აღწერილია RFC 3010-ში, შესწორებული 2003 წელს და აღწერილია ში. მეოთხე ვერსია მოიცავდა შესრულების გაუმჯობესებას, ავტორიზაციის სხვადასხვა საშუალების მხარდაჭერას (კერძოდ, Kerberos და LIPKEY RPCSEC GSS პროტოკოლის გამოყენებით) და წვდომის კონტროლის სიებს (როგორც POSIX, ასევე Windows ტიპის). NFS ვერსია v4.1დაამტკიცა IESG-მა 2010 წელს და მიიღო ნომერი. მნიშვნელოვანი ინოვაცია 4.1 ვერსიაში არის pNFS - პარალელური NFS-ის სპეციფიკაცია, მექანიზმი პარალელური NFS კლიენტის წვდომისთვის რამდენიმე განაწილებული NFS სერვერებიდან მონაცემებზე. ქსელის ფაილური სისტემის სტანდარტში ასეთი მექანიზმის არსებობა ხელს შეუწყობს განაწილებული „ღრუბელის“ შენახვისა და საინფორმაციო სისტემების შექმნას.

NFS სერვერი

ვინაიდან გვაქვს NFS- ეს ქსელიფაილური სისტემა, მაშინ აუცილებელია. (სტატიის წაკითხვაც შეგიძლიათ). შემდეგი აუცილებელია. Debian-ზე ეს არის პაკეტი nfs-kernel-serverდა nfs-common, RedHat-ში ეს არის პაკეტი nfs-utils. ასევე, თქვენ უნდა მისცეთ დემონს ნება ოპერაციული სისტემის შესრულების საჭირო დონეზე (ბრძანება RedHat-ში - /sbin/chkconfig nfs ჩართულია, დებიანში - /usr/sbin/update-rc.d nfs-kernel-server ნაგულისხმევი).

Debian-ში დაინსტალირებული პაკეტები იხსნება შემდეგი თანმიმდევრობით:

ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 root root 20 Oct 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 27 Oct 22 01:23 S16nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root 27 Oct 22 01:23 S16. /nfs-kernel-server

ანუ ჯერ იწყება nfs-common, შემდეგ თავად სერვერი nfs-kernel-server. RedHat-ში სიტუაცია მსგავსია, ერთადერთი გამონაკლისით, რომ პირველი სკრიპტი ეწოდება nfslockდა სერვერს ეძახიან უბრალოდ nfs. შესახებ nfs-common Debian ვებსაიტი სიტყვასიტყვით გვეუბნება ამას: გაზიარებული ფაილები NFS კლიენტისა და სერვერისთვის, ეს პაკეტი უნდა იყოს დაინსტალირებული მანქანაზე, რომელიც იმუშავებს როგორც NFS კლიენტი ან სერვერი. პაკეტში შედის პროგრამები: lockd, statd, showmount, nfsstat, gssd და idmapd. გაშვების სკრიპტის შინაარსის ნახვა /etc/init.d/nfs-commonშეგიძლიათ თვალყური ადევნოთ მუშაობის შემდეგ თანმიმდევრობას: სკრიპტი ამოწმებს შესრულებადი ორობითი ფაილის არსებობას /sbin/rpc.statd, ამოწმებს ფაილებში ყოფნას /etc/default/nfs-common, /etc/fstabდა / და ა.შ. / ექსპორტიპარამეტრები, რომლებიც მოითხოვს დემონების გაშვებას idmapd და gssd , იწყებს დემონს /sbin/rpc.statd , შემდეგ გაშვებამდე /usr/sbin/rpc.idmapdდა /usr/sbin/rpc.gssdამოწმებს ამ შესრულებადი ორობითი ფაილების არსებობას, შემდეგ for დემონი /usr/sbin/rpc.idmapdამოწმებს ხელმისაწვდომობას sunrpc, nfsდა nfsd, ასევე ფაილური სისტემის მხარდაჭერა rpc_pipefsბირთვში (ანუ მისი არსებობა ფაილში /proc/ფაილის სისტემები), თუ ყველაფერი წარმატებულია, ის იწყება /usr/sbin/rpc.idmapd . გარდა ამისა, დემონისთვის /usr/sbin/rpc.gssd ჩეკები ბირთვის მოდული rpcsec_gss_krb5და იწყებს დემონს.

თუ ათვალიერებთ შინაარსს NFS სერვერის გაშვების სკრიპტი Debian-ზე ( /etc/init.d/nfs-kernel-server), შემდეგ შეგიძლიათ დაიცვას შემდეგი თანმიმდევრობა: გაშვებისას სკრიპტი ამოწმებს ფაილის არსებობას / და ა.შ. / ექსპორტი, ხელმისაწვდომობა nfsd, მხარდაჭერის ხელმისაწვდომობა NFS ფაილური სისტემა in (ანუ ფაილში /proc/ფაილის სისტემები), თუ ყველაფერი თავის ადგილზეა, მაშინ დემონი იწყება /usr/sbin/rpc.nfsd , შემდეგ ამოწმებს მითითებულია თუ არა პარამეტრი NEED_SVCGSD(დაყენებულია სერვერის პარამეტრების ფაილში /etc/default/nfs-kernel-server) და, თუ მოცემულია, იწყებს დემონს /usr/sbin/rpc.svcgssd , უშვებს დემონს ბოლოს /usr/sbin/rpc.mountd . ამ სკრიპტიდან ირკვევა, რომ NFS სერვერის ოპერაცია შედგება daemons rpc.nfsd, rpc.mountd და თუ Kerberos ავთენტიფიკაცია გამოიყენება, მაშინ rcp.svcgssd დემონი. წითელ ქუდში ისევ მუშაობს rpc.rquotad და nfslogd დემონი (დებიანში რატომღაც ვერ ვიპოვე ინფორმაცია ამ დემონის შესახებ და მისი არყოფნის მიზეზები, როგორც ჩანს წაშლილია...).

აქედან ირკვევა, რომ ქსელის ფაილური სისტემის სერვერი შედგება შემდეგი პროცესებისგან (წაიკითხეთ: დემონები), მდებარეობს /sbin და /usr/sbin დირექტორიებში:

NFSv4-ში, Kerberos-ის გამოყენებისას, იწყება დამატებითი დემონები:

  • rpc.gssd- NFSv4 დემონი უზრუნველყოფს ავთენტიფიკაციის მეთოდებს GSS-API (Kerberos ავთენტიფიკაცია) მეშვეობით. მუშაობს კლიენტზე და სერვერზე.
  • rpc.svcgssd- NFSv4 სერვერის დემონი, რომელიც უზრუნველყოფს სერვერის მხრიდან კლიენტის ავთენტიფიკაციას.

portmap და RPC პროტოკოლი (Sun RPC)

ზემოაღნიშნული პაკეტების გარდა, NFSv2 და v3 გამართულად მუშაობისთვის საჭიროა დამატებითი პაკეტი პორტმაპი(ახალ დისტრიბუციებში ჩანაცვლებულია სახელწოდებით rpcbind). ეს პაკეტი ჩვეულებრივ დაინსტალირებულია ავტომატურად NFS-თან, როგორც დამოკიდებულ პაკეტთან და ახორციელებს RPC სერვერის მუშაობას, ანუ ის პასუხისმგებელია პორტების დინამიურ მინიჭებაზე RPC სერვერზე რეგისტრირებული ზოგიერთი სერვისისთვის. ფაქტიურად, დოკუმენტაციის მიხედვით, ეს არის სერვერი, რომელიც გარდაქმნის RPC (Remote Procedure Call) პროგრამის ნომრებს TCP/UDP პორტის ნომრებად. portmap მუშაობს რამდენიმე ობიექტზე: RPC ზარები ან მოთხოვნები, TCP/UDP პორტები,პროტოკოლის ვერსია(tcp ან udp), პროგრამის ნომრებიდა პროგრამული ვერსიები. portmap დემონი გაშვებულია /etc/init.d/portmap სკრიპტით NFS სერვისების დაწყებამდე.

მოკლედ, RPC (Remote Procedure Call) სერვერის ამოცანაა RPC ზარების (ე.წ. RPC პროცედურების) დამუშავება ლოკალური და დისტანციური პროცესებიდან. RPC ზარების გამოყენებით, სერვისები დარეგისტრირდებიან ან იშლებიან პორტში/მაპერიდან (aka portmapper, aka portmap, aka portmapper, aka, ახალ ვერსიებში, rpcbind) და კლიენტები იყენებენ RPC ზარებს პორტმაპერისთვის მოთხოვნების გასაგზავნად, რათა მიიღონ საჭირო ინფორმაცია. . პროგრამის სერვისების მოსახერხებელი სახელები და მათი შესაბამისი ნომრები განისაზღვრება /etc/rpc ფაილში. როგორც კი რომელიმე სერვისი გამოგზავნის შესაბამის მოთხოვნას და დარეგისტრირდება RPC სერვერზე პორტის მაპერში, RPC სერვერი ანიჭებს, ასახავს სერვისს TCP და UDP პორტებს, რომლებზეც დაიწყო სერვისი და ინახავს ბირთვში შესაბამის ინფორმაციას. გაშვებული სერვისი (სახელი), უნიკალური ნომრის სერვისი (/etc/rpc-ის შესაბამისად), პროტოკოლისა და პორტის შესახებ, რომელზეც მუშაობს სერვისი და სერვისის ვერსიის შესახებ და აწვდის მითითებულ ინფორმაციას კლიენტებს მოთხოვნისთანავე. თავად პორტის გადამყვანს აქვს პროგრამის ნომერი (100000), ვერსიის ნომერი - 2, TCP პორტი 111 და UDP პორტი 111. ზემოთ, NFS სერვერის დემონების შემადგენლობის დაზუსტებისას, მე მივუთითე ძირითადი RPC პროგრამის ნომრები. მე, ალბათ, ცოტა დაგაბნევთ ამ აბზაცში, ამიტომ ვიტყვი ძირითად ფრაზას, რომელიც ნათლად უნდა ასახავდეს: პორტის რუქის მთავარი ფუნქციაა დაბრუნდეს კლიენტის მოთხოვნით, რომელმაც მოგვაწოდა RPC პროგრამის ნომერი ( ან RPC პროგრამის ნომერი) და მისთვის (კლიენტისთვის) ვერსია, რომელზეც მუშაობს მოთხოვნილი პროგრამა. შესაბამისად, თუ კლიენტს სჭირდება RPC-ზე წვდომა კონკრეტული პროგრამის ნომრით, მან ჯერ უნდა დაუკავშირდეს პორტმაპის პროცესს სერვერის მანქანაზე და განსაზღვროს საკომუნიკაციო პორტის ნომერი მისთვის საჭირო RPC სერვისით.

RPC სერვერის მოქმედება შეიძლება წარმოდგენილი იყოს შემდეგი ნაბიჯებით:

  1. პორტის გადამყვანი ჯერ უნდა დაიწყოს, როგორც წესი, როდესაც სისტემა ჩაიტვირთება. ეს ქმნის TCP ბოლო წერტილს და ხსნის TCP პორტს 111. ის ასევე ქმნის UDP ბოლო წერტილს, რომელიც ელოდება UDP მონაცემთა გრამის ჩამოსვლას UDP პორტ 111-ზე.
  2. გაშვებისას, პროგრამა, რომელიც გადის RPC სერვერზე, ქმნის TCP ბოლო წერტილს და UDP ბოლო წერტილს პროგრამის თითოეული მხარდაჭერილი ვერსიისთვის. (RPC სერვერს შეუძლია მრავალი ვერსიის მხარდაჭერა. კლიენტი განსაზღვრავს საჭირო ვერსიას RPC ზარის განხორციელებისას.) სერვისის თითოეულ ვერსიას ენიჭება დინამიურად მინიჭებული პორტის ნომერი. სერვერი აღრიცხავს თითოეულ პროგრამას, ვერსიას, პროტოკოლს და პორტის ნომერს შესაბამისი RPC ზარის განხორციელებით.
  3. როდესაც RPC კლიენტის პროგრამას სჭირდება საჭირო ინფორმაციის მოპოვება, ის რეკავს პორტის გადამწყვეტის რუტინას, რათა მიიღოს დინამიურად მინიჭებული პორტის ნომერი მითითებული პროგრამის, ვერსიისა და პროტოკოლისთვის.
  4. ამ მოთხოვნის საპასუხოდ, ჩრდილოეთი აბრუნებს პორტის ნომერს.
  5. კლიენტი აგზავნის RPC მოთხოვნის შეტყობინებას მე-4 ნაბიჯში მიღებულ პორტის ნომერზე. თუ UDP გამოიყენება, კლიენტი უბრალოდ აგზავნის UDP მონაცემთაგრამას, რომელიც შეიცავს RPC გამოწვევის შეტყობინებას UDP პორტის ნომერზე, რომელზეც მუშაობს მოთხოვნილი სერვისი. საპასუხოდ, სერვისი აგზავნის UDP მონაცემთაგრამას, რომელიც შეიცავს RPC საპასუხო შეტყობინებას. თუ TCP გამოიყენება, კლიენტი აქტიურად იხსნება სასურველი სერვისის TCP პორტის ნომერზე და შემდეგ აგზავნის RPC გამოწვევის შეტყობინებას დამყარებულ კავშირზე. სერვერი პასუხობს RPC საპასუხო შეტყობინებით კავშირზე.

RPC სერვერიდან ინფორმაციის მისაღებად გამოიყენეთ პროგრამა rpcinfo. პარამეტრების მითითებისას -p მასპინძელიპროგრამა აჩვენებს ყველა რეგისტრირებული RPC პროგრამის ჩამონათვალს მასპინძელ ჰოსტზე. ჰოსტის მითითების გარეშე, პროგრამა აჩვენებს სერვისებს ლოკალჰოსტზე. მაგალითი:

ARCHIV ~ # rpcinfo -p prog-ma vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 status 100024 1 tcp 61000002 status 1000002 00 021 3 udp 44310 nlockmgr 100021 4 udp 44310 nlockmgr 100021 1 tcp 44851 nlockmgr 100021 3 tcp 44851 nlockmgr 100021 4 tcp 44851 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 0nfnf 204 s 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 დამონტაჟებული 100005 1 tcp 41405 დამონტაჟება 100005 2 udp 51306 დამონტაჟება 100005 2 tcp 41405 დამონტაჟება 100005 3 udp 51306 მონტაჟი 100005 3 tcp 41405 დამონტაჟებული

როგორც ხედავთ, rpcinfo აჩვენებს (სვეტებში მარცხნიდან მარჯვნივ) რეგისტრირებული პროგრამის ნომერს, ვერსიას, პროტოკოლს, პორტს და სახელს. rpcinfo-ს გამოყენებით შეგიძლიათ წაშალოთ პროგრამის რეგისტრაცია ან მიიღოთ ინფორმაცია კონკრეტული RPC სერვისის შესახებ (მეტი ვარიანტი man rpcinfo-ში). როგორც ხედავთ, portmapper daemons ვერსია 2 რეგისტრირებულია udp და tcp პორტებზე, rpc.statd ვერსია 1 udp და tcp პორტებზე, NFS lock მენეჯერის ვერსიები 1,3,4, nfs სერვერის დემონის ვერსია 2,3,4, ასევე. როგორც მთაზე დემონის ვერსიები 1,2,3.

NFS სერვერი (უფრო ზუსტად, rpc.nfsd დემონი) იღებს მოთხოვნებს კლიენტისგან UDP მონაცემთა გრამების სახით პორტზე 2049. მიუხედავად იმისა, რომ NFS მუშაობს პორტის გადამწყვეტთან, რომელიც საშუალებას აძლევს სერვერს გამოიყენოს დინამიურად მინიჭებული პორტები, UDP პორტი 2049 არის ხისტი კოდირებულია NFS-ზე უმეტეს განხორციელებაში.

ქსელის ფაილური სისტემის პროტოკოლის ოპერაცია

დისტანციური NFS-ის დამონტაჟება

დისტანციური NFS ფაილური სისტემის დამონტაჟების პროცესი შეიძლება წარმოდგენილი იყოს შემდეგი სქემით:

NFS პროტოკოლის აღწერა დისტანციური დირექტორიას დამონტაჟებისას:

  1. RPC სერვერი გაშვებულია სერვერზე და კლიენტზე (ჩვეულებრივ ჩატვირთვისას), რომელიც ემსახურება პორტმაპერის პროცესს და რეგისტრირებულია tcp/111 და udp/111 პორტებზე.
  2. გაშვებულია სერვისები (rpc.nfsd, rpc.statd და ა.შ.), რომლებიც რეგისტრირებულია RPC სერვერზე და რეგისტრირებულია ქსელის თვითნებურ პორტებზე (თუ სტატიკური პორტი არ არის მითითებული სერვისის პარამეტრებში).
  3. კლიენტის კომპიუტერზე mount ბრძანება უგზავნის თხოვნას ბირთვს ქსელის დირექტორია დაამონტაჟოს, რაც მიუთითებს ფაილური სისტემის ტიპზე, ჰოსტზე და თავად დირექტორიაში; ბირთვი აგზავნის და აყალიბებს RPC მოთხოვნას პორტმაპის პროცესზე NFS სერვერზე პორტ udp-ზე. /111 (თუ tcp-ით მუშაობის ვარიანტი არ არის დაყენებული კლიენტზე)
  4. NFS სერვერის ბირთვი ითხოვს RPC-ს rpc.mountd დემონის არსებობისთვის და კლიენტის ბირთვს უბრუნებს ქსელის პორტს, რომელზეც დემონი მუშაობს.
  5. mount აგზავნის RPC მოთხოვნას პორტში, რომელზეც მუშაობს rpc.mountd. NFS სერვერს ახლა შეუძლია კლიენტის გადამოწმება მისი IP მისამართისა და პორტის ნომრის საფუძველზე, რათა დაინახოს, შეუძლია თუ არა კლიენტს მითითებული ფაილური სისტემის დამონტაჟება.
  6. Mount Daemon აბრუნებს მოთხოვნილი ფაილური სისტემის აღწერას.
  7. კლიენტის mount ბრძანება გასცემს mount სისტემის ზარს, რათა დააკავშიროს მე-5 ნაბიჯში მიღებული ფაილის სახელური კლიენტის ჰოსტის ლოკალურ სამონტაჟო წერტილთან. ფაილის სახელური ინახება კლიენტის NFS კოდში და ამიერიდან ნებისმიერი წვდომა მომხმარებლის პროცესების მიერ სერვერის ფაილურ სისტემაზე არსებულ ფაილებზე გამოიყენებს ფაილის სახელურს, როგორც ამოსავალ წერტილს.

კლიენტსა და NFS სერვერს შორის კომუნიკაცია

ტიპიური წვდომა დისტანციურ ფაილურ სისტემაზე შეიძლება აღწერილი იყოს შემდეგნაირად:

NFS სერვერზე მდებარე ფაილზე წვდომის პროცესის აღწერა:

  1. კლიენტს (მომხმარებლის პროცესს) არ აინტერესებს ლოკალურ ფაილზე წვდომა თუ NFS ფაილზე. ბირთვი ურთიერთქმედებს აპარატურასთან ბირთვის მოდულების ან ჩაშენებული სისტემური ზარების მეშვეობით.
  2. ბირთვის მოდული kernel/fs/nfs/nfs.ko,რომელიც ასრულებს NFS კლიენტის ფუნქციებს, აგზავნის RPC მოთხოვნებს NFS სერვერზე TCP/IP მოდულის მეშვეობით. NFS ჩვეულებრივ იყენებს UDP-ს, თუმცა უახლესმა იმპლემენტაციებმა შეიძლება გამოიყენონ TCP.
  3. NFS სერვერი იღებს მოთხოვნებს კლიენტისგან, როგორც UDP მონაცემთა გრამები პორტზე 2049. მიუხედავად იმისა, რომ NFS-ს შეუძლია იმუშაოს პორტის გამხსნელთან, რომელიც სერვერს საშუალებას აძლევს გამოიყენოს დინამიურად მინიჭებული პორტები, UDP პორტი 2049 არის მყარი კოდირებული NFS-ზე უმეტეს განხორციელებაში.
  4. როდესაც NFS სერვერი იღებს მოთხოვნას კლიენტისგან, ის გადაეცემა ფაილების წვდომის ადგილობრივ რუტინას, რომელიც უზრუნველყოფს სერვერის ლოკალურ დისკზე წვდომას.
  5. დისკზე წვდომის შედეგი უბრუნდება კლიენტს.

NFS სერვერის დაყენება

სერვერის დაყენებაზოგადად შედგება ადგილობრივი დირექტორიების მითითებით, რომლებიც დაშვებულია დისტანციური სისტემების მიერ ფაილში / და ა.შ. / ექსპორტი. ამ მოქმედებას ე.წ საექსპორტო დირექტორია იერარქია. ექსპორტირებული კატალოგების შესახებ ინფორმაციის ძირითადი წყაროა შემდეგი ფაილები:

  • / და ა.შ. / ექსპორტი- ძირითადი კონფიგურაციის ფაილი, რომელიც ინახავს ექსპორტირებული დირექტორიების კონფიგურაციას. გამოიყენება NFS-ის გაშვებისას და exportfs კომუნალური პროგრამის მიერ.
  • /var/lib/nfs/xtab- შეიცავს დისტანციური კლიენტების მიერ დამონტაჟებული დირექტორიების ჩამონათვალს. გამოიყენება rpc.mountd დემონის მიერ, როდესაც კლიენტი ცდილობს იერარქიის დამონტაჟებას (შეიქმნება სამონტაჟო ჩანაწერი).
  • /var/lib/nfs/etab- დირექტორიათა სია, რომლებიც შეიძლება დამონტაჟდეს დისტანციური სისტემებით, სადაც მითითებულია ექსპორტირებული დირექტორიების ყველა პარამეტრი.
  • /var/lib/nfs/rmtab- იმ დირექტორიების სია, რომლებიც ამჟამად არ არის ექსპორტირებული.
  • /proc/fs/nfsd- სპეციალური ფაილური სისტემა (ბირთვი 2.6) NFS სერვერის მართვისთვის.
    • ექსპორტი- აქტიური ექსპორტირებული იერარქიებისა და კლიენტების სია, რომლებზეც ისინი იქნა ექსპორტირებული, ასევე პარამეტრები. ბირთვი იღებს ამ ინფორმაციას /var/lib/nfs/xtab-დან.
    • ძაფები- შეიცავს ძაფების რაოდენობას (ასევე შეიძლება შეიცვალოს)
    • filehandle-ის გამოყენებით შეგიძლიათ მიიღოთ მაჩვენებელი ფაილზე
    • და ა.შ..
  • /proc/net/rpc- შეიცავს "ნედლეულ" სტატისტიკას, რომლის მიღებაც შესაძლებელია nfsstat-ის გამოყენებით, ასევე სხვადასხვა ქეშით.
  • /var/run/portmap_mapping- ინფორმაცია RPC-ში რეგისტრირებული სერვისების შესახებ

Შენიშვნა: ზოგადად, ინტერნეტში არის ბევრი ინტერპრეტაცია და ფორმულირება xtab, etab, rmtab ფაილების დანიშნულების შესახებ, არ ვიცი ვის დავუჯერო, თუნდაც http://nfs.sourceforge.net/ ინტერპრეტაცია არის გაუგებარი.

/etc/exports ფაილის დაყენება

უმარტივეს შემთხვევაში, /etc/exports ფაილი არის ერთადერთი ფაილი, რომელიც საჭიროებს რედაქტირებას NFS სერვერის კონფიგურაციისთვის. ეს ფაილი აკონტროლებს შემდეგ ასპექტებს:

  • როგორი კლიენტებიშეუძლია სერვერზე ფაილებზე წვდომა
  • რომელი იერარქიები?სერვერზე დირექტორიების წვდომა თითოეულ კლიენტს შეუძლია
  • როგორი იქნება მომხმარებლის მორგებული სახელები იყოს ნაჩვენებიადგილობრივ მომხმარებლის სახელებზე

ექსპორტის ფაილის თითოეულ ხაზს აქვს შემდეგი ფორმატი:

export_point კლიენტი1 (ვარიანტები) [კლიენტი2(ოფციები) ...]

სად ექსპორტის_პუნქტი ექსპორტირებული დირექტორია იერარქიის აბსოლუტური გზა, კლიენტი1 - n ერთი ან მეტი კლიენტის სახელი ან IP მისამართი, გამოყოფილი სივრცეებით, რომლებიც დასაშვებია მონტაჟისთვის ექსპორტის_პუნქტი . Პარამეტრები აღწერეთ დამონტაჟების წესები კლიენტიადრე მითითებული პარამეტრები .

აი ტიპიური ექსპორტის ფაილის კონფიგურაციის მაგალითი:

ARCHIV ~ # cat /etc/exports /archiv1 ფაილები(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

ამ მაგალითში, კომპიუტერის ფაილებს და 10.0.0.1-ს აქვს წვდომა ექსპორტის წერტილზე /archiv1, ხოლო ჰოსტის ფაილებს აქვთ წაკითხვის/ჩაწერის წვდომა, ხოლო ჰოსტ 10.0.0.1-ს და ქვექსელ 10.0.230.1/24-ს აქვს მხოლოდ წაკითხვის წვდომა.

ჰოსტის აღწერა /etc/exports ნებადართულია შემდეგ ფორმატში:

  • ცალკეული კვანძების სახელები აღწერილია როგორც ფაილები ან ფაილები.DOMAIN.local.
  • დომენის ნიღაბი აღწერილია შემდეგ ფორმატში: *DOMAIN.local მოიცავს DOMAIN.local დომენის ყველა კვანძს.
  • ქვექსელები მითითებულია IP მისამართის/ნიღბის წყვილებად. მაგალითად: 10.0.0.0/255.255.255.0 მოიცავს ყველა კვანძს, რომელთა მისამართები იწყება 10.0.0-ით.
  • @myclients ქსელის ჯგუფის სახელის მითითება, რომელსაც აქვს წვდომა რესურსზე (NIS სერვერის გამოყენებისას)

დირექტორია იერარქიების ექსპორტის ზოგადი ვარიანტები

ექსპორტის ფაილი იყენებს შემდეგ ზოგად ვარიანტებს(ყველაზე სისტემაში ნაგულისხმევად გამოყენებული ვარიანტები ჩამოთვლილია ჯერ, ფრჩხილებში არანაგულისხმევი):

  • auth_nlm (no_auth_nlm)ან უსაფრთხო_საკეტები (დაუცველი_საკეტები)- მიუთითებს, რომ სერვერმა უნდა მოითხოვოს დაბლოკვის მოთხოვნების ავთენტიფიკაცია (NFS Lock Manager პროტოკოლის გამოყენებით).
  • nohide (დამალვა)- თუ სერვერი ახორციელებს ორი დირექტორიის იერარქიის ექსპორტს, ერთი ჩადგმული (დამონტაჟებული) მეორეში. კლიენტმა მკაფიოდ უნდა დაამონტაჟოს მეორე (ბავშვის) იერარქია, წინააღმდეგ შემთხვევაში ბავშვის იერარქიის დამაგრების წერტილი გამოჩნდება ცარიელი დირექტორია. nohide ოფცია იწვევს მეორე დირექტორიაში იერარქიას აშკარა დამაგრების გარეშე. ( შენიშვნა:მე ვერ ვიმუშავებდი ამ ვარიანტს...)
  • ro(rw)- იძლევა მხოლოდ წაკითხვის (ჩაწერის) მოთხოვნებს. (საბოლოოდ, შესაძლებელია თუ არა წაკითხვა/ჩაწერა, განისაზღვრება ფაილური სისტემის უფლებებიდან გამომდინარე, და სერვერს არ შეუძლია განასხვავოს ფაილის წაკითხვის მოთხოვნა შესრულების მოთხოვნისაგან, ასე რომ, ის საშუალებას აძლევს წაიკითხოს, თუ მომხმარებელმა წაიკითხა ან შეასრულეთ უფლებები.)
  • უსაფრთხო (დაუცველი)- მოითხოვს NFS მოთხოვნებს უსაფრთხო პორტებიდან (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • subtree_check (no_subtree_check)- თუ ფაილური სისტემის ქვედირექტორია ექსპორტირებულია, მაგრამ არა მთელი ფაილური სისტემა, სერვერი ამოწმებს, არის თუ არა მოთხოვნილი ფაილი ექსპორტირებულ ქვედირექტორიაში. დადასტურების გამორთვა ამცირებს უსაფრთხოებას, მაგრამ ზრდის მონაცემთა გადაცემის სიჩქარეს.
  • სინქრონიზაცია (ასინქრონული)- მიუთითებს, რომ სერვერმა უნდა უპასუხოს მოთხოვნებს მხოლოდ მას შემდეგ, რაც ამ მოთხოვნებით განხორციელებული ცვლილებები დისკზე ჩაიწერება. ასინქრონული ოფცია ეუბნება სერვერს, რომ არ დაელოდოს ინფორმაციის ჩაწერას დისკზე, რაც აუმჯობესებს შესრულებას, მაგრამ ამცირებს საიმედოობას, რადგან კავშირის შეწყვეტის ან აღჭურვილობის უკმარისობის შემთხვევაში, ინფორმაცია შეიძლება დაიკარგოს.
  • wdelay (no_wdelay)- ავალებს სერვერს გადადოს ჩაწერის მოთხოვნების შესრულება, თუ მოლოდინშია ჩაწერის შემდგომი მოთხოვნა, დაწეროს მონაცემები უფრო დიდ ბლოკებში. ეს აუმჯობესებს შესრულებას ჩაწერის ბრძანებების დიდი რიგების გაგზავნისას. no_wdelay განსაზღვრავს, რომ არ გადაიდოს ჩაწერის ბრძანების შესრულება, რაც შეიძლება სასარგებლო იყოს, თუ სერვერი მიიღებს დიდ რაოდენობას, რომლებიც არ უკავშირდება ბრძანებებს.

სიმბოლური ბმულების და მოწყობილობის ფაილების ექსპორტი.სიმბოლური ბმულების შემცველი დირექტორია იერარქიის ექსპორტის დროს, ბმულის ობიექტი ხელმისაწვდომი უნდა იყოს კლიენტის (დისტანციური) სისტემისთვის, ანუ ერთ-ერთი შემდეგი წესი უნდა იყოს ჭეშმარიტი:

მოწყობილობის ფაილი ეკუთვნის ინტერფეისს. მოწყობილობის ფაილის ექსპორტისას, ეს ინტერფეისი ექსპორტირებულია. თუ კლიენტის სისტემას არ აქვს იგივე ტიპის მოწყობილობა, ექსპორტირებული მოწყობილობა არ იმუშავებს. კლიენტის სისტემაში, NFS ობიექტების დამონტაჟებისას, შეგიძლიათ გამოიყენოთ nodev ოფცია ისე, რომ მოწყობილობის ფაილები დამონტაჟებული დირექტორიაში არ იყოს გამოყენებული.

ნაგულისხმევი პარამეტრები შეიძლება განსხვავდებოდეს სისტემებს შორის და შეგიძლიათ იხილოთ /var/lib/nfs/etab. ექსპორტირებული დირექტორია /etc/exports-ში აღწერისა და NFS სერვერის გადატვირთვის შემდეგ, ყველა გამოტოვებული ვარიანტი (წაკითხვა: ნაგულისხმევი პარამეტრები) აისახება /var/lib/nfs/etab ფაილში.

მომხმარებლის ID ჩვენების (შესაბამისი) პარამეტრები

შემდეგის უკეთ გასაგებად, გირჩევთ, წაიკითხოთ სტატია. Linux-ის თითოეულ მომხმარებელს აქვს საკუთარი UID და მთავარი GID, რომლებიც აღწერილია ფაილებში /etc/passwdდა /etc/ჯგუფი. NFS სერვერი ვარაუდობს, რომ დისტანციური ჰოსტის ოპერაციულმა სისტემამ მოახდინა მომხმარებლების ავთენტიფიკაცია და მიანიჭა მათ სწორი UID და GID. ფაილების ექსპორტი კლიენტის სისტემის მომხმარებლებს აძლევს იმავე წვდომას ამ ფაილებზე, თითქოს ისინი პირდაპირ სერვერზე იყოს შესული. შესაბამისად, როდესაც NFS კლიენტი აგზავნის მოთხოვნას სერვერზე, სერვერი იყენებს UID-ს და GID-ს ლოკალურ სისტემაში მომხმარებლის იდენტიფიცირებისთვის, რამაც შეიძლება გამოიწვიოს გარკვეული პრობლემები:

  • მომხმარებელს შეიძლება არ ჰქონდეს ერთი და იგივე იდენტიფიკატორები ორივე სისტემაში და, შესაბამისად, შეუძლია სხვა მომხმარებლის ფაილებზე წვდომა.
  • რადგან თუ root მომხმარებლის ID ყოველთვის არის 0, მაშინ ეს მომხმარებელი აისახება ადგილობრივ მომხმარებელზე მითითებული ვარიანტების მიხედვით.

შემდეგი პარამეტრები ადგენს წესებს დისტანციური მომხმარებლების ადგილობრივებში ჩვენების შესახებ:

  • root_squash (no_root_squash)- მითითებული ვარიანტით root_squash, მოთხოვნები root მომხმარებლისგან აისახება ანონიმურ uid/gid-ზე, ან anonuid/anongid პარამეტრში მითითებულ მომხმარებელზე.
  • no_all_squash (all_squash)- არ ცვლის დამაკავშირებელი მომხმარებლის UID/GID-ს. ვარიანტი ყველა_გოგრააყენებს ყველა მომხმარებლის (არა მხოლოდ root) ჩვენებას, როგორც ანონიმურს ან მითითებულს anonuid/anongid პარამეტრში.
  • ანონუიდი= UID და ანონგიდი= GID - აშკარად ადგენს UID/GID-ს ანონიმური მომხმარებლისთვის.
  • რუკა_სტატიკური= /etc/file_maps_users - განსაზღვრავს ფაილს, რომელშიც შეგიძლიათ დააყენოთ დისტანციური UID/GID რუკა ადგილობრივ UID/GID-ზე.

მომხმარებლის რუკების ფაილის გამოყენების მაგალითი:

ARCHIV ~ # cat /etc/file_maps_users # მომხმარებლის რუქა # დისტანციური ლოკალური კომენტარის uid 0-50 1002 # მომხმარებელთა რუკების დახატვა დისტანციური UID 0-50 ადგილობრივ UID 1002 gid 0-50 1002 # მომხმარებელთა რუკების შედგენა დისტანციური GID 0-50-ით ადგილობრივი GID 1002

NFS სერვერის მენეჯმენტი

NFS სერვერის მართვა ხდება შემდეგი კომუნალური საშუალებების გამოყენებით:

  • nfsstat
  • აჩვენე უსაფრთხო (არასაიმედო) დამაგრება

nfsstat: NFS და RPC სტატისტიკა

nfsstat პროგრამა საშუალებას გაძლევთ ნახოთ RPC და NFS სერვერების სტატისტიკა. ბრძანების პარამეტრები შეგიძლიათ იხილოთ man nfsstat-ში.

showmount: NFS სტატუსის ინფორმაციის ჩვენება

showmount უტილიტაკითხულობს rpc.mountd დემონს დისტანციურ ჰოსტზე დამონტაჟებული ფაილური სისტემების შესახებ. ნაგულისხმევად, ბრუნდება კლიენტების დახარისხებული სია. Გასაღებები:

  • --ყველა- ნაჩვენებია კლიენტებისა და დამაგრების წერტილების სია, სადაც მითითებულია, თუ სად დაამონტაჟა კლიენტმა დირექტორია. ეს ინფორმაცია შეიძლება არ იყოს სანდო.
  • -- დირექტორიები- ნაჩვენებია სამონტაჟო წერტილების სია
  • --ექსპორტი- ექსპორტირებული ფაილური სისტემების სია ნაჩვენებია nfsd-ის თვალსაზრისით

როდესაც showmount-ს აწარმოებთ არგუმენტების გარეშე, ინფორმაცია სისტემების შესახებ, რომლებსაც ნებადართულია მონტაჟი, დაიბეჭდება კონსოლში. ადგილობრივიკატალოგები. მაგალითად, ARCHIV ჰოსტი გვაწვდის ექსპორტირებული დირექტორიების ჩამონათვალს ჰოსტების IP მისამართებით, რომლებსაც უფლება აქვთ დაამონტაჟონ მითითებული დირექტორიები:

FILES ~ # showmount --exports archive ექსპორტის სია არქივისთვის: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

თუ არგუმენტში მიუთითებთ ჰოსტის სახელს/IP-ს, ამ ჰოსტის შესახებ ინფორმაცია გამოჩნდება:

ARCHIV ~ # showmount ფაილი clnt_create: RPC: პროგრამა არ არის რეგისტრირებული # ეს შეტყობინება გვეუბნება, რომ NFSd დემონი არ მუშაობს FILES ჰოსტზე

exportfs: ექსპორტირებული დირექტორიების მართვა

ეს ბრძანება ემსახურება ფაილში მითითებულ ექსპორტირებულ დირექტორიებს / და ა.შ. / ექსპორტი, უფრო ზუსტი იქნება დაწერა, რომ ის არ ემსახურება, მაგრამ სინქრონიზებულია ფაილთან /var/lib/nfs/xtabდა ხსნის არარსებულებს xtab-დან. exportfs შესრულებულია, როდესაც nfsd დემონი იწყება -r არგუმენტით. Exportfs უტილიტა 2.6 ბირთვის რეჟიმში ურთიერთობს rpc.mountd დემონთან ფაილების საშუალებით /var/lib/nfs/ დირექტორიაში და არ უკავშირდება უშუალოდ ბირთვს. პარამეტრების გარეშე, აჩვენებს ამჟამად ექსპორტირებული ფაილური სისტემების სიას.

exportfs პარამეტრები:

  • [client:directory-name] - დაამატეთ ან წაშალეთ მითითებული ფაილური სისტემა მითითებული კლიენტისთვის)
  • -v - მეტი ინფორმაციის ჩვენება
  • -r - ყველა დირექტორიის ხელახალი ექსპორტი (სინქრონიზაცია /etc/exports და /var/lib/nfs/xtab)
  • -u - ამოიღეთ ექსპორტირებული სიიდან
  • -a - დაამატეთ ან წაშალეთ ყველა ფაილური სისტემა
  • -o - მძიმით გამოყოფილი ოფციები (/etc/exports-ში გამოყენებული ოფციების მსგავსი; ანუ თქვენ შეგიძლიათ შეცვალოთ უკვე დამონტაჟებული ფაილური სისტემების ვარიანტები)
  • -i - არ გამოიყენოთ /etc/exports დამატებისას, მხოლოდ ბრძანების ხაზის მიმდინარე პარამეტრები
  • -f - გადატვირთეთ ექსპორტირებული სისტემების სია ბირთვში 2.6;

NFS კლიენტი

დისტანციურ ფაილურ სისტემაზე ფაილზე წვდომამდე, კლიენტმა (კლიენტის OS) უნდა დაამონტაჟე იგიდა მიიღეთ სერვერისგან მითითება მასზე. NFS მთაშეიძლება გაკეთდეს ერთ-ერთი მზარდი ავტომატური სამაგრით ან გამოყენებით (amd, autofs, automount, supermount, superpupermount). ინსტალაციის პროცესი კარგად არის ნაჩვენები ზემოთ მოცემულ ილუსტრაციაში.

ჩართულია NFS კლიენტებიარ არის საჭირო დემონების გაშვება, კლიენტის ფუნქციებიახორციელებს ბირთვის მოდულს kernel/fs/nfs/nfs.ko, რომელიც გამოიყენება დისტანციური ფაილური სისტემის დამონტაჟებისას. სერვერიდან ექსპორტირებული დირექტორიები შეიძლება დამონტაჟდეს კლიენტზე შემდეგი გზით:

  • ხელით mount ბრძანების გამოყენებით
  • ავტომატურად ჩატვირთვისას, ფაილური სისტემების დამონტაჟებისას, რომელიც აღწერილია /etc/fstab-ში
  • ავტომატურად autofs დემონის გამოყენებით

მე არ განვიხილავ მესამე მეთოდს autofs-ით ამ სტატიაში, მისი მოცულობითი ინფორმაციის გამო. ალბათ, იქნება ცალკე აღწერა მომავალ სტატიებში.

ქსელის ფაილური სისტემის დამონტაჟება mount ბრძანებით

mount ბრძანების გამოყენების მაგალითი წარმოდგენილია პოსტში. აქ მე გადავხედავ Mount ბრძანების მაგალითს NFS ფაილური სისტემის დასამონტაჟებლად:

FILES ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ..... .. archiv:/archiv-small on /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big on /archivs/archiv-big type nfs (ro,addr=10.0.0.6)

პირველი ბრძანება ამაგრებს ექსპორტირებულ დირექტორიას /არქივ-პატარასერვერზე არქივიადგილობრივ მთის წერტილამდე /არქივები/არქივი-პატარანაგულისხმევი პარამეტრებით (ანუ წაკითხვა და ჩაწერა). მიუხედავად იმისა დამონტაჟების ბრძანებაუახლეს დისტრიბუციებში მას შეუძლია გაიგოს, თუ რა ტიპის ფაილური სისტემა გამოიყენება ტიპის დაზუსტების გარეშეც, მაგრამ მაინც მიუთითოს პარამეტრი -t nfsსასურველია. მეორე ბრძანება ამონტაჟებს ექსპორტირებულ დირექტორიას /არქივი-დიდისერვერზე არქივიადგილობრივ დირექტორიაში /არქივები/არქივი-დიდიმხოლოდ წაკითხვის ოფციით ( რო). დამონტაჟების ბრძანებაპარამეტრების გარეშე ნათლად გვიჩვენებს მონტაჟის შედეგს. გარდა მხოლოდ წაკითხვის ვარიანტისა (ro), შესაძლებელია სხვას მითითება ძირითადი პარამეტრები NFS-ის დამონტაჟებისას:

  • ნოზუიდი- ეს პარამეტრი კრძალავს პროგრამების შესრულებას დამონტაჟებული დირექტორიადან.
  • ნოდევი(არ არის მოწყობილობა - არა მოწყობილობა) - ეს პარამეტრი კრძალავს სიმბოლოების გამოყენებას და ბლოკავს სპეციალურ ფაილებს მოწყობილობებად.
  • საკეტი (ნოლოკი)- საშუალებას აძლევს NFS ჩაკეტვას (ნაგულისხმევი). nolock გამორთავს NFS ჩაკეტვას (არ იწყებს ჩაკეტილ დემონს) და სასარგებლოა ძველ სერვერებთან მუშაობისას, რომლებსაც არ აქვთ NFS დაბლოკვის მხარდაჭერა.
  • mounthost=სახელი- ჰოსტის სახელი, რომელზედაც მუშაობს NFS mount daemon - mountd.
  • mountport=n -პორტი, რომელსაც იყენებს დამონტაჟებული დემონი.
  • port=n- პორტი, რომელიც გამოიყენება NFS სერვერთან დასაკავშირებლად (ნაგულისხმევი არის 2049, თუ rpc.nfsd დემონი არ არის რეგისტრირებული RPC სერვერზე). თუ n=0 (ნაგულისხმევი), მაშინ NFS ითხოვს პორტის რუკას სერვერზე პორტის დასადგენად.
  • rsize=n(კითხვის ბლოკის ზომა - წაკითხვის ბლოკის ზომა) - NFS სერვერიდან წაკითხული ბაიტების რაოდენობა. სტანდარტული - 4096.
  • wsize=n(ჩაწერის ბლოკის ზომა - ჩაწერის ბლოკის ზომა) - NFS სერვერზე დაწერილი ბაიტების რაოდენობა. სტანდარტული - 4096.
  • tcpან udp- NFS-ის დასამონტაჟებლად გამოიყენეთ TCP ან UDP პროტოკოლი, შესაბამისად.
  • ბგ- თუ დაკარგავთ წვდომას სერვერზე, სცადეთ ისევ ფონზე, რათა არ დაბლოკოთ სისტემის ჩატვირთვის პროცესი.
  • ვგ- თუ დაკარგავთ წვდომას სერვერზე, სცადეთ ხელახლა პრიორიტეტის რეჟიმში. ამ პარამეტრს შეუძლია დაბლოკოს სისტემის ჩატვირთვის პროცესი მონტაჟის განმეორებით. ამ მიზეზით, fg პარამეტრი ძირითადად გამოიყენება გამართვისთვის.

ოფციები, რომლებიც გავლენას ახდენენ ატრიბუტების ქეშირებაზე NFS დამაგრებებზე

ფაილის ატრიბუტები, ინახება (ინოდებში), როგორიცაა მოდიფიკაციის დრო, ზომა, მყარი ბმულები, მფლობელი, როგორც წესი, იშვიათად იცვლება ჩვეულებრივი ფაილებისთვის და კიდევ უფრო იშვიათად დირექტორიებისთვის. ბევრი პროგრამა, როგორიცაა ls, წვდება ფაილებს მხოლოდ წასაკითხად და არ ცვლის ფაილის ატრიბუტებს ან შინაარსს, მაგრამ ხარჯავს სისტემის რესურსებს ქსელის ძვირადღირებულ ოპერაციებზე. რესურსების დახარჯვის თავიდან ასაცილებლად, შეგიძლიათ ამ ატრიბუტების ქეშირება. ბირთვი იყენებს ფაილის მოდიფიკაციის დროს, რათა დადგინდეს, არის თუ არა ქეში მოძველებული ქეშის მოდიფიკაციის დროისა და თავად ფაილის მოდიფიკაციის დროის შედარებით. ატრიბუტის ქეში პერიოდულად განახლდება მითითებული პარამეტრების შესაბამისად:

  • ac (noac) (ატრიბუტის ქეში- ატრიბუტის ქეშირება) - იძლევა ატრიბუტების ქეშირების საშუალებას (ნაგულისხმევი). მიუხედავად იმისა, რომ noac ოფცია ანელებს სერვერს, ის თავიდან აიცილებს ატრიბუტების სიცარიელეს, როდესაც მრავალი კლიენტი აქტიურად წერს ინფორმაციას საერთო იერარქიაში.
  • acdirmax=n (ატრიბუტის ქეში დირექტორია ფაილის მაქსიმუმი- ატრიბუტის მაქსიმალური ქეშირება დირექტორია ფაილისთვის) - წამების მაქსიმალური რაოდენობა, რომელსაც NFS ელოდება დირექტორიას ატრიბუტების განახლებამდე (ნაგულისხმევი 60 წმ.)
  • acdirmin=n (ატრიბუტი ქეში დირექტორია ფაილის მინიმალური- ატრიბუტის მინიმალური ქეშირება დირექტორია ფაილისთვის) - წამების მინიმალური რაოდენობა, რომელსაც NFS ელოდება დირექტორიაში ატრიბუტების განახლებამდე (ნაგულისხმევი 30 წმ.)
  • acregmax=n (ატრიბუტი ქეში რეგულარული ფაილის მაქსიმუმი- ატრიბუტის ქეშირების მაქსიმუმი ჩვეულებრივი ფაილისთვის) - წამების მაქსიმალური რაოდენობა, რომელსაც NFS ელოდება ჩვეულებრივი ფაილის ატრიბუტების განახლებამდე (ნაგულისხმევი 60 წმ.)
  • acregmin=n (ატრიბუტი ქეში რეგულარული ფაილის მინიმალური- მინიმალური ატრიბუტის ქეშირება ჩვეულებრივი ფაილისთვის) - წამების მინიმალური რაოდენობა, რომელსაც NFS ელოდება ჩვეულებრივი ფაილის ატრიბუტების განახლებამდე (ნაგულისხმევი 3 წამი)
  • აქტიმეო=ნ (ატრიბუტი ქეშის დროის ამოწურვა- ატრიბუტის ქეშირების ვადა) - ცვლის მნიშვნელობებს ყველა ზემოთ ჩამოთვლილი ვარიანტისთვის. თუ actimeo არ არის მითითებული, მაშინ ზემოაღნიშნული მნიშვნელობები იღებენ ნაგულისხმევ მნიშვნელობებს.

NFS შეცდომების დამუშავების პარამეტრები

შემდეგი ოფციები აკონტროლებენ რას აკეთებს NFS, როდესაც არ არის პასუხი სერვერისგან ან როდესაც ხდება I/O შეცდომები:

  • fg (bg) (წინა პლანზე- წინა პლანზე, ფონი- ფონი) - წარუმატებელი NFS-ის წინა პლანზე/ფონზე დაყენების მცდელობები.
  • მძიმე (რბილი)- აჩვენებს შეტყობინებას "სერვერი არ პასუხობს" კონსოლს, როდესაც დრო ამოიწურება და აგრძელებს მონტაჟის მცდელობას. მოცემული ვარიანტით რბილი- დროის ამოწურვის დროს აცნობებს პროგრამას, რომელმაც ოპერაცია გამოიძახა I/O შეცდომის შესახებ. (რეკომენდებულია არ გამოიყენოთ რბილი ვარიანტი)
  • nointr (intr) (შეფერხების გარეშე- არ შეწყვიტო) - არ აძლევს სიგნალებს უფლებას შეაფერხოს ფაილების ოპერაციები მყარად დამონტაჟებულ დირექტორიაში იერარქიაში, როდესაც დიდი დროის ამოწურვაა. ინტრ- საშუალებას აძლევს შეფერხებას.
  • რეტრანს=ნ (ხელახალი გადაცემის ღირებულება- ხელახალი გადაცემის მნიშვნელობა) - n მცირე დროის ამოწურვის შემდეგ, NFS წარმოქმნის დიდ ვადას (ნაგულისხმევი 3). დიდი დროის ამოწურვა აჩერებს ოპერაციებს ან ბეჭდავს შეტყობინებას "სერვერი არ პასუხობს" კონსოლზე, იმისდა მიხედვით, არის თუ არა მითითებული მყარი/რბილი ვარიანტი.
  • ხელახლა ცდა=n (ხელახლა სცადეთ მნიშვნელობა- ხელახლა ცდის მნიშვნელობა) - წუთების რაოდენობა, რომელსაც NFS სერვისი გაიმეორებს მონტაჟის ოპერაციებს დათმობამდე (ნაგულისხმევი 10000).
  • timeo=n (ვადის ამოწურვის მნიშვნელობა- დროის ამოწურვის მნიშვნელობა) - წამის მეათედი რაოდენობა, რომელსაც NFS სერვისი ელოდება ხელახლა გადაცემამდე RPC-ის ან მცირე დროის ამოწურვის შემთხვევაში (ნაგულისხმევი 7). ეს მნიშვნელობა იზრდება ყოველი დროის ამოწურვისას მაქსიმუმ 60 წამამდე ან დიდი დროის ამოწურვამდე. თუ ქსელი დაკავებულია, სერვერი ნელია, ან მოთხოვნა გადის რამდენიმე მარშრუტიზატორს ან კარიბჭეს, ამ მნიშვნელობის გაზრდამ შეიძლება გააუმჯობესოს შესრულება.

ავტომატური NFS დამაგრება ჩატვირთვისას (ფაილის სისტემების აღწერა /etc/fstab-ში)

თქვენ შეგიძლიათ აირჩიოთ ოპტიმალური დრო გადაცემული პაკეტის კონკრეტული მნიშვნელობისთვის (rsize/wsize მნიშვნელობები) ping ბრძანების გამოყენებით:

FILES ~ # ping -s 32768 არქივი PING archiv.DOMAIN.local (10.0.0.6) 32768(32796) ბაიტი მონაცემთა. 32776 ბაიტი archiv.domain.local-დან (10.0.0.6): icmp_req=1 ttl=64 დრო=0.931 ms 32776 ბაიტი archiv.domain.local-დან (10.0.0.6): icmp_req=2 ttl=67 ms34 დრო=0 archiv.domain.local-დან (10.0.0.6): icmp_req=3 ttl=64 დრო=1.03 ms 32776 ბაიტი archiv.domain.local-იდან (10.0.0.6): icmp_req=4 ttl=64 დრო=1.00 ms 327777777 ms ტეს-ით .domain.local (10.0.0.6): icmp_req=5 ttl=64 time=1.08 ms ^C --- archive.DOMAIN.local ping სტატისტიკა --- 5 პაკეტი გადაცემული, 5 მიღებული, 0% პაკეტის დაკარგვა, დრო 4006ms rtt წთ/საშ/მაქს/მდევ = 0.931/1.002/1.083/0.061 ms

როგორც ხედავთ, 32768 (32Kb) ზომის პაკეტის გაგზავნისას, მისი მოგზაურობის დრო კლიენტიდან სერვერამდე და უკან მოძრაობს დაახლოებით 1 მილიწამში. თუ ეს დრო აღემატება 200 ms-ს, მაშინ უნდა იფიქროთ დროის მნიშვნელობის გაზრდაზე ისე, რომ იგი გადააჭარბოს გაცვლის მნიშვნელობას სამიდან ოთხჯერ. შესაბამისად, მიზანშეწონილია ამ ტესტის გაკეთება ქსელის მძიმე დატვირთვის დროს.

NFS-ის გაშვება და Firewall-ის დაყენება

ჩანაწერი გადაწერილია ბლოგიდან http://bog.pp.ru/work/NFS.html, რისთვისაც დიდი მადლობა!!!

გაუშვით NFS სერვერი, დამონტაჟება, დაბლოკვა, კვოტა და სტატუსი "სწორი" პორტებით (firewall-ისთვის)

  • მიზანშეწონილია უპირველეს ყოვლისა კლიენტებზე მოხსნათ ყველა რესურსი
  • შეაჩერე და გამორთე rpcidmapd-ის გაშვება, თუ არ გეგმავთ NFSv4-ის გამოყენებას: chkconfig --დონე 345 rpcidmapd გამორთული სერვისი rpcidmapd გაჩერება
  • საჭიროების შემთხვევაში, დაუშვით portmap, nfs და nfslock სერვისების დაწყება: chkconfig --დონეები 345 portmap/rpcbind on chkconfig --დონეები 345 nfs chkconfig --დონეები 345 nfslock ჩართული
  • საჭიროების შემთხვევაში, შეაჩერე nfslock და nfs სერვისები, გაუშვით portmap/rpcbind, ჩამოტვირთეთ მოდულების სერვისი nfslock გაჩერების სერვისი nfs გაჩერების სერვისის პორტმაპი დაწყება # სერვისი rpcbind დაწყება umount /proc/fs/nfsd სერვისი rpcidmapd შეაჩერე rmmod nfsd სერვისი autofhere მოგვიანებით შეჩერება # უნდა იყოს გაშვებული rmmod nfs rmmod nfs_acl rmmod lockd
  • გახსენით პორტები შიგნით
    • RPC-სთვის: UDP/111, TCP/111
    • NFS-სთვის: UDP/2049, TCP/2049
    • rpc.statd-ისთვის: UDP/4000, TCP/4000
    • დაბლოკვისთვის: UDP/4001, TCP/4001
    • დასამონტაჟებლად: UDP/4002, TCP/4002
    • rpc.rquota-სთვის: UDP/4003, TCP/4003
  • rpc.nfsd სერვერისთვის დაამატეთ ხაზი RPCNFSDARGS="--port 2049" /etc/sysconfig/nfs
  • სამონტაჟო სერვერისთვის დაამატეთ ხაზი MOUNTD_PORT=4002 /etc/sysconfig/nfs
  • ახალი ვერსიებისთვის rpc.rquota-ს კონფიგურაციისთვის, თქვენ უნდა დაამატოთ ხაზი RQUOTAD_PORT=4003 /etc/sysconfig/nfs
  • rpc.rquota-ს კონფიგურაციისთვის აუცილებელია ძველი ვერსიებისთვის (თუმცა, თქვენ უნდა გქონდეთ კვოტის პაკეტი 3.08 ან უფრო ახალი) დაამატეთ /etc/services rquotad 4003/tcp rquotad 4003/udp
  • შეამოწმებს /etc/exports-ის ადეკვატურობას
  • გაუშვით სერვისები rpc.nfsd, mountd და rpc.rquota (rpcsvcgssd და rpc.idmapd ერთდროულად გაშვებულია, თუ გახსოვთ მათი წაშლა) სერვისი nfsd start ან ახალ ვერსიებში სერვისი nfs start
  • ახალი სისტემების დაბლოკვის სერვერისთვის დაამატეთ ხაზები LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 /etc/sysconfig/nfs
  • ძველი სისტემების დაბლოკვის სერვერისთვის დაამატეთ პირდაპირ /etc/modprobe[.conf]: პარამეტრები დაბლოკილია nlm_udpport=4001 nlm_tcpport=4001
  • დააკავშირეთ rpc.statd სტატუსის სერვერი 4000 პორტთან (ძველი სისტემებისთვის გაუშვით rpc.statd -p 4000 გადამრთველით /etc/init.d/nfslock) STATD_PORT=4000
  • დაიწყეთ lockd და rpc services.statd სერვისი nfslock start
  • დარწმუნდით, რომ ყველა პორტი ჩვეულებრივ შეკრულია "lsof -i -n -P" და "netstat -a -n" გამოყენებით (ზოგიერთ პორტს იყენებენ ბირთვის მოდულები, რომლებსაც lsof ვერ ხედავს)
  • თუ სერვერს "ხელახლა აშენებამდე" იყენებდნენ კლიენტები და მათი დემონტაჟი ვერ მოხერხდა, მაშინ მოგიწევთ კლიენტებზე ავტომატური სამონტაჟო სერვისების გადატვირთვა (am-utils, autofs)

NFS სერვერის და კლიენტის კონფიგურაციის მაგალითი

სერვერის კონფიგურაცია

თუ გსურთ თქვენი NFS საზიარო დირექტორია საჯარო და დასაწერად გახადოთ, შეგიძლიათ გამოიყენოთ ეს ვარიანტი ყველა_გოგრავარიანტებთან ერთად ანონუიდურიდა ანონგიდი. მაგალითად, მომხმარებლისთვის „არავინ“ ნებართვების დასაყენებლად „არავინ“ ჯგუფში, შეგიძლიათ გააკეთოთ შემდეგი:

ARCHIV ~ # cat /etc/exports # წაკითხვისა და ჩაწერის წვდომა კლიენტისთვის 192.168.0.100, rw წვდომით მომხმარებლის 99 gid 99 /ფაილი 192.168.0.100 (rw, sync,all_squash,anonuid=99,anongid=9) # კლიენტისთვის წაკითხვისა და ჩაწერის წვდომა 192.168.0.100-ზე, rw წვდომით მომხმარებლის 99 gid 99-ით /ფაილები 192.168.0.100 (rw, sync,all_squash,anonuid=99,anongid=99))

ეს ასევე ნიშნავს, რომ თუ გსურთ დაუშვათ წვდომა მითითებულ დირექტორიაში, nobody.nobody არ უნდა იყოს საზიარო დირექტორიას მფლობელი:

კაცის მთა
კაცი ექსპორტს
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - NFS შესრულება IBM-ისგან.

საუკეთესო სურვილებით, მაკსიმ!

Linux OS-ზე დაფუძნებული სერვერების ადმინისტრირებისას ისეთ გარემოში, სადაც Windows გამოიყენება როგორც ძირითადი კლიენტის OS, დროდადრო თქვენ უნდა გაუმკლავდეთ რაიმეს კოპირებას კლიენტის Windows სისტემიდან Linux სისტემაში, ან პირიქით, Linux სისტემა Windows-ზე. ყველაზე ხშირად, SSH/SCP პროტოკოლების შესაძლებლობები გამოიყენება ამ ინსტრუმენტების გამოყენებით, როგორიცაა pscp.exe პროგრამა. მაგრამ როდესაც თქვენ უნდა გაუმკლავდეთ Linux ფაილურ სერვერებს, რომლებიც საშუალებას გაძლევთ გამოიყენოთ პროტოკოლის შესაძლებლობები NFSჩვენ შეგვიძლია დავსვათ კითხვები, როგორიცაა „შეიძლება თუ არა Windows კლიენტის OS იმოქმედოს როგორც NFS კლიენტი?“, „არსებობს თუ არა რაიმე სახის ჩაშენებული NFS კლიენტის განხორციელება Windows კლიენტის OS-ში?“ ეს იყო კითხვები, რაც მე მქონდა იმ პერიოდის განმავლობაში, რომელიც დაემთხვა იმ პერიოდს, როდესაც ჩვენ გადავიდოდით Windows 8.1-დან Windows 10-ის პირველ გამოშვებაზე. ინფორმაცია, რომელიც იმ დროს მე შევძელი ამ საკითხთან დაკავშირებით, იყო მხოლოდ "უფროსი Windows კლიენტის ოპერაციული სისტემების გამოცემები, როგორიცაა Windows 7 Ultimate/საწარმო, ვინდოუს 8/8.1 საწარმოდა Windows 10 Enterprise. თუმცა, ჩვენს შემთხვევაში OS იყო გამოყენებული Windows 10რედაქცია პროფესიონალი, ამიტომ მომიწია ამ ფიქრების განდევნა.

ახლახან, TechNet ფორუმებზე დისკუსიების კითხვისას, წავაწყდი ინფორმაციას, რომ Windows 10 Professional გამოცემის რაღაც მომენტში შესაძლებელი გახდა NFS კლიენტის ფუნქციების გამოყენება. ზოგიერთი წყაროს ინფორმაციით, ასეთი შესაძლებლობა გაჩნდა Windows 10ვერსიები 1607 (10.0.14393 / Anniversary Update).

გადავწყვიტე გადავამოწმო ეს ინფორმაცია იმის შესახებ, რაც ხელთ მაქვს Windows 10 1803(10.0.17134 / 2018 წლის აპრილის განახლება) რედაქცია პროფესიონალიმე აღმოვაჩინე, რომ ჩვენ ახლა რეალურად გვაქვს ამ ფუნქციის გამოყენების შესაძლებლობა.

NFS კლიენტის გასააქტიურებლად, ჩვენ შეგვიძლია გამოვიყენოთ პროგრამები და ფუნქციების მართვის snap-in appwiz.cpl. აქ "Windows კომპონენტების" სიაში შეგიძლიათ იპოვოთ ჩასართავად ხელმისაწვდომი " სერვისები NFS-სთვის".

ინსტალაციის დასრულების შემდეგ, კომპონენტი არის საკონტროლო პანელში " ადმინისტრაცია"გაჩნდება მომენტი" სერვისები NFS-სთვის" (nfsmgmt.msc), რომელშიც ჩვენ შეგვიძლია ვმართოთ NFS კლიენტის ზოგიერთი პარამეტრი.

ჩვენ ვვარაუდობთ, რომ NFS სერვერის მხარეს კლიენტის სისტემიდან წვდომის ნებართვები უკვე კონფიგურირებულია, მაგალითად, კლიენტის IP მისამართზე წვდომა პირდაპირ არის დაშვებული. CentOS Linux-ის მხარეს NFS სერვერის ინსტალაციისა და კონფიგურაციის უმარტივესი მაგალითი შეგიძლიათ იხილოთ ვიკის სტატიაში „NFS სერვერისა და კლიენტის ინსტალაცია და კონფიგურაცია CentOS Linux 7.2-ში“.

NFS სერვერის მხარეს წვდომის უფლებების დაყენების შემდეგ, გადაერთეთ Windows 10-ზე და დააკავშირეთ ქსელის დირექტორია " მთაზე". ქსელის დირექტორიასთან ანონიმური კავშირის უმარტივესი მაგალითი ასე გამოიყურება:

მთაზე-ო ანონ \\KOM-FS01\mnt\vdo-vd1\ovirt-iso-დომენი I:
  • "-o anon" - დაკავშირება ანონიმური მომხმარებლის უფლებებთან;
  • "KOM-FS01" - NFS სერვერის სახელი;
  • "mnt\vdo-vd1\ovirt-iso-domain" - ადგილობრივი გზა NFS სერვერის დირექტორიაში;
  • "I" არის Windows დისკის ასო

სხვა ხელმისაწვდომი პარამეტრები და სასარგებლო კლავიშების ნახვა შესაძლებელია ბრძანებით " დამონტაჟება/?მაგალითად, დაკავშირებისას ჩვენ შეგვიძლია ცალსახად მიუთითოთ მომხმარებლის სახელი და პაროლი NFS სერვერზე.

დაკავშირებულ NFS დირექტორიაში დირექტორიებისა და ფაილების თვისებების გახსნისას, ჩვენ ვნახავთ სპეციალურ ჩანართს " NFS ატრიბუტებიშესაბამისი ატრიბუტებით, მათ შორის ინფორმაცია დირექტორიაში/ფაილზე არსებული ნებართვების შესახებ, რომელთა მართვაც, თუ საკმარისი უფლებები გვაქვს, შეგვიძლია.

ბრძანების ხელახლა გაშვებისას მთაზეპარამეტრების მითითების გარეშე, ჩვენ მივიღებთ ინფორმაციას მიმდინარე NFS კლიენტის კავშირებისა და ამ კავშირების თვისებების შესახებ:

აქ ჩვენ ვხედავთ რა UIDდა GUID, კავშირი დასრულებულია. ანონიმური კავშირებისთვის ეს ნაგულისხმევია -2 /-2 . თუ რაიმე მიზეზით დაგვჭირდება ამ იდენტიფიკატორების შეცვლა კლიენტის ყველა ანონიმური კავშირისთვის, მაშინ ჩვენ შეგვიძლია დავამატოთ რეესტრის რამდენიმე ნაგულისხმევი პარამეტრი, როგორიცაა DWORD(32 ბიტიანი):

  • AnonymousUid
  • AnonymousGid

რეესტრის გასაღებზე:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

შექმნილი პარამეტრების მნიშვნელობებში შეგიძლიათ ჩაწეროთ საჭირო UID და GUID, რომლებიც გამოყენებული იქნება ყველა ანონიმური კავშირისთვის. ქვემოთ მოყვანილი ეკრანის სურათი იყენებს მაგალითს მნიშვნელობებით 1000 :1000 (ათწილადი).

თუ გვინდა ყველა ანონიმური კავშირის გამოყენება ფესვი- ახალი იდენტიფიკატორები, შემდეგ რეესტრის შესაბამის პარამეტრებში უნდა მიუთითოთ AnonymousUid = 0 და AnonymousGid = 0 . root იდენტიფიკატორების დაზუსტება შეიძლება სასარგებლო იყოს, თუ, მაგალითად, გვჭირდება არა მხოლოდ კითხვა, არამედ ჩაწერა დაკავშირებულ NFS დირექტორიაში, ხოლო დისტანციური NFS სერვერი საშუალებას აძლევს ჩაწეროს მხოლოდ root მომხმარებლისთვის და/ან root ჯგუფის წევრებს.

ცვლილებების ძალაში შესვლისთვის, თქვენ უნდა შეაჩეროთ და გადატვირთოთ NFS კლიენტის სერვისი NFS snap-in-ისთვის ადრე აღნიშნული სერვისებიდან (nfsmgmt.msc).

ან, თუ კომპიუტერის გადატვირთვა არ არის პრობლემა, მაშინ შეგიძლიათ გადატვირთოთ კლიენტის კომპიუტერი, რათა ცვლილებები ძალაში შევიდეს.

ჩემი მცდელობა გადატვირთოს სისტემის სერვისი" კლიენტი NFS-ისთვის" (NfsClnt) სტანდარტული მექანიზმების მეშვეობით, როგორიცაა Service Control Snap-in სერვისები.mscან სასარგებლო " ბადე", აჩვენა, რომ რატომღაც ეს იწვევს სერვისის გაშვების შეუძლებლობას მისი შეწყვეტის შემდეგ. ამიტომ, NFS კლიენტის გადატვირთვისთვის უმჯობესია გამოიყენოთ მშობლიური snap-in. თუმცა, ისევ შენიშნა, რომ განმეორებითი გაჩერება /სერვისის დაწყება snap-in-ში " Services for NFS" ასევე შეიძლება გამოიწვიოს NFS კლიენტის არასწორად მუშაობა. შედეგად, მაგალითად, კომუნალური " მთაზე"შეიძლება შეწყვიტოს NFS დირექტორიების დამონტაჟება, რაც იწვევს ქსელის შეცდომას:

ასეთ შემთხვევებში ერთადერთი რაც ეხმარება არის კლიენტის კომპიუტერის გადატვირთვა, რის შემდეგაც ყველაფერი ისევ იწყებს მუშაობას.

მას შემდეგ, რაც რეესტრში ჩვენთვის საჭირო ცვლილებები განხორციელდა და NFS კლიენტის სერვისი წარმატებით გადაიტვირთა, ჩვენ კვლავ შევეცდებით NFS კატალოგის დაკავშირებას და შევხედოთ ბრძანებას " მთაზე"კავშირის ინფორმაცია.

როგორც ხედავთ, ახლა უსაფრთხოების იდენტიფიკატორები არის ზუსტად ის, რაც ადრე აღვნიშნეთ რეესტრში.

NFS პროტოკოლით დაკავშირებული ქსელის რესურსების გამორთვა ისეთივე მარტივია, როგორც დაკავშირება, მხოლოდ სხვა პროგრამის გამოყენებით - " ოდენობა"

ზოგადად, კარგია, რომ ახლა Windows 10 Professional-ის მომხმარებლებს აქვთ სტანდარტული შესაძლებლობა, იმუშაონ ქსელის ფაილურ რესურსებთან NFS პროტოკოლის გამოყენებით. ჩვენ ამას გამოვიყენებთ ჩვენს საქმიანობაში.

ყველამ იცის, რომ UNIX სისტემებზე ფაილური სისტემა ლოგიკურად არის ფიზიკური ფაილური სისტემების ერთობლიობა, რომლებიც დაკავშირებულია ერთ წერტილთან. ასეთი ორგანიზაციის ერთ-ერთი მთავარი უპირატესობა, ჩემი აზრით, არის არსებული ფაილური სისტემის სტრუქტურის დინამიურად მოდიფიცირების შესაძლებლობა. ასევე, დეველოპერების ძალისხმევის წყალობით, დღეს ჩვენ გვაქვს შესაძლებლობა დავაკავშიროთ თითქმის ნებისმიერი ტიპის ფაილური სისტემა და ნებისმიერი მოსახერხებელი გზით. "მეთოდით", პირველ რიგში მინდა ხაზი გავუსვა OS-ის ბირთვის უნარს, იმუშაოს ფაილურ სისტემებთან ქსელური კავშირების საშუალებით.

ბევრი ქსელის პროტოკოლი გვაძლევს დისტანციურ ფაილებთან მუშაობის შესაძლებლობას, იქნება ეს FTP, SMB, Telnet თუ SSH. ბირთვის უნარის წყალობით, საბოლოოდ არ იყოს დამოკიდებული დაკავშირებული ფაილური სისტემის ტიპზე, ჩვენ გვაქვს შესაძლებლობა დავაკავშიროთ ყველაფერი და რაც გვინდა, მაუნტის პროგრამის გამოყენებით.

დღეს მინდა ვისაუბრო NFS - ქსელის ფაილურ სისტემაზე. ეს ტექნოლოგია საშუალებას გაძლევთ დააკავშიროთ ცალკეული ფაილური სისტემის წერტილები დისტანციურ კომპიუტერზე ადგილობრივი კომპიუტერის ფაილურ სისტემასთან. თავად NFS პროტოკოლი საშუალებას გაძლევთ შეასრულოთ ფაილური ოპერაციები საკმაოდ სწრაფად, უსაფრთხოდ და საიმედოდ. კიდევ რა გვჭირდება? :-)

რა არის საჭირო ამისთვის იმუშაოს

იმისათვის, რომ დიდხანს არ ვიკამათოთ NFS ვერსიების თემაზე და მათი მხარდაჭერა სხვადასხვა ბირთვებში, ჩვენ დაუყოვნებლივ გამოვიყენებთ ვარაუდს, რომ თქვენი ბირთვის ვერსია არ არის 2.2.18-ზე დაბალი. ოფიციალურ დოკუმენტაციაში, დეველოპერები გვპირდებიან სრულ მხარდაჭერას NFS ვერსიის 3 ფუნქციონალისთვის ამ ბირთვში და შემდგომ ვერსიებში.

ინსტალაცია

NFS სერვერის გასაშვებად ჩემს Ubuntu 7.10-ში - Gutsy Gibbon, დამჭირდა nfs-common და nfs-kernel-server პაკეტების დაყენება. თუ თქვენ გჭირდებათ მხოლოდ NFS კლიენტი, მაშინ nfs-kernel-server-ის დაყენება არ არის საჭირო.

სერვერის დაყენება

მას შემდეგ, რაც ყველა პაკეტი წარმატებით დაინსტალირდება, თქვენ უნდა შეამოწმოთ მუშაობს თუ არა NFS დემონი:

/etc/init.d/nfs-kernel-server სტატუსი

თუ დემონი არ მუშაობს, თქვენ უნდა დაიწყოთ იგი ბრძანებით

/etc/init.d/nfs-kernel-server start

მას შემდეგ რაც ყველაფერი წარმატებით დაიწყო, შეგიძლიათ დაიწყოთ ფაილური სისტემის ექსპორტი. პროცესი თავისთავად ძალიან მარტივია და მინიმალური დრო სჭირდება.

ძირითადი NFS სერვერის კონფიგურაციის ფაილი მდებარეობს /etc/exports-ში და აქვს შემდეგი ფორმატი:

დირექტორია machine1 (ვარიანტი11, ვარიანტი12) machine2 (ვარიანტი21, ვარიანტი 22)

დირექტორია— აბსოლუტური გზა FS სერვერის დირექტორიაში, რომელზეც წვდომა გჭირდებათ

მანქანაX— კლიენტის კომპიუტერის DNS სახელი ან IP მისამართი, საიდანაც დაშვებულია წვდომა

ვარიანტიXX— FS ექსპორტის პარამეტრები, მათგან ყველაზე ხშირად გამოყენებული:

  • რო- ფაილზე წვდომა მხოლოდ წაკითხვადია
  • rw— ნებადართულია წაკითხვის/ჩაწერის წვდომა
  • no_root_squash— ნაგულისხმევად, თუ თქვენ დაუკავშირდებით NFS რესურსს, როგორც root, სერვერი, უსაფრთხოების მიზნით, თავის მხრივ მიიღებს წვდომას ფაილებზე, როგორც არავის მომხმარებელი. თუმცა, თუ ჩართავთ ამ პარამეტრს, სერვერის მხარეს ფაილები იქნება წვდომა როგორც root. ფრთხილად იყავით ამ პარამეტრით.
  • no_subtree_check— ნაგულისხმევად, თუ თქვენ ექსპორტს გააკეთებთ არა მთელი დანაყოფი სერვერზე, არამედ მხოლოდ ფაილური სისტემის ნაწილი, დემონი შეამოწმებს, მოთხოვნილი ფაილი ფიზიკურად მდებარეობს იმავე დანაყოფზე თუ არა. თუ მთელი დანაყოფის ექსპორტს ახორციელებთ ან ექსპორტირებული ფაილური სისტემის დამაგრების წერტილი არ იმოქმედებს ფაილებზე სხვა ფიზიკური ტომებიდან, მაშინ შეგიძლიათ ჩართოთ ეს პარამეტრი. ეს მოგცემთ გაზარდოთ სერვერის სიჩქარე.
  • სინქრონიზაცია— ჩართეთ ეს პარამეტრი, თუ არსებობს კავშირის უეცარი დაკარგვის ან სერვერის დენის გათიშვის შესაძლებლობა. თუ ეს პარამეტრი არ არის ჩართული, არსებობს მონაცემთა დაკარგვის ძალიან მაღალი რისკი, თუ NFS სერვერი მოულოდნელად გაჩერდება.

ასე რომ, ვთქვათ, ჩვენ უნდა მივცეთ წვდომა asep-desktop კომპიუტერზე ashep-ლეპტოპის კომპიუტერის /var/backups დირექტორიაში. სარეზერვო ფაილების კოპირებისთვის საჭიროა დირექტორიაში წვდომა asep-desktop-დან. ჩემი ფაილი ასე აღმოჩნდა:

/var/ასეპ-დესკტოპის სარეზერვო ასლები (rw,no_subtree_check,სინქრონიზაცია)

ხაზის დამატების შემდეგ /etc/exports, თქვენ უნდა გადატვირთოთ NFS სერვერი, რომ ცვლილებები ძალაში შევიდეს.

/etc/init.d/nfs-kernel-server გადატვირთვა

Სულ ეს არის. თქვენ შეგიძლიათ დაიწყოთ ექსპორტირებული FS-ის დაკავშირება კლიენტის კომპიუტერზე.

კლიენტის დაყენება

კლიენტის მხარეს, დისტანციური ფაილური სისტემა დამონტაჟებულია ისევე, როგორც ყველა სხვა - mount ბრძანებით. ასევე, არავინ გიკრძალავთ /etc/fstab-ის გამოყენებას, თუ გჭირდებათ FS-ის ავტომატურად დაკავშირება OS-ის ჩატვირთვისას. ასე რომ, დამაგრების ვარიანტი ასე გამოიყურება:

Mount -t nfs asep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

თუ ყველაფერი კარგად წავიდა და ჩატვირთვისას ავტომატურად უნდა დაუკავშირდეთ დისტანციურ FS-ს, უბრალოდ დაამატეთ ხაზი /etc/fstab:

Ashep-ლეპტოპი:/var/backups /mnt/ashep-laptop/backups nfs auto 0 0

Სხვა რა

ასე რომ, ჩვენ გვაქვს NFS-ის შესაძლებლობების პრაქტიკული, მცირე მიმოხილვა. რა თქმა უნდა, ეს მხოლოდ მცირე ნაწილია იმისა, რისი გაკეთებაც NFS-ს შეუძლია. ეს საკმარისია სახლში ან პატარა ოფისში გამოსაყენებლად. თუ ეს არ არის საკმარისი თქვენთვის, გირჩევთ ჯერ წაიკითხოთ

როცა ჩართულია NFS- სერვერზე არის ერთი მთავარი მომხმარებელი და კომპიუტერზე, რომელიც მოქმედებს როგორც NFS-კლიენტი, ასევე ერთი მომხმარებელი და ასევე შედის sudousers სიაში -: NFS დანაყოფი დაკავშირებულია sudo-ს გამოყენებით, UID და GID NFS სერვერზე და NFS კლიენტზე იგივეა, წაკითხვისა და ჩაწერის უფლებებთან დაკავშირებული პრობლემები არ არის.

მე მქონდა სიტუაცია, როდესაც NFS კლიენტს ჰყავდა რეგულარული მომხმარებელი sudo-ზე წვდომის გარეშე და მას უნდა შეეძლოს დაკავშირებულ NFS დანაყოფზე წაკითხვა და ჩაწერა. მოდით ვუწოდოთ ამ მომხმარებლის რეგუსერი. ასევე იყო სხვა მომხმარებელი ამ კომპიუტერზე (NFS კლიენტი), რომელსაც ჰქონდა sudo წვდომა. მოდით, მას ვუწოდოთ: მტაცებელი.

ასე რომ, ორი დავალება მქონდა:

  1. დარწმუნდით, რომ რეგუსერს შეუძლია დაწეროს ფაილებსა და დირექტორიაში NFS სერვერზე.
  2. გააკეთეთ ეს ისე, რომ რეგუზერმა შეძლოს თავად NFS დანაყოფის დაკავშირება და გათიშვა.

როგორ მივცეთ NFS სერვერზე დაწერის ნება მომხმარებელთა მიერ NFS კლიენტიდან, რომელსაც აქვს განსხვავებული UID მომხმარებლის UID-ისგან, რომელიც ფლობს ფაილებს NFS სერვერზე

მოქმედებები შესრულებულია NFS სერვერზე, როგორც root მომხმარებელი.
რედაქტირება /etc/exports:
ნანო / და ა.შ. / ექსპორტი
ჩვენ ვსვამთ ან ვცვლით ხაზს, რომელიც მიუთითებს რომელი დირექტორია იქნება ხელმისაწვდომი (ექსპორტირებული) NFS-ის საშუალებით:

/home/nfs 192.168.1.1/24(rw,async,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

სად:

  • /სახლი/nfs— დირექტორია, რომელიც ხელმისაწვდომი იქნება (ექსპორტირებული) NFS კლიენტისთვის;
  • 192.168.1.1/24 — IP მისამართი ან, როგორც ამ შემთხვევაში, მისამართების დიაპაზონი, საიდანაც უფლება გაქვთ NFS-თან დაკავშირება;
  • rw- კითხვისა და წერის ნებართვა;
  • ასინქრონული— მუშაობის ასინქრონული რეჟიმი, რომელშიც მოთხოვნებზე პასუხები დაუყოვნებლივ მოხდება, დისკზე ჩაწერის მოლოდინის გარეშე. ამ შემთხვევაში საიმედოობა დაბალია, თუმცა შესრულება უფრო დიდია;
  • no_subtree_check- ფაილური სისტემის ქვედირექტორიაზე წვდომისას, ვიდრე მთლიან ფაილურ სისტემას, სერვერი ამოწმებს, არის თუ არა მოთხოვნილი ფაილი ექსპორტირებულ ქვედირექტორიაში. no_subtree_check გამორთავს ამ შემოწმებას, რაც ამცირებს უსაფრთხოებას, თუმცა ზრდის მონაცემთა გადაცემის სიჩქარეს;
  • ყველა_გოგრა— ეს პარამეტრი უზრუნველყოფს, რომ ნებისმიერი NFS კლიენტის მომხმარებელი ანონიმურად ჩაითვლება NFS სერვერზე ან იმ NFS სერვერის მომხმარებლებზე, რომელთა იდენტიფიკატორები მითითებულია ანონუიდში და ანონგიდში;
  • ანონუიდური— OS მომხმარებლის ID NFS სერვერზე. Აღებულია /etc/passwd. მაგალითად, თუ გჭირდებათ პირველი არასისტემური მომხმარებელი (ის, რომლის შესვლა მითითებული იყო OS-ის დაყენებისას, ჩემს შემთხვევაში nfs) და ფაილში /etc/passwdარის ხაზი" nfs:x:1000:1000:NFS:/home/nfs:/bin/bash» მნიშვნელობა anonuid-ისთვის იქნება პირველი რიცხვი 1000;
  • ანონგიდი— OS ჯგუფის იდენტიფიკატორი NFS სერვერზე. Აღებულია /etc/ჯგუფი. მაგალითად, თუ გჭირდება ჯგუფი www-მონაცემებიდა ფაილში /etc/ჯგუფიარის ხაზი" www-data:x:33:» მნიშვნელობა ანონგიდისთვის იქნება 33;

თუ საჭიროა უფრო ზუსტად მიუთითოთ NFS კლიენტის რომელი მომხმარებლები შეესაბამება მომხმარებლებს NFS სერვერზე, შეგიძლიათ ჩართოთ მომხმარებლის რუკების ჩართვა ოფციის დამატებით. map_static=/etc/file_maps_users. ფაილი /etc/file_maps_usersასე უნდა გამოიყურებოდეს:

# მომხმარებლების რუქა # დისტანციური ლოკალური კომენტარის uid 0-33 1002 # მომხმარებლების რუკების დახატვა დისტანციური UID 0-50 ადგილობრივ UID 1002 gid 0-33 1002 # დისტანციური GID 0-50 მომხმარებელთა რუკების შედგენა ადგილობრივ GID 1002-ზე

ჩვენ გადავტვირთავთ nfs დემონს და ეს ასრულებს სერვერის დაყენებას:
/etc/init.d/nfs-kernel-server გადატვირთვა

როგორ მივცეთ რეგულარულ მომხმარებელს NFS დანაყოფის დამონტაჟება და ამოღება

შექმენით დირექტორია, რომელშიც დავამონტაჟებთ:
sudo mkdir /media/nfs

Დაამატე /etc/fstabსამონტაჟო წესი. გახსენით ფაილი:
სუდო ნანო /etc/fstab
დაამატეთ წესი:
192.168.1.50:/home/nfs /media/nfs nfs rw,noauto,user 0 0
სად:

  • 192.168.1.50 — NFS სერვერის IP მისამართი;
  • /სახლი/nfs— დირექტორია NFS სერვერზე, რომელსაც ჩვენ ვამაგრებთ. ის უნდა იყოს სიაში / და ა.შ. / ექსპორტი NFS სერვერზე;
  • /მედია/nfs— დირექტორია NFS კლიენტზე, რომელშიც ვამონტაჟებთ NFS დანაყოფის;
  • nfs- ფაილური სისტემის ტიპი;
  • rw- წერის უფლებით;
  • ნოავტო— ვარიანტი, რომელიც მიუთითებს, რომ დანაყოფი არ საჭიროებს ავტომატურად დამონტაჟებას ჩატვირთვისას;
  • მომხმარებელი— ოფცია, რომელიც საშუალებას აძლევს ნებისმიერ მომხმარებელს დაამონტაჟოს და მოხსნას ეს დანაყოფი.

NFS-ის გამორთვა:
ნანო ~/nfs.რაოდენობა
კოდით:
#!/bin/bash
umount/media/nfs

ნება დართეთ სკრიპტები შესრულდეს:
chmod ug+x ~/nfs.mount ~/nfs.umount

და ბოლოს, NFS რესურსის დაკავშირება:
~/nfs.mount

NFS რესურსის გამორთვა:
~/nfs.რაოდენობა

ესე იგი, ყველა დავალება დასრულებულია.

კომპიუტერულ ქსელებზე საუბრისას ხშირად მოისმენთ NFS-ის ხსენებას. რას ნიშნავს ეს აბრევიატურა?

ეს არის განაწილებული ფაილური სისტემის პროტოკოლი, რომელიც თავდაპირველად შეიქმნა Sun Microsystems-ის მიერ 1984 წელს, რომელიც საშუალებას აძლევს მომხმარებელს კლიენტის კომპიუტერზე წვდომა ჰქონდეს ფაილებზე ქსელში, ლოკალურ მეხსიერებაზე წვდომის მსგავსი. NFS, ისევე როგორც მრავალი სხვა პროტოკოლი, დაფუძნებულია Open Network Computing Remote Procedure Call (ONC RPC) სისტემაზე.

სხვა სიტყვებით რომ ვთქვათ, რა არის NFS? ეს არის ღია სტანდარტი, რომელიც განსაზღვრულია კომენტარების მოთხოვნით (RFC), რომელიც საშუალებას აძლევს ნებისმიერს განახორციელოს პროტოკოლი.

ვერსიები და ვარიაციები

გამომგონებელმა გამოიყენა მხოლოდ პირველი ვერსია საკუთარი ექსპერიმენტული მიზნებისთვის. როდესაც დეველოპერის გუნდმა დაამატა მნიშვნელოვანი ცვლილებები ორიგინალურ NFS-ში და გამოუშვა იგი Sun-ის ავტორობის მიღმა, მათ ახალი ვერსია დაასახელეს, როგორც v2, რათა შეემოწმებინათ დისტრიბუციებს შორის თავსებადობა და შეექმნათ სარეზერვო ვერსია.

NFS v2

ვერსია 2 თავდაპირველად მუშაობდა მხოლოდ მომხმარებლის მონაცემთა გრამის პროტოკოლზე (UDP). მის დეველოპერებს სურდათ შეენარჩუნებინათ სერვერის მხარე ძირითადი პროტოკოლის გარეთ განხორციელებული დაბლოკვის გარეშე.

ვირტუალური ფაილური სისტემის ინტერფეისი იძლევა მოდულური იმპლემენტაციის საშუალებას, რომელიც აისახება მარტივ პროტოკოლში. 1986 წლის თებერვლისთვის, გადაწყვეტილებები იქნა ნაჩვენები ოპერაციული სისტემებისთვის, როგორიცაა System V გამოშვება 2, DOS და VAX/VMS Eunice-ის გამოყენებით. NFS v2 მხოლოდ პირველი 2 GB ფაილის წაკითხვის საშუალებას აძლევდა 32-ბიტიანი შეზღუდვების გამო.

NFS v3

Sun Microsystems-ში NFS ვერსიის 3-ის შემუშავების პირველი წინადადება გამოცხადდა მეორე დისტრიბუციის გამოშვებიდან მალევე. მთავარი მოტივაცია იყო სინქრონული ჩაწერის შესრულების პრობლემის შერბილების მცდელობა. 1992 წლის ივლისისთვის პრაქტიკულმა გაუმჯობესებებმა გადაჭრა NFS ვერსიის 2-ის მრავალი ნაკლოვანება, რის გამოც მხოლოდ ფაილების არასაკმარისი მხარდაჭერა დარჩა (64-ბიტიანი ფაილის ზომები და ფაილის ოფსეტები).

  • 64-ბიტიანი ფაილის ზომისა და ოფსეტების მხარდაჭერა 2 გიგაბაიტზე მეტი (GB) მონაცემების დასამუშავებლად;
  • ასინქრონული ჩაწერის მხარდაჭერა სერვერზე მუშაობის გასაუმჯობესებლად;
  • ფაილის დამატებითი ატრიბუტები ბევრ პასუხში, რათა თავიდან ავიცილოთ მათი ხელახლა მოტანა;
  • READDIRPLUS ოპერაცია მონაცემთა და ატრიბუტების მისაღებად ფაილების სახელებთან ერთად კატალოგის სკანირებისას;
  • ბევრი სხვა გაუმჯობესება.

მე-3 ვერსიის დანერგვის დროს, TCP-ის, როგორც სატრანსპორტო ფენის პროტოკოლის მხარდაჭერა დაიწყო ზრდა. TCP-ის გამოყენებამ, როგორც მონაცემთა გადაცემის საშუალებას, რომელიც შესრულდა NFS-ის გამოყენებით WAN-ზე, დაიწყო დიდი ზომის ფაილების გადაცემის საშუალება სანახავად და ჩასაწერად. ამის წყალობით, დეველოპერებმა შეძლეს გადალახონ მომხმარებლის Datagram პროტოკოლის (UDP) მიერ დაწესებული 8 KB ლიმიტები.

რა არის NFS v4?

ვერსია 4, რომელიც გავლენას ახდენს Endres ფაილური სისტემაზე (AFS) და სერვერის შეტყობინებების ბლოკზე (SMB, რომელსაც ასევე უწოდებენ CIFS), მოიცავს მუშაობის გაუმჯობესებას, უზრუნველყოფს უკეთეს უსაფრთხოებას და შემოაქვს შესაბამისობის პროტოკოლს.

ვერსია 4 იყო პირველი დისტრიბუცია, რომელიც შეიმუშავა ინტერნეტ ინჟინერიის სამუშაო ჯგუფმა (IETF) Sun Microsystems-ის მიერ პროტოკოლის შემუშავების აუთსორსინგის შემდეგ.

NFS ვერსია 4.1 მიზნად ისახავს უზრუნველყოს პროტოკოლის მხარდაჭერა კლასტერული სერვერის განლაგების გამოყენებისთვის, მათ შორის მრავალ სერვერზე განაწილებულ ფაილებზე მასშტაბური პარალელური წვდომის უზრუნველყოფის შესაძლებლობას (pNFS გაფართოება).

ფაილური სისტემის უახლესი პროტოკოლი, NFS 4.2 (RFC 7862), ოფიციალურად გამოვიდა 2016 წლის ნოემბერში.

სხვა გაფართოებები

სტანდარტის შემუშავებით გაჩნდა მასთან მუშაობის შესაბამისი ინსტრუმენტები. მაგალითად, WebNFS, გაფართოება 2 და 3 ვერსიებისთვის, საშუალებას აძლევს ქსელის ფაილური სისტემის წვდომის პროტოკოლს უფრო ადვილად ინტეგრირდეს ვებ ბრაუზერებში და ჩართოს მუშაობა ფეიერვოლებში.

მესამე მხარის სხვადასხვა პროტოკოლი ასევე ასოცირდება NFS-თან. მათგან ყველაზე ცნობილია:

  • ქსელის დაბლოკვის მენეჯერი (NLM) ბაიტის პროტოკოლის მხარდაჭერით (დამატებულია UNIX System V ფაილის ჩაკეტვის API-ს მხარდასაჭერად);
  • დისტანციური კვოტა (RQUOTAD), რომელიც საშუალებას აძლევს NFS მომხმარებლებს ნახონ შენახვის კვოტები NFS სერვერებზე;
  • NFS RDMA-ზე არის NFS-ის ადაპტაცია, რომელიც იყენებს დისტანციური პირდაპირი მეხსიერების წვდომას (RDMA), როგორც გადაცემის საშუალებას;
  • NFS-Ganesha არის NFS სერვერი, რომელიც მუშაობს მომხმარებლის სივრცეში და მხარს უჭერს CephFS FSAL (ფაილის სისტემის აბსტრაქციის ფენას) libcephfs-ის გამოყენებით.

პლატფორმები

ქსელის ფაილური სისტემა ხშირად გამოიყენება Unix ოპერაციულ სისტემებთან (როგორიცაა Solaris, AIX, HP-UX), Apple-ის MacOS და Unix-ის მსგავსი ოპერაციული სისტემები (როგორიცაა Linux და FreeBSD).

ის ასევე ხელმისაწვდომია ისეთი პლატფორმებისთვის, როგორიცაა Acorn RISC OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare და IBM AS/400.

ფაილების დისტანციური წვდომის ალტერნატიული პროტოკოლები მოიცავს Server Message Block (SMB, ასევე მოუწოდა CIFS), Apple Transfer Protocol (AFP), NetWare Core Protocol (NCP) და OS/400 Server File System (QFileSvr.400).

ეს განპირობებულია NFS-ის მოთხოვნებით, რომლებიც ძირითადად მიზნად ისახავს Unix-ის მსგავსი „ჭურვები“.

თუმცა, SMB და NetWare (NCP) პროტოკოლები უფრო ხშირად გამოიყენება ვიდრე NFS სისტემებზე, რომლებიც მუშაობენ Microsoft Windows-ზე. AFP ყველაზე გავრცელებულია Apple Macintosh პლატფორმებზე, ხოლო QFileSvr.400 ყველაზე გავრცელებულია OS/400-ზე.

ტიპიური განხორციელება

ვივარაუდოთ ტიპიური Unix-ის სცენარი, რომელშიც ერთ კომპიუტერს (კლიენტს) სჭირდება წვდომა მეორეზე შენახულ მონაცემებზე (NFS სერვერზე):

  • სერვერი ახორციელებს ქსელის ფაილური სისტემის პროცესებს, რომლებიც მუშაობს ნაგულისხმევად, როგორც nfsd, რათა მისი მონაცემები საჯაროდ იყოს ხელმისაწვდომი კლიენტებისთვის. სერვერის ადმინისტრატორი განსაზღვრავს, თუ როგორ უნდა მოხდეს დირექტორიას სახელების და პარამეტრების ექსპორტი, როგორც წესი, გამოყენებით /etc/exports კონფიგურაციის ფაილი და exportfs ბრძანება.
  • სერვერის უსაფრთხოების ადმინისტრირება უზრუნველყოფს, რომ მას შეუძლია ამოიცნოს და დაამტკიცოს ავტორიზებული კლიენტი. მისი ქსელის კონფიგურაცია უზრუნველყოფს, რომ უფლებამოსილ კლიენტებს შეუძლიათ მასთან მოლაპარაკება ნებისმიერი firewall სისტემის საშუალებით.
  • კლიენტის მანქანა ითხოვს წვდომას ექსპორტირებულ მონაცემებზე, როგორც წესი, ბრძანების გაცემით. ის ითხოვს სერვერს (rpcbind), რომელიც იყენებს NFS პორტს და შემდგომ უერთდება მას.
  • თუ ყველაფერი შეცდომების გარეშე მოხდა, კლიენტის აპარატზე მომხმარებლები შეძლებენ სერვერზე დაინსტალირებული ფაილური სისტემების ნახვა და ურთიერთქმედება ნებადართული პარამეტრების ფარგლებში.

ასევე უნდა აღინიშნოს, რომ ქსელის ფაილური სისტემის პროცესის ავტომატიზაცია ასევე შეიძლება მოხდეს - შესაძლოა etc/fstab და/ან სხვა მსგავსი ინსტრუმენტების გამოყენებით.

განვითარება დღემდე

21-ე საუკუნისთვის, კონკურენტმა პროტოკოლებმა DFS და AFS ვერ მიაღწიეს რაიმე მნიშვნელოვან კომერციულ წარმატებას ქსელის ფაილურ სისტემასთან შედარებით. IBM-მა, რომელმაც ადრე შეიძინა ყველა კომერციული უფლება ზემოაღნიშნულ ტექნოლოგიებზე, AFS კოდის უმეტესი ნაწილი გადასცა თავისუფალი პროგრამული უზრუნველყოფის საზოგადოებას 2000 წელს. Open AFS პროექტი დღესაც არსებობს. 2005 წლის დასაწყისში IBM-მა გამოაცხადა AFS და DFS გაყიდვების დასრულება.

თავის მხრივ, 2010 წლის იანვარში, Panasas-მა შესთავაზა NFS v 4.1 ტექნოლოგიაზე დაფუძნებული, რომელიც აუმჯობესებს მონაცემთა პარალელური წვდომის შესაძლებლობებს. ქსელის ფაილური სისტემა v 4.1 პროტოკოლი განსაზღვრავს მეთოდს ფაილური სისტემის მეტამონაცემების გამოყოფის კონკრეტული ფაილების მდებარეობიდან. ასე რომ, ის სცილდება უბრალო სახელს/მონაცემთა გამიჯვნას.

რა არის ამ ვერსიის NFS პრაქტიკაში? ზემოაღნიშნული ფუნქცია განასხვავებს მას ტრადიციული პროტოკოლისგან, რომელიც შეიცავს ფაილების სახელებს და მათ მონაცემებს სერვერთან ერთი კავშირის ქვეშ. Network File System v 4.1-ით, ზოგიერთი ფაილის გაზიარება შესაძლებელია მრავალ კვანძოვან სერვერებზე, მაგრამ კლიენტის მონაწილეობა მეტამონაცემებისა და მონაცემების გაზიარებაში შეზღუდულია.

პროტოკოლის მეოთხე განაწილების განხორციელებისას NFS სერვერი წარმოადგენს სერვერის რესურსების ან კომპონენტების ერთობლიობას; ვარაუდობენ, რომ მათ აკონტროლებს მეტამონაცემების სერვერი.

კლიენტი კვლავ დაუკავშირდება მეტამონაცემების ერთ სერვერს სახელთა სივრცეში გადასასვლელად ან ურთიერთქმედების მიზნით. როდესაც ის გადააქვს ფაილებს სერვერზე და სერვერზე, მას შეუძლია პირდაპირ ურთიერთქმედება მონაცემთა ერთობლიობასთან, რომელიც ეკუთვნის NFS ჯგუფს.