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
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
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
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
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.
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
[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
[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
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"
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)
/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 ]
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
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 ]
[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)
/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
[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 zdalnegoCał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
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