728x90
반응형
NFS 란?
NFS(Network File System)는 여러 컴퓨터 간에 파일을 공유하기 위한 분산 파일 시스템 프로토콜입니다. NFS는 클라이언트-서버 모델을 기반으로 하며, 클라이언트는 네트워크를 통해 NFS 서버의 파일 시스템에 액세스할 수 있습니다. 이를 통해 여러 사용자가 동일한 파일이나 디렉터리를 공유하고, 파일 시스템 자원을 효율적으로 활용할 수 있습니다.
NFS 동작 원리
- 서버 설정: 먼저 파일을 공유할 서버에서 NFS를 설정해야 합니다. 서버의 파일 시스템 중 NFS로 공유하고자 하는 디렉터리를 선택하고, 이 디렉터리를 /etc/exports와 같은 설정 파일에 등록합니다. 이 설정 파일은 클라이언트에게 공유 디렉터리의 경로와 액세스 권한을 제공합니다.
- 클라이언트 마운트: NFS 클라이언트에서는 NFS 서버의 공유 디렉터리를 마운트하여 사용할 수 있습니다. 클라이언트에서는 NFS 마운트 포인트를 생성하고, 이를 통해 서버의 공유된 디렉터리에 액세스할 수 있습니다.
NFS 동작 원리
- 파일 공유: NFS는 여러 사용자가 동일한 파일이나 디렉터리를 공유할 수 있도록 합니다. 이를 통해 여러 사용자가 동일한 파일에 접근하여 작업할 수 있습니다.
- 중앙 관리: NFS를 사용하면 파일이 중앙 서버에 저장되므로 관리 및 유지 보수가 간단해집니다. 파일의 한 복사본을 유지하므로 데이터 일관성도 쉽게 유지할 수 있습니다.
- 데이터 백업: NFS를 사용하여 클라이언트에서 중앙 서버로 데이터를 백업할 수 있습니다. 이를 통해 중앙화된 백업 시스템을 유지하고, 데이터를 보호할 수 있습니다.
- 클라우드 스토리지: 클라우드 환경에서도 NFS는 파일 공유 및 저장에 널리 사용됩니다. 클라우드에서 NFS를 사용하면 여러 가상 머신 간에 데이터를 공유하고, 파일 시스템을 유연하게 확장할 수 있습니다.
NFS 서버 설치
centos 7.9 환경에서 NFS 설치 하는 방법에 대해 알아보겠습습니다.
nfs 패키지 설치
#설치 유무 확인
rpm -qa | grep nfs-utils
#nfs 팩키지 설치
yum install nfs-utils
서비스 시작
systemctl enable nfs-server
systemctl start nfs-server
서비스 상태 확인
[root@mysvr:/root]$ systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since 화 2024-03-12 16:20:39 KST; 23s ago
Process: 2523 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 2506 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 2504 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 2506 (code=exited, status=0/SUCCESS)
Tasks: 0
CGroup: /system.slice/nfs-server.service
3월 12 16:20:39 mysvr systemd[1]: Starting NFS server and services...
3월 12 16:20:39 mysvr systemd[1]: Started NFS server and services.
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since 화 2024-03-12 16:20:39 KST; 23s ago
Process: 2523 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 2506 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 2504 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 2506 (code=exited, status=0/SUCCESS)
Tasks: 0
CGroup: /system.slice/nfs-server.service
3월 12 16:20:39 mysvr systemd[1]: Starting NFS server and services...
3월 12 16:20:39 mysvr systemd[1]: Started NFS server and services.
마운트 디렉토리 생성
mkdir share_disk
chmod 777 /share_disk
마운트 설정
- /etc/exports 파일 수정 및 적용
- 수정된 파일 내용 적용: exportfs -r
/share_disk 192.168.116.*(rw,no_root_squash,sync)
- /share_disk: 공유할 디렉터리의 경로입니다.
- *: 모든 클라이언트에게 액세스를 허용함을 나타냅니다.
- rw: 읽기 및 쓰기 액세스를 허용하는 옵션입니다.
- sync: 변경 사항을 디스크에 즉시 동기화하는 옵션입니다.
- no_root_squash: 클라이언트의 root 사용자가 파일에 액세스할 때 해당 사용자를 시스템의 root로 매핑하지 않음을 나타내는 옵션입니다.
- async: 변경 사항을 비동기적으로 디스크에 동기화합니다.
- no_root_squash: 클라이언트의 root 사용자를 서버의 root 사용자로 매핑하지 않습니다.
- root_squash: 클라이언트의 root 사용자를 서버의 nfsnobody 사용자로 매핑합니다.
- all_squash: 모든 사용자를 서버의 nfsnobody 사용자로 매핑합니다.
적용된 마운트 설정 확인
showmount -e
exportfs -v
NFS 클라이언트 설정
마운트 디렉토리 생성
mkdir nfs_share_disk
chmod 777 nfs_share_disk
NFS 설치
#설치 유무 확인
rpm -qa | grep nfs-utils
#nfs 팩키지 설치
yum install nfs-utils
#서비스 시작
systemctl enable nfs-server
systemctl start nfs-server
마운트
mount -t nfs 192.168.116.10:/share_disk /nfs_share_disk
[root@mysvr:/root]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 26G 6.3G 20G 25% /
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home ext2 25G 15G 9.3G 61% /home
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
192.168.116.10:/share_disk nfs4 26G 6.5G 20G 25% /nfs_share_disk
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 26G 6.3G 20G 25% /
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home ext2 25G 15G 9.3G 61% /home
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
192.168.116.10:/share_disk nfs4 26G 6.5G 20G 25% /nfs_share_disk
마운트 영구 적용 (/etc/fstab)
192.168.116.10:/share_disk /nfs_share_disk nfs rw,noatime,sync 0 0
- 마운트 사용 정의는 아래와 같습니다.
<device> <mount_point> <filesystem_type> <mount_options> <dump> <pass>
- <device>: 마운트할 디바이스의 경로 또는 UUID입니다. 이것은 보통 디스크 파티션 또는 네트워크 파일 시스템의 주소입니다.
- <mount_point>: 디바이스가 마운트될 디렉터리의 경로입니다.
- <filesystem_type>: 파일 시스템의 종류를 나타냅니다. 예를 들어, ext4, nfs, ntfs 등이 있습니다.
- <mount_options>: 마운트 옵션을 나타냅니다. 읽기 전용으로 마운트할지 읽기/쓰기로 마운트할지 등을 정의할 수 있습니다.
-
- rw / ro:
- rw: 읽기/쓰기 모드로 파일 시스템을 마운트합니다.
- ro: 읽기 전용 모드로 파일 시스템을 마운트합니다.
- auto / noauto:
- auto: 부팅 시 자동으로 마운트됩니다.
- noauto: 수동으로 마운트해야 합니다. 부팅 시 자동으로 마운트되지 않습니다.
- exec / noexec:
- exec: 이 파일 시스템에서 바이너리 실행 파일을 실행할 수 있습니다.
- noexec: 이 파일 시스템에서 바이너리 실행 파일을 실행할 수 없습니다.
- user / nouser:
- user: 일반 사용자도 마운트 및 언마운트를 할 수 있습니다.
- nouser: 일반 사용자는 마운트 및 언마운트를 할 수 없습니다. 관리자 권한이 필요합니다.
- sync / async:
- sync: 변경 사항을 디스크에 즉시 동기화합니다. 안정성을 높이지만 성능이 저하될 수 있습니다.
- async: 변경 사항을 비동기적으로 디스크에 동기화합니다. 성능을 높이지만 안정성이 낮아질 수 있습니다.
- defaults: 기본 마운트 옵션을 사용합니다. 일반적으로 rw, suid, dev, exec, auto, nouser, async와 같은 옵션을 포함합니다.
- uid, gid: 특정 사용자 ID 또는 그룹 ID에 속하는 사용자 또는 그룹에 대해 마운트된 파일 시스템을 마운트합니다.
- umask, dmask, fmask: 마운트된 디렉터리 또는 파일에 대한 권한 마스크를 설정합니다.
- noatime, relatime, strictatime: 파일 시스템에 대한 액세스 시간을 변경하는 옵션입니다. 성능을 높이기 위해 noatime을 사용할 수 있습니다.
- noacl, acl: Access Control Lists (ACL)를 사용할지 여부를 지정합니다.
- rw / ro:
-
- <dump>: 백업 프로그램이 시스템을 백업할 때 이 파일 시스템을 백업해야 하는지 여부를 나타냅니다. 일반적으로 0으로 설정되어 있습니다.
- <pass>: 시스템 부팅 시 파일 시스템을 체크해야 하는 순서를 나타냅니다. 일반적으로 1로 설정되어 있습니다.
NFS 연동 테스트
- 각 nfs 설치된 서버에서 파일을 생성하면 어떤 노드에서도 생성하더라도 파일을 공유할수 있게된다.
728x90
반응형