Eksport zasobów NFS z serwera

Red Har 6.x / CentOS 6.x

Po prostej konfiguracji, mamy możliwość udostępniania lokalnego dysku serwera jako udział NFS dla innych serwerów. Nasz przykład oprzemy o dodany do maszyny wirtualnej dodatkowy dysk, który w całości udostępnimy innym maszynom.

Po dodaniu dysku do maszyny wirtualnej należy przygotować go odpowiednio, żeby był widoczny dla naszego nfs-a:

[root@ipa-nfs ~]# cat /proc/partitions
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16    8388608 sdb
 253        0    7036928 dm-0
 253        1     835584 dm-1

 Nasz dysk pojawił się w naszym systemie jako sdb. Jako, że w systemie działamy na lvolach, zasób współdzielony po nfs-ie również stworzymy w tej technologii, i utworzymy dla niego nowy punkt montowania.

Dodajemy dysk jako wolumen fizyczny dla lvoli:

[root@ipa-nfs ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@ipa-nfs ~]# pvs
  PV         VG        Fmt  Attr PSize PFree
  /dev/sda2  vg_centos lvm2 a--  7.51g    0
  /dev/sdb             lvm2 ---  8.00g 8.00g

Po wciągnięciu dysku, należy dodać go do volume group-y. My utworzymy dedykowaną dla nfs grupę o nazwie vg_nfs:

[root@ipa-nfs ~]# vgcreate vg_nfs /dev/sdb
  Volume group "vg_nfs" successfully created
[root@ipa-nfs ~]# vgs
  VG        #PV #LV #SN Attr   VSize VFree
  vg_centos   1   2   0 wz--n- 7.51g    0
  vg_nfs      1   0   0 wz--n- 8.00g 8.00g

W tak przygotowanej grupie, możemy utworzyć nasz wolumen logiczny, który będziemy udostępniali na świat. Opcja -l 100%FREE oznacza, że wolumen będzie zajmował 100% wolnego miejsca w grupie wolumenowej. Jeśli chcemy utworzyć wolumen o konkretnej wielkości, należy użyć opcji -L xxM lub -L xxG, aby wolumen miał rozmiar odpowiednio xx MB lub xx GB.

[root@ipa-nfs ~]# lvcreate -l 100%FREE -n lv_nfs vg_nfs
  Logical volume "lv_nfs" created.
[root@ipa-nfs ~]# lvs
  LV      VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vg_centos -wi-ao----   6.71g
  lv_swap vg_centos -wi-ao---- 816.00m
  lv_nfs  vg_nfs    -wi-a-----   8.00g

Po utworzeniu wolumenu, należy stworzyć na nim filesystem, utworzyć punkt montowania w systemie a następnie zamontować dysk, aby był dostępny dla naszego systemu. Filesystem tworzymy odnosząc się do ścieżki mappera lvm /dev/mapper/[nazwa_grupy]-[nazwa_wolumenu]:

[root@ipa-nfs ~]# mkfs.ext4 /dev/mapper/vg_nfs-lv_nfs
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2096128 blocks
104806 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Tworzymy teraz punkt montowania i montujemy sam dysk

