0부터 시작하는 Linux 공부 - NFS

Jaehong Lee·2022년 7월 20일
0
post-thumbnail
post-custom-banner

1. NFS

  • Network File System(NFS) 프로토콜은 네트워크 연결을 통해 파일 시스템으로 원격지에서 접근이 가능하도록 해 주는 프로토콜이다. 클라이언트는 해당 공유 파일 시스템을 마치 로컬에 있는 것 처럼 사용할 수 있는 “Block Storage” 의 기능을 구현시켜 줄 수 있게 된다

  • 우리는 centos7을 nfs server 로, centos8을 nfs client 로 사용할 것 이다

  • AWS 에서는 이 NFS 를 EFS 라고 한다

2. 리눅스의 DISK

  • sr0 는 첫번째 SCSI CD-ROM 의 이름
  • Disk 타입
  • IDE , SATA : 가격이 저렴하고, 확장성이 떨어진다
  • SCSI ( 스카시 ) : 가격이 비싸지만, 확장성이 좋다
  • linux는 SCSI 타입의 DISK 를 사용. 이 DISK는 sda라고 부르며 /dev/sda에 위치. 하나 더 설치하면 sdb 라고 부른다. 이 물리 장치는 직접 사용이 불가하며, mount를 통해 논리 장치 ( 특정 디렉토리 ) 를 통해 사용한다
  • 참고 ) https://www.debian.org/releases/wheezy/i386/apcs04.html.ko

3. NFS 공유 폴더 생성

  • 공유할 디렉토리를 하나 생성한다
  • 접근 제어 설정 - 소유주, 그룹, 그 외 일반 사용자 모두 다 /public 에 접근하여 파일 읽기 / 쓰기가 가능하게 해야한다
    • rw- 소유주 : 디렉토리를 읽고, 새로운 파일을 업로드 하는 것이 가능하다
    • 우리는 chmod777 로 설정할 것 이다
    • 각 숫자는 소유주 , 그룹 , 다른 사용자를 의미하며 7은 r,w,x 모두 허용하는 것 이다. 8진법 퍼미션 값 이다

  • 디렉토리에 파일을 하나 생성하고, nfs-utils 를 설치한다. 이를 통해 nfs 명령어를 사용할 수 있다. nfs-utils 에는 클라이언트 / 서버 SW 가 들어있다

    • centos 8 에서도 설치해준다

4. 서버 설정

  • 다음 파일을 연다. /etc/exports 파일은 NFS 서버의 기본 구성이다. 이것은 NFS 클라이언트와 공유할 디렉토리를 지정하는 데 사용하는 파일, 즉, 서버가 클라이언트에 반출하는 모든 디렉토리를 표시 및 설정하는 파일이다
    • public 디렉토리에 대해 211.183.3.0/24 대역에 해당하는 user들이 접속할 수 있게 해주는 설정
    • no_root_squash : 원격지에 있는 사용자가 공유 디렉토리에서 파일을 만들었을 경우, 서버 입장에서 해당 파일을 누가 만든 것으로 간주하는가? 만약 root_squash 라고 하면 nfsnobody 가 만든 것이며, no_root_squash 라고 하면 root 가 만든 것이라고 한다
    • rw : 읽고, 쓰기만 가능
    • sync : 동기화

  • nfs-server를 재실행 시키고, 부팅시 자동으로 실행되게 설정

5. 클라이언트에서 접속

  • 해당 주소에서 export된 디렉토리의 목록을 출력한다. 211.183.3.0/24 대역에게 제공하는 public 디렉토리가 출력된다
  • mount할 디렉토리를 만들고, 211.183.3.201의 public과 클라이언트의 remote 를 mount 해준다. -t는 타입 옵션으로 타입을 nfs라고 해주는 것이다
  • 안에 파일을 확인해보면, public 안에 있는 파일을 확인할 수 있다
  • 파일을 수정해준다
  • 서버에서 확인해 보면, 수정 내용이 반영된 것을 확인할 수 있다

허나, 이 mount 정보는 재부팅시 사라진다. 부팅시 자동으로 mount 되게 하는 설정은 다음 글의 4 단락을 확인하자

https://velog.io/@lijahong/0%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-Linux-%EA%B3%B5%EB%B6%80-%EB%AC%BC%EB%A6%AC-%EC%9E%A5%EC%B9%98%EB%A5%BC-%EC%B6%94%EA%B0%80%ED%95%B4%EB%B3%B4%EC%9E%90

6. 실습

  1. 전원 종료
  2. nic 를 vmnet10 에서 bridge (vmnet0) 으로 변경
  3. ip 주소는 192.168.1.1xx 로 변경하고, 기본 게이트웨이와 dns 서버를 등록
  4. ping으로 www.google.com 과 연결 확인 / ping으로 mainserver 라고 했을 때 192.168.1.199 로 부터 응답이 와야한다
  5. nfs 서버에서 /public 에 0720.pem 파일이 있을 것이다. 이 파일로 원격 접속한다. 이를 이용해 자신의 홈 디렉토리인 /home/ec2-user 로 접근하자
  6. ec2-user로 접근해서 홈 디렉토리에 gildong.txt 파일을 만든다

  • vmnet 0 로 변경

  • ip 및 게이트웨이 변경

  • mainserver 등록 및 통신 확인

  • 199였다

  • mount 해준다. 안에 pem 파일로 ssh 연결해보자

  • ec2-user만 허용됬으므로, 계정을 바꿔준다

  • ssh 연결 후, 자신의 이름.txt 파일을 만들어 저장했다

    • /는 root라 권한이 없다. cd를 통해 홈 디렉토리 ( ~ ) 로 들어가서 작업을 수행하자
  • 홈 디렉토리에 어떻게 접근하는 것 인가? ec2-user라는 계정을 199 서버와 본인 서버에 똑같이 생성했으므로 같은 계정이다. 따라서 해당 계정으로 접근하면, 해당 서버의 ec2-user 계정이 된 것이고, 따라서 해당 계정의 홈 디렉토리로 접근 가능한 것 이다

profile
멋진 엔지니어가 될 때까지
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 7월 20일

ec2-user 로그인 하실떄 꼭 계정 동일하게 생성해서 변경 후 접근하실 필요는 없습니당.
ssh 에서 유저 옵션을 주시면 됩니다.

[1] ssh [유저명]@[서버 IP] -i [키파일]

-> ssh ec2-user@192.168.1.199 -i 0720.pem

[2] ssh -l ec2-user [서버IP] -i [키파일]
-> ssh -l ec2-user 192.168.1.199 -i 0720.pem

이런식으로용 ~!

정리 잘보고있습니다 ㅎㅎ

참고로 2번은... 안 해봐서 명령어 옵션 순서는 다를 수도 있습니다.

답글 달기