NFS๋ ๋ฌด์์ธ๊ฐ์?
๊ณต์ ๋ ์๊ฒฉ ํธ์คํธ์ ํ์ผ์ ๋ก์ปฌ์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ๋ ํ์ผ ์์คํ ์ ๋คํธ์ํฌ ํ์ผ ์์คํ (Network File System, NFS)์ด๋ผ๊ณ ํฉ๋๋ค. ์ ํต์ ์ธ ์ ๋์ค ํ๊ฒฝ์์๋ ์ค๋ซ๋์ ๋คํธ์ํฌ์์ ์๋ฃ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก NFS๋ฅผ ์ฌ์ฉํ์ต๋๋ค. NFS ์๋ฒ๊ฐ ํ์ผ์ ๊ณต์ ํ๋ฉด NFS ํด๋ผ์ด์ธํธ๊ฐ ๊ณต์ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง์ดํธํด์ ์๊ฒฉ ํธ์คํธ(NFS ์๋ฒ)์ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
NFS๋ ์์ฝ๊ฒ ํ์ผ์ ๊ณต์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง ๋ณด์์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. NFS๋ก ๊ณต์ ํ ํ์ผ์๋ ์ผ๋ฐ์ ์ธ ์์ ๊ถ๊ณผ ์ ๊ทผ ๊ถํ์ด ๊ทธ๋๋ก ์ ์ฉ๋ฉ๋๋ค. ์๊ฒฉ ์์คํ ์์ ์ด๋ค ์ฌ์ฉ์๊ฐ ํ์ผ ์์ ์์ ๊ฐ์ UID๋ก ๊ณต์ ๋๋ ํฐ๋ฆฌ์ ์ ๊ทผํด์ ํ์ผ์ ๋ง์๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฃจํธ ๊ถํ์ด ๋ถ์ฌ๋ ์ฌ์ฉ์๊ฐ ๊ณต์ ๋๋ ํฐ๋ฆฌ์ ์ ๊ทผํ๋ค๋ฉด ๋์ฑ ์ํํฉ๋๋ค. NFS๋ก ํ์ผ์ ๊ณต์ ํ ๋๋ ๋ณด์์ ํน๋ณํ ์ ๊ฒฝ ์จ์ผ ํฉ๋๋ค.
NFS ๊ตฌ์ถํ๊ธฐ
NFS๋ก ์ฌ์ฉํ ๊ฐ์ ๋จธ์ (192.168.0.165)๊ณผ NFS๋ฅผ ๋ง์ดํธํ ๊ฐ์ ๋จธ์ (192.168.0.170), ์ด 2๋๋ฅผ ์ค๋นํฉ๋๋ค
๊ฐ์ ๋จธ์ ์ OS๋ ubuntu20์ ๋๋ค.
NFS VM(192.168.0.165)
์ฐ์ NFS์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํด์ค๋๋ค.
$ apt install nfs-common nfs-kernel-server portmap
NFS๋ก ์ฌ์ฉํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ ํ ๊ถํ์ 777๋ก ์ค๋๋ค.
$ mkdir /home/nfs
$ chmod 777 /home/nfs/
๊ณต์ ํ๋ ค๋ ๋๋ ํ ๋ฆฌ์ ์๋ฒ ์ค์ ์ ํด์ค๋๋ค.
$ vim /etc/exports
vim ์๋ํฐ๋ก exports ์ ์ฐ ๋ค ์๋์ ๊ฐ์ด ๋๋ ํฐ๋ฆฌ์ ์๋ฒ ์ค์ ์ ํด์ค๋๋ค. 192.168.0.170์ ๊ฐ์๋จธ์ ์์ NFS๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์์ฑํด์ค๋๋ค.โ
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/home/nfs 192.168.0.165(rw,sync,no_subtree_check) 192.168.0.170(ro,sync,no_subtree_check)
#<์ํ๋ ๋๋ ํ ๋ฆฌ> <๊ณต์ ๋์ ์ฅ์น(์์ดํผ)>(์ต์
1,์ต์
2)
#์ต์
1์๋ ro(read-only), rw(read-write)๋ฑ์ด ์์
์์ฑ ํ nfs-server๋ฅผ ์ฌ์์ํด์ค๋๋ค.
$ service nfs-server restart
์คํ์ด ์๋์๋์ง ํ์ธํด์ค๋๋ค.
$ showmount -e 127.0.0.1
ํ ์คํธ ํ๊ธฐ ์ํ์ฌ /hom/nfs ๊ฒฝ๋ก์ ์์์ ํ์ผ์ ๋ง๋ญ๋๋ค.
$ echo 'test' > /home/nfs/test.txt
NFS๋ฅผ ์ฌ์ฉํ VM(192.168.0.170)
NFS ์๋ฒ๋ฅผ ๋ง์ดํธํฉ๋๋ค.
$ mount -t nfs 192.168.0.165:/home/nfs /mnt
NFS ์๋ฒ์์ ๋ง๋ test.txt๊ฐ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
$ cat /mnt/test.txt
์ฟ ๋ฒ๋คํฐ์ค์์ ๋ณผ๋ฅจ์ ์ฌ์ฉํ ๋ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์ผ ๊ฒฝ์ฐ NFS๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด๋ผ๋ฉด AWS์์ ์ ๊ณตํด์ฃผ๋ EFS๋ฅผ ์ด์ฉํ์ฌ ๋ณผ๋ฅจ์ ํ๋์ ๋ง์ดํธ ํ ์ ์์ต๋๋ค.
์ด์ NFS ์๋ฒ ๊ตฌ์ถ์ ๋ํด ์์๋ณด์์ต๋๋ค.
*์ถ๊ฐ
apiVersion: v1
kind: Pod
metadata:
name: nfs-httpd
spec:
containers:
- image: httpd
name: web
volumeMounts:
- mountPath: /usr/local/apache2/htdocs
name: nfs-volume
readOnly: true
volumes:
- name: nfs-volume
nfs:
server: 192.168.0.165
path: /home/nfs
์ฐธ๊ณ ๋ก ํ๋์์ nfs๋ฅผ ๋ณผ๋ฅจ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์์ ๊ฐ์ด yaml ํ์ผ์ ์์ฑํ์๋ฉด ๋ฉ๋๋ค.