[root@ipa-nfs ~]# mkdir /nfs
[root@ipa-nfs ~]# mount /dev/mapper/vg_nfs-lv_nfs /nfs/
[root@ipa-nfs ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                      6.5G  5.2G  1.3G  80% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             477M   37M  415M   9% /boot
/dev/mapper/vg_nfs-lv_nfs
                      7.8G   18M  7.4G   1% /nfs

 Jak widać, mamy podmontowany nowy dysk, w lokalizacji /nfs.
Aby dysk montował się podczas wstawania systemu, należy umieścić w /etc/fstab odpowiedni wpis:

[root@ipa-nfs ~]# tail -1 /etc/mtab >> /etc/fstab

Możemy teraz przystąpić do instalacji i konfiguracji samej usługi NFS. Rozpoczniemy od instalacji odpowiednich paczek:

[root@ipa-nfs ~]# yum install nfs-utils nfs4-acl-tools

Kolejnym krokiem będzie zagwarantowanie, że serwisy odpowiedzialne za wystawienie udziałów, będą startowane razem z systemem:

[root@ipa-nfs ~]# chkconfig nfs on
[root@ipa-nfs ~]# chkconfig nfslock on
[root@ipa-nfs ~]# chkconfig rpcbind on
[root@ipa-nfs ~]# chkconfig | grep -E "nfs|rpcbind"
nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs-rdma        0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Konfiguracji nfs dokonujemy na wyłączonym serwisie, dlatego warto sprawdzić jego ststus, i jeśli jest uruchomiony, wyłączyć go przez service nfs stop:

[root@ipa-nfs ~]# service nfs status
rpc.svcgssd is stopped
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped

Całość potrzebnej konfiguracji wykonamy na 2 plikach: /etc/sysconfig/nfs oraz /etc/exports. Wystarczająca dla nas konfiguracja ogranicza się do wymuszenia protokołu NFS do wersji 4. Inne opcje może kiedyś pojawią się w bardziej zaawansowanym przewodniku. Ograniczenie wersji opiera się o odhashowaniu 3 linii w pliku /etc/sysconfig/nfs:

[root@ipa-nfs ~]# vi /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

Teraz możemy przystąpić do definiowania zasobów, które będziemy udostępniać dla innych. W tym celu musimy umieścić ich ścieżki w pliku /etc/exports, wraz z odpowiednimi opcjami. Wszystkie opcje są bardzo dobrze opisane w manualu (man exports), dlatego nie będę ich wypisywał. Na nasze potrzeby, wystawimy masz /nfs dla wszystkich hostów w sieci, z uprawnieniami do odczytu i zapisu:

[root@ipa-nfs ~]# vi /etc/exports
 /nfs    *(rw,sync)

Oczywiście możemy w ten sposób wystawić wiele zasobów, ograniczając ich dostępność dla hostów (zastępując * konkretnym adresem IP czy siecią). Po przygotowaniu pliku eksportów należy wystartować usługi odpowiedzialne za udostępnienie ich w sieci:

[root@ipa-nfs ~]# service rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@ipa-nfs ~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

Weryfikację działania usługi (a także wersji NFS-a z jaką działamy) możemy przeprowadzić poprzez wyświetlenie portów:

[root@ipa-nfs ~]# 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
    100011    1   udp    875  rquotad
    100011    2   udp    875  rquotad
    100011    1   tcp    875  rquotad
    100011    2   tcp    875  rquotad
    100003    4   tcp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  59666  nlockmgr
    100021    3   udp  59666  nlockmgr
    100021    4   udp  59666  nlockmgr
    100021    1   tcp  46563  nlockmgr
    100021    3   tcp  46563  nlockmgr
    100021    4   tcp  46563  nlockmgr

Wynik tego polecenia wykorzystamy również do otwarcia portów w lokalnym firewall'u:

[root@ipa-nfs ~]# iptables -I INPUT 5 -p tcp -m multiport --dports=111,875,2049,46563 -j ACCEPT
[root@ipa-nfs ~]# iptables -I INPUT 5 -p udp -m multiport --dports=111,875,2049,59666 -j ACCEPT
[root@ipa-nfs ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Teraz zweryfikujmy, czy nasz zasób został udostępniony, oraz jakie otrzymał parametry:

[root@ipa-nfs ~]# cat /var/lib/nfs/etab
/nfs    *(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

Zasób jak widać jest wystawiony na świat, więc możemy go mountować na innej maszynie. Do tego celu musimy utworzyć na niej punkt montowania, a w opcjach montowania wskazać, iż będzie to zasób nfs-owy:

[root@server ~]# mkdir /remotenfs
[root@server ~]# mount -t nfs 192.168.1.120:/nfs /remotenfs/
[root@server ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                      6.5G  5.3G  1.2G  82% /
tmpfs                 499M  8.0K  499M   1% /dev/shm
/dev/sda1             477M   37M  415M   9% /boot
192.168.1.120:/nfs    7.8G   18M  7.4G   1% /remotenfs

Troubbleshooting

Nie można podmountować zasobu zdalnego

Całość operacji była prowadzona na systemie CentOS 6.7, który posiada domyślnie zainstalowane pakiety nfs-utils i nfs4-acl-tools. Jeśli operacja mountowania kończy się błędem, warto sprawdzić, czy pakiety są zainstalowane, a jeśli nie doinstalować je:

[root@server ~]# rpm -qa | grep nfs
nfs-utils-1.2.3-64.el6.x86_64
nfs4-acl-tools-0.3.3-7.el6.x86_64
nfs-utils-lib-1.1.5-11.el6.x86_64

Instalację wykonujemy tak samo, jak na serwerze, czyli przy użyciu yum install

Brak komentarzy:

Prześlij komentarz