본문 바로가기
AWS Cloud School 8기/서버가상화_클라우드 이미지

NFS 설명+실습 / (status 이상하게 자꾸 까먹어서 적어봄)/ 마운트 해제

by YUNZEE 2025. 1. 22.
728x90
NFS(Network File System)

- 여러 대의 컴퓨터가 같은 파일을 공유할 수 있도록 해주는 시스템

- 다른 컴퓨터에 있는 폴더를 내 컴퓨터에서 마치 내 폴더처럼 사용할 수 있는 기술임 

 

Mount란?

- 운영체제에서 저장 장치를 연결하여 사용할 수 있도록 하는 과정임

- 외장 하드나 USB 같은 저장 장치를 OS가 인식하고 사용할 수 있도록 연결하는 것

👉 비유하면? 마운트는 마치 새로운 USB를 컴퓨터에 꽂고 인식시키는 과정과 같음

- 윈도우에서는 Plug & Play를 통해. 장치를 연결하기만 하면, 그 장치에 접근하기 위한 논리적인 경로가 자동으로 생성이 되어 매칭이 됨(=마운트)

- 하지만 리눅스는 일반적으로 수동으로 마운트를 해줌

- df(disk free) -h : 휴먼이 읽기 편하게.

- / : 최상위 디렉터리에  

- mount: 특정장치에 연결

 

- 기본포트 2049 포트, 추가적으로 RPC 111번 포트

- 추가적으로 데이터를 송수신할 때 랜덤하게 포트가 부여

- 조금 더 자세하게 설명하자면

-> 서버 a에 모든 원본 데이터가 저장되어 있다

-> b, c 서버에 a서버에 있는 동일한 데이터를 복사한다.

 -> b서버를 사용하지 못하는 상황이 생겨도 c서버가 있기 때문에 괜찮다.

 

실습
3.30부터 설정

[root@server ~]# sed -i s/ 구분자 SELINUX=enforcing 바뀌기 전/구분자 SELINUX=disabled 바뀐/ 구분자 g /etc/selinux/config 파일 이름

 

 

[root@server ~]# ls -al / | grep shared
drwxr-xr-x    2 root root    6 Jan 20 21:10 shared

d: 디렉토리

r: 읽기

w: 쓰기

x: execute

root: thdbwk

root: 소유자가 속한 그룹

r w x r - x r - x 

 111  101  101(2비트)

   7     5     

 

[root@server ~]# chmod -R 777 /shared

[root@server ~]# ch change mod mode -R하위 디렉토리, 파일 포함 777 모든 권한 /shared경로

 

[root@server ~]# yum install -y nfs-utils

[root@server ~]# vi /etc/exports

빈 파일 나오는 게 맞음

새로 입력해서

211.183.3. *은 전체에 읽고 쓰기 권한을 준다는 의미임

 

[root@server ~]# exportfs -r

- 설정 값 반영

 

[root@server ~]# systemctl restart nfs-server
[root@server ~]# systemctl enable nfs-server

- nfs 서버 동작

 

[root@server ~]# showmount -e

- 공유 대상 확인

- 추가로 <대상>을 입력할 수 있음

- 공유 여부 확인

NFS clinet 구성 / 3.10

[root@server2 ~]# sed -i s/SELINUX=enforcing/SELINUX=disable/g /etc/selinux/config
[root@server2 ~]# reboot

 

[root@server2 ~]# systemctl stop firewalld
[root@server2 ~]# systemctl disable firewalld

 

[root@server2 ~]# cat <<EOF> /etc/yum.repos.d/CentOS-Base.repo

 

yum install -y nfs-utils

- nfs 클라이언트 역할 패키지 설치.

- nfs 서버의 주소를 통해 확인.

 

[root@server2 ~]# mount -t nfs 211.183.3.30:/shared /remote

[root@server2 ~]# mount -t 타입 nfs 211.183.3.30:/shared 원본 /remote 마운트포인트

-> remote로 접근 시 shared가 보임

 

[root@server2 ~]# ls /remote
[root@server2 ~]# touch /remote/test.txt
[root@server2 ~]# echo 'testfile' > /remote/test.txt

 

- 내용물 확인 가능

 

다시 다른 서버로 넘어가서

- shared디렉토리에 test.txt가 잘 복사된 걸 확인할 수 있음

마운트가 잘 되어 있는 걸 확인할 수 있음

 

- 재부팅하면 마운트가 풀린 걸 확인할 수 있음

 

[root@server2 ~]# vi /etc/fstab

211.183.3.30:/shared    /remote                 nfs     defaults        0 0

- 앞의 3개의 항목만 중요하고, 뒤에 3개는 통상적으로 사용함

