Linux NFS server və kliyentin sazlanması
Salam dostlar. Bugün ki mövzumuz Linux əməliyyat sisteminin Red hat/CentOS 7 /Fedora 21-22 distributivində NFS(Network File System) və onun quraşdırılmasından ibarət olacaqdır.
NFS(Network File System) hansı ki, bizim dilimizdə ifadə etsək, şəbəkə fayl sistemidir. Unix/linux tipli əməliyyat sistemlərin arasında fayl və folderlərin paylaşılmasına imkan verən texnologiyadır. 1990-ci illərdə “SUN Microsystem”tərəfindən yaradılmışdır. Əgər NFS’ə daha da aydın şəkildə anlaşılması üçün izahat versək, onda NFS uzaq kompüter də(remote host) saxlanılan fayl və ya folderləri şəbəkə üzərində lokal kompüterimizə mount etməyə imkan verir, bundan başqa sistem inzibatçıları tərəfindən də NFS server saxlanılan məlumatların mərkəzləşdirilmiş şəkildə idarə ediməsi mümkün olur.
Hal-hazırda Red Hat əməliyyat sistemində dəstəklən 2 NFS versiyası vardır. NFSv3 və NFSv4
Susmaya görə Red Hat 7 də NFSv4 versiyasından istifadə edilir. Təbii ki, bu versiyalar arasında müəyyən fərqlər vardır. Misal üçün:
- NFSv4 TCP protokolundan istifadə edir, NFSv3 isə UDP
- NFSv4’də təhlükəsizlik və performans baxımından bir sıra əlavələr edilmişdir.
- NFSv4 həmçinin ACL(Access Control list) dəstəkləyir.(Gələcək zamanlarda bu mövzu ilə əlaqadar məqaləmiz olacaq deyə ümid edirəm)
- NFSv4 firewalld servisi ilə işləyir.
- NFSv4’də pseudo root mount xüsüsiyyəti də mövcuddur. Bu sizə kliyent tərəfdə, NFS serverin bütün root direktoriyasını mount etməyə imkan verir və həmin root direktoriyası altında sizin hansı faylları görməyə yetkiniz varsa, həmin faylları görə bilirsiniz. Bundan ondan ötürü yaxşıdır ki, kliyent nfs server tərəfindən paylaşılmış faylın tam yolunu bilməyəndə, serverin root direktoriyasını mount edir(qaydaya görə bütün fayllar root direktoriyası altında yerləşdiyinə görə) və hansı fayllar icazəsi varsa, onlara da baxa bilir.
- Bundan əlavə əgər siz nfs kliyent tərəfdə versiya 4-dən istifadə edirsiniz amma sizin nfs serveriniz 3 və ya 2 versiyası üzərindədir.Və siz mount əməliyyatını yerinə yetirərkən bu zaman kliyent avtomatik olaraq uygun versiyaya(3 və ya 2) keçir .Həmçinində siz nfs serverin hansı versiyadan istifadə etdiyini dəqiq bilirsinizsə, onda mount komandasının nfsvers və ya vers xüsüsiyyətindən istifadə edərək bir başa mount əməliyyatını apara bilərsiniz.
Əlavə məlumat üçün buradan baxa bilərsiniz.
Mən mühitimdə olan ilkin konfiqurasiyalar:
Server və kliyent CentOS 7.2 ƏS’nin üzərində sazlamağı planlaşdırıram. Lakin Red hat 7, Fedora 21-22 və Oracle linux əs’lərində də prosedur eyni cürdür.
NFS server
Hostname : server1.intern.local
İP ünvan : 192.168.2.5
Firewall aktiv, Selinux deaktiv
NFS kliyent
Hostname : server2.intern.local
İP ünvan : 192.168.2.5
Firewall aktiv, Selinux deaktiv
İstifadə olunacaq vacib servislər:
nfs-server : Kliyentlərin NFS paylaşımlarına girişini təmin edir.
rpcbind: rpcbind serverdə RPC proqram nömrələrini universal addreslərə çevirir. Daha sadə şəkildə desək, rpcbind universal addreslər haqqında, portmapper isə serverin port nömrələri haqqında kliyentə məlumat verir. Daha ətraflı buradan oxuya bilərsiniz
nfs-lock/rpm-statd: NFS serverdə problem olan zaman(zədələnə bilər və ya restart), nfs fayllarını kilidləyir. Server bərpa olduqdan sonra yenə əvvəlki vəziyyətə gətirir.
nfs-idmap: Bu istifadəçi və qrup id’lərini adlara, həmçinin istifadəçi və qrup adlarını id’lərə çevirir
Istifadə olunacaq vacib konfiqurasiya faylları:
/etc/exports – Bu server də olan əsas konfiqurasiya faylıdır. Müəyyən edilmiş xüsüsiyyətlər çərçivəsində hansı fayllar hansı kliyent komputerlərlə paylaşılmasını təyin edir.
/etc/fstab – Bu kliyent tərəfdə paylaşılmış faylın sistem işə düşəndə avtomatik mount olunmasını təmin edir.
/etc/sysconfig/nfs- Bu fayl RPC servislərinin işləməsi üçün port nömrələrini idarə edir.
/etc/hosts.allow və /etc/hosts.deny – Bu fayllar TCP wrapper fayllarıdır hansı ki bu fayllarda təyin etdiyiniz hostname və ya ip addresli kompüterə, NFS serverlə əlaqə qurmasına ya icazə verə və yaxud qadağan edə bilərsiniz.
Məncə bu qədər danışıq kifayətdir.İndi isə NFS server və kliyentin praktiki olaraq quraşdırılmasına baxaq.
Server tərəfdə edilən sazlanmalar.
Paketlərin yüklənməsi:
[root@server1 ~]# yum install nfs-utils nfs-utils-libs -y
Paketlər yükləndikdən sonra NFS servislərini aktivləşdiririk.
[root@server1 ~]# systemctl enable rpcbind [root@server1 ~]# systemctl enable nfs-server [root@server1 ~]# systemctl start rpcbind [root@server1 ~]# systemctl start nfs-server [root@server1 ~]# systemctl start rpc-statd [root@server1 ~]# systemctl start nfs-idmapd [root@server1 ~]# systemctl start nfs-lock
NFS serverdə paylaşılacaq faylın yaradılması: İndi mən kliyentlər tərəfindən daxil olunacaq paylaşılmış direktoriya yaradacam. Siz istəsəniz mövcud direktoriya üzərində də bunu edə bilərsiniz.
Aşağıda gördüyünüz kimi “/” altında “nfsserverfiles” adlı direktoriya yaradırıq.
[root@server1 ~]# mkdir /nfsserverfiles
Kliyent kompüterlərə direktoriyaya yazıb oxumaq üçün aşağıdakı icazəni veririk.
[root@server1 ~]# chmod 777 /nfsserverfiles/
Indi isə /etc/exports faylında paylaşılacaq faylın xüsüsiyyətlərini təyin edirik.
[root@server1 ~]# vim /etc/exports /nfsserverfiles 192.168.2.6(rw,sync,no_root_squash)
/nfsserverfiles – paylaşılacaq direktoriya
192.168.2.6 – Kliyent maşının ip addresi, həmçinində hostnamenidə qeyd edə bilərsiniz. Bundan başqa siz təyin etdiyiz şəbəkəyə də icazə verə bilərsiniz(Misal üçün 192.168.2.0/24)
rw – Paylaşılmış direktoriyaya yazma icazəsi verir, ancaq oxumaq icazəsini vermək istəyirsinizsə ro təyin edə bilərsiniz.
sync – bütün dəyişiklər sinxronizə olaraq aparılır.
no_root_squash – Bu onu bildirir ki, kliyent maşındakı root istifadəçinin serverdəki faylları giriş səviyyəsi serverdə olan root istifadəçisi ilə eyni olacaq.(əgər root_squash etsəniz bu zaman serverde olan nfsnobody istifadəçisinin nələrə icazəi varsa , kliyentdə olan root istifadəçisinin də onlara icazəsi olacaq)
Bundan əlavə exports faylında kliyent maşın üçün xüsüsiyyətlət təyin etmək istəsəniz ya man exports komandasından istifadə edə yaxud bu linkdən informasiya əldə edə bilərsiniz
Exportfs komandasından istifadə edərək /etc/exports faylındakı paylaşımı export(xaric) edək.
[root@server1 ~]# exportfs -avr exporting 192.168.2.6:/nfsserverfiles
r – /etc/exports faylında dəyişiklik etdikdən sonra, bütün konfiqurasiyanı yenidən yükləyir(Reexporting)
a – /etc/exports faylındakı bütün paylaşım direktoriyalarını göstərir.
v – /etc/exports faylındakı bütün paylaşım direktoriyalarını və xüsüsiyyətlərini geniş şəkildə göstərir
u – bir və daha çox direktoriyanı unexport edir.
f –xüsüsiyyəti ilə butun xaric(exports) olan paylaşımları export cədvəlindən silirsiniz . Bu xüsüsiyyətlər haqqında ətraflı məlumat üçün man exportfs istifadə edə bilərsiniz.
Firewall sazlamalarının edilməsi: Əgər firewall əlaqənin yaradılaması üçün hansı port və ya servislərdən istifadə etdiyini bilmirsinizsə, bunun üçün rpcinfo –p komandasından istifadə edib baxa bilərsiniz.
[root@server1 ~]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 43329 status 100024 1 tcp 32893 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 51956 nlockmgr 100021 3 udp 51956 nlockmgr 100021 4 udp 51956 nlockmgr 100021 1 tcp 46131 nlockmgr 100021 3 tcp 46131 nlockmgr 100021 4 tcp 46131 nlockmgr [root@server1 ~]# firewall-cmd --permanent --add-service=rpc-bind [root@server1 ~]# firewall-cmd --permanent --add-service=nfs [root@server1 ~]# firewall-cmd --permanent --add-service=mountd [root@server1 ~]# firewall-cmd --reload
Sonda isə server tərəfdə nfsə restart verib , kliyent tərəfdə olan sazlamalarımıza keçək
[root@server1 ~]# systemctl restart nfs-server və ya # exportfs -ar
Kliyent tərəfdə edilən sazlamalar.
Vacib duyulan paketləri yükləyirik.
[root@server2 ~]# yum install nfs-utils nfs-utils-libs –y
Uzaq maşındakı direktoriyanı lokal maşına mount etmək üçün rpcbind servisini aktivləşdiririk.
[root@server1 ~]# systemctl start rpcbind [root@server1 ~]# systemctl enable rpcbind
NFS serverdəki paylaşılan faylın mount olunması:
Format
mount –t nfs –o “options” remote_host_ip:directory_path local_machine_mountpoint
Bunu etməzdə əvvəl bizim nfs serverin ip’sini və paylaşılmış faylın yolunu bilmək lazımdır. Adətən şəbəkədə nfs server haqqında məlumatlar administrator tərəfindən verilməlidir. Əgər bu məlumatlarla siz təmin edilmirsinizsə, aşağıdakı yollarla şəbəkdə olan nfs paylaşımlarını görə bilərsiniz.
- Bildiyimiz kimi red hat 7 default olaraq nfsv4 versiyası istifadə olunur və bunun vasitəsi ilə yeni gələn imkanla yəni siz kliyent maşında ümümi olaraq nfs serverin root direktoriyasını lokal sistemə mount edə bilə və həmin root direktoriyası altında sizin nələrə giriş yetkiniz varsa onları görə bilərsiniz.
- showmount –e nfsserver_ip //komandası vasitəsi ilə nfsserverdə hansı nfs paylaşımlar varsa onları görə bilərsiniz.
showmount –e : lokal maşında olan paylaşımları görmək üçün
showmount –e <remote_ip and remote_hostname> : uzaq serverdəki paylaşımları görmək üçün
İndi isə test məqsədli bir direktoriya(mountpoint) yaradaq və nfs serverdəki paylaşımı bu direktoriyaya mount edək.
[root@server2 ~]# mkdir /nfsclientfiles
Mount edib, df –h komandasında istifadə edərək sistemdəki fayl sistemləri və mount olduqları yerə baxaq.
[root@server2 ~]# mount -t nfs 192.168.2.5:/nfsserverfiles/ /nfsclientfiles/ [root@server2 ~]# df -h
Gördüyünüz kimi mount əməliyyati uğurla tamamlanmışdır.Bundan sonra /nfsclientfiles direktoriyası daxilində yaratdığınız və ya sildiyiniz bütün faylları 192.168.2.5 ip’li maşının /nfsserverfiles direktoriyasında saxlanılacaqdır.
Bundan əlavə siz nfs paylaşımlarının mount olunması ilə əlaqadarr bütün xüsüsiyyətləri aşağıdakı fayldan ətraflə görə bilərsiniz.
[root@server1 ~]# cat /var/lib/nfs/etab /tmp/usr 192.168.2.6(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash) /nfsserverfiles 192.168.2.6(rw,sync,no_wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)
Düzdü dostlar, biz işimiz ugurla yerinə yetirdik amma etdiyimiz mount əməliyyati kompüter sondurulədən və ya restart olandan sonra mount olmayacaq. İndi isə gəlin avtomount edilmə qaydasına baxaq.
[root@server2 ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Wed Jan 20 01:51:35 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7343d085-fb7b-47b0-b374-bc26ceb34e23 / xfs defaults 0 0 UUID=ea4f6999-3af4-47a6-aa92-457ec0fe2055 /boot xfs defaults 0 0 UUID=2306fdf5-25a4-4fc9-8165-68260404db4e swap swap defaults 0 0 192.168.2.5:/nfsserverfiles /nfsclientfiles nfs rw,sync,intr,hard 0 0
😡 və ya :wq! edib faylı yaddaşa verirsiniz.
Sonra kliyent sistemə reboot verib, yenidən df –h komandasını yazmasınız nfs mountun olduğu kimi qaldığını görəcəksiniz.
Əgər nfs paylaşımı mount olmasını dayandirmaq istəsəniz:
[root@server2 ~]# umount /nfsclientfiles/
Bu qədər dostlar, bu məqalədə çalışdım ki, nfs və onun quraşdırılması haqqında məlumat verim. Ümid edirəm ki, bunu edə bildim J
NFS haqqında ətraflı məlumat üçün aşağıdakı linkldən baxa bilərsiniz.
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/s1-nfs-additional-resources.html
Gələn görüşlərədək…