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 /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.

  1. 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.
  2. 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

1

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…

 

Səs: +60. Bəyənilsin Zəifdir

Müəllif: Babək Məmmədov

Şərh yazın