- 이거 설정하면 재부팅 시에도 안 풀림

 

 

[root@server2 ~]# mount -t nfs 211.183.3.30:/shared /remote #마운트 연결
[root@server2 ~]# umount /remote #마운트해제
[root@server2 ~]# df -h | grep remote # 하면 풀린 걸 확인 가능

 

실습 2 
srv2에서도 /remote를 통해 srv3의 /shared에 접근 가능하도록 설정해 보세요.

yum install -y nfs-utils

 

showmount -e 211.183.3.30

 

mkdir /min
chmod 777 -R /min 
vi /etc/exports

 

실습 3
srv3의 /min이라는 폴더를 만들어서 srv1과 srv2의 /chan으로 접근 가능하게 해 보세요

재부팅 시에도 마운트가 유지되게 하세요!

mkdir /min

chmod 777 -R /min

vi /etc/exports

- /min에는 모두 접근 가능하도록

 

exportfs -r

- 적용

 

mkdir /chan

mount -t nfs 211.183.3.30:/min /chan

 

vi /etc/fstab

 

 

 

실습 3 (내 짝꿍은 보시오)

서버는 꼭 새로 만드세요!

우리 회사는 지금 rapa.com 도메인을 갖고 있다.

회사 내부 서버실에는  www.rapa.com으로 접속 가능한 웹서버와 nfs.rapa.com으로 접속 가능한 nfs 서버, 이를 위한 dns.rapa.com 도 갖고 있다.

1. client가 /remotestg 경로를 통해 nfs 서버에 접근하여 /originstg의 파일에 접근 가능하도록 구성하시오.

2. nfs-server의 /web이라는 경로에 있는 index.html을 웹서버에 배포하고 싶다. www.rapa.com으로 접속했을 때 간단한 index.html 파일이 뜨도록 구성하세요. index.html 파일의 내용은 ‘aws8 파이팅!’로 하세요! nfs-server의 /web이라는 경로에 있는 파일인 index.html 파일은 언제든지 변경가능하고, 실시간으로 변경사항이 웹서버에 적용되어야 한다.

 

위의 질문을 분석해 보자면

 

서버는 꼭 새로 만드세요!

 

우리 회사는 지금 rapa.com 도메인을 갖고 있다.

회사 내부 서버실에는  www.rapa.com으로 접속 가능한 웹서버nfs.rapa.com으로 접속 가능한 nfs 서버, 이를 위한 dns.rapa.com 도 갖고 있다.

 

1. vm 새로 만들기

공인 IP가 아닌 내부 IP를 사용, dns구성할 때 rapa.com도메인을 갖고 있음.

www.rapa주소 하나 만들기 위해 vm새로 만들기

nfs.rapa주소 하나 만들기 위해 vm새로 만들기

dns.rapa주소 하나 만들기 위해 vm새로 만들기

 

2. GNS3 설정

1. 여기서 내부 IP를 사용하니까 외부랑 연결을 해줘야 됨(yum 하기 위해서)

GNS3를 활용해서 ping 8.8.8.8이 가능하도록 route설정해 주기(in, out 설정도 해주는 게 맞지만 안 해줘도 ping은 잘 넘어감)

 

ip add 해주고

ip route 0.0.0.0 0.0.0.0 211.183.3.2

하면 ping 넘어감

3. DNS 설정

 

도메인 설정

먼저 국룰 설정

[root@server2 ~]# sed -i s/SELINUX=enforcing/SELINUX=disable/g /etc/selinux/config
[root@server2 ~]# reboot

 

[root@server2 ~]# systemctl stop firewalld
[root@server2 ~]# systemctl disable firewalld

 

[root@server2 ~]# cat <<EOF> /etc/yum.repos.d/CentOS-Base.repo

> 복붙 할 내용 https://yunz-story.tistory.com/entry/SEIinuxSEcure-linux-%EC%A0%95%EC%A0%81-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%B4%88%EA%B8%B0%EC%85%8B%ED%8C%85-%EB%B0%A9%EB%B2%95-%EB%82%B4-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EC%A0%95%EB%B3%B4tcpdump%EC%84%A4%EC%B9%98SEIinux-%EC%B6%94%EA%B0%80%EB%B3%B4%EC%95%88

> EOF

 

yum install -y bind bind-utils 

- 설치/ Complete 나옴

 

[root@dnsrapa ~]# vi /etc/named.conf

 

[root@dnsrapa ~]# vi /etc/named.rfc1912.zones


[root@dnsrapa ~]# vi /var/named/rapa.com.db

 

client 안 해줘도 된다는 소식을 들었지만,,, 혹시 모르니까 해줌


[root@dnsrapa ~]# systemctl restart named

[root@dnsrapa ~]# systemctl enable named

- 아주 중요하죠!

 

여기서 우리는 8.8.8.8을 DNS 주소인 10.10.1.30으로 변경해 줘야 됨

왜? dns파일에 rapa.com의 하위 디렉터리 설정을 해줬기 때문에 그 영역에 맞는 dns파일인 IP를 10.10.1.30으로 설정해 줘야 됨

[root@dnsrapa ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32

#DNS1="10.10.1.30"으로 변경
[root@dnsrapa ~]# systemctl restart network

[root@dnsrapa ~]# cat /etc/resolv.conf

 

3. NFS 설정

1. client가 /remotestg 경로를 통해 nfs 서버에 접근하여 /originstg의 파일에 접근 가능하도록 구성하시오.

- client서버와 nfs서버를 연결해 줘야 됨(마운트)

먼저 nfs는  /originstg

[root@nfs ~]# mkdir /originstg /web 

-> 파일 한 번에 두 개 만들 수 있음(3,4번 같이해줌)

 

먼저 nfs부터 설정

국룰 설정부터 해주고

yum install -y nfs-utils
# Complete 확인하고


vi /etc/exports

 /originstg          *(rw) 

같이 만들어줘도 됨

 

chmod 777 -R /originstg

exportfs -r

# 밑에 아무것도 안 생기면 성공

 

systemctl restart nfs-server
systemctl enable nfs-server

showmount -e

 

다음으로 client는 /remotestg 설정

국룰 설정해 주고

 

yum install -y nfs-utils

vi /etc/sysconfig/network-scripts/ifcfg 

-> 내가 안내받고 싶은 서버로 변경

systemctl restart network

 mount -t nfs nfs.rapa.com:/originstg /remotestg

4. nfs와 www 연결 -> DNS 설정 

 

2. nfs-server의 /web이라는 경로에 있는 index.html을 웹서버에 배포하고 싶다.

-> nfs-server의 서버에서 /web이라는 경로의 index파일을 만들어야 됨

 

www.rapa.com으로 접속했을 때 간단한 index.html 파일이 뜨도록 구성하세요.

-> 다른 서버인 www.rapa에서 접속했을 때 index.html을 뜨도록 구성해라

 

index.html 파일의 내용은 ‘aws8 파이팅!’로 하세요!

->. html 파일에 echo를 활용해서 aws8 파이팅! 을 불러와라

 

nfs-server의 /web이라는 경로에 있는 파일인 index.html 파일은 언제든지 변경가능하고, 실시간으로 변경사항이 웹서버에 적용되어야 한다.

-> NFS를 사용하여 항상 client와 nfs가 연동된 상태를 유지시켜 줘라

 

-> 웹서버는 웹디렉토리를 갖고 있고, 웹루트디렉토리를 nfs서버의 /web이라는 경로에 마운트를 하면 됨

 

nfs 서버 

yum install -y httpd

systemctl restart httpd

 

mkdir /web

 

 

chmod -R 777 web

 

ls -al | grep web

web에 echo aws8 파이팅! > /var/www/html/index.html

 

www.서버

yum install -y httpd

systemctl restart httpd

 

mount -t nfs nfs.rapa.com:/web /var/www/html

-> mount -t nfs nfs.rapa.com:/web 원본 /var/www/html 마운트포인트

 

*******html 파일은 nfs에 만들어줘야 됨******

nfs web에 파일을 만들어줌 echo aws파이팅

마운트포인트를 해주면 www에 파일 공유된 상태로 바뀜

그러면 어디든 www나 nfs에 정보를 수정할 수 있음

 

단, www에  html 파일을 만들고 마운트를 해주는 경우에는 www html파일은 마운트가 되지 않고 거기 www에 있게 됨 그래서 web에 html파일을 만들어주고 마운트를 해줘야 됨

 

/var/www/html이 바라보는 대상이 웹서버의 스토리지에서 nfs.rapa.com:/web으로 변경됨

다시 마운트를 풀고 /var/www/html을 보면 기존에 i초ndex.html 파일이 존재하는 걸 확인 가능함

- 바라보는 대상이 변경이 될 수 있지만, 변경이 됐다고 해서 기존의 내용이 사라지는 건 아님

 

client 서버

- client 서버에서 www.rapa.com에 파일을 볼 수 있는 이유는?

DNS 연결을 해줬기 때문에 볼 수 있지만 수정은 할 수 없음.

 

*********DNS설정을 www/client/nfs/dns 다 해줘야 되나?***********

- client는 안 하는 게 맞음

끝!

오늘의 오류 발생/ 해결 방안

뭔가 잘 안된다면 ping이 잘 가는지 체크!!

restart  named 했는지 체크!! 

728x90