구성 목적 : WSL로 구성한 Linux에서 Windows로 파일을 옮기려고 할 때 기존에 구축했던 FTP 방식이 아닌 NFS 방식으로 해보기 위함
추가적으로 WSL에서는 기본적으로 Windows 파일 시스템과 연동되게끔 지원해줌
환경 : WSL Linux, Windows
01. NFS_Server 설정 (Linux)
02. NFS_Client 설정 (Windows)
NFS
- Network File System
- Linux(Unix) 컴퓨터끼리 저장 공간을 공유할 수 있도록 해주는 시스템
NFS 서버 구현
NFS Server 구성
## server
# nfs 관련 패키지 설치
apt-get install -y nfs-common nfs-kernel-server rpcbind
# 공유 디렉터리 생성
mkdir /share
# nfs 설정 파일
vi /etc/exports
(공유 폴더) (접속을 허용할 IP, 읽고 쓸 수 있고(rw), 자동으로 동기화 되도록(sync))
/share 192.168.111.*(rw,sync)
cat /etc/exports
# /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)
#
/share 169.254.76.191(rw,sync)
# 공유 폴더 권한 주기
chmod 707 /share/
# test 파일 생성
root@LGE-corp:~# echo "test" >> /share/test.txt
root@LGE-corp:/share# cat test.txt
test
# nfs 서버 재시작
systemctl restart nfs-server
systemctl enable nfs-server
# exports 설정 확인
root@LGE-corp:/share# exportfs -v
/share 169.254.76.191(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
NFS Client 구성
## client
# 필요 패키지 설치
apt-get install -y nfs-common
# 서버와 공유되고 있는 디렉토리에는 무엇이 있는지 확인(서버에 /etc/exports 설정 관련)
showmount -e [serverIP]
# client에서도 마운트할 디렉터리 생성
mkdir myShare
# 마운트 : 공유 디렉터리(/share) --- 마운트 디렉터리(/myShare)
mount -t nfs [serverIP]:/share /myShare
이렇게 하면 /myShare에 저장한 데이터는 실제로 /share에 저장됨
재부팅해도 마운트가 유지되도록 설정
# client
vi /etc/fstab
[파일_시스템_장치] [마운트_포인트] [파일_시스템_종류] [옵션] [덤프] [파일체크_옵션]
[serverIP]:/share /home/ubuntu/myShare nfs defaults 0 0
재부팅하고 myShare 폴더에 ls 했을 때 share에 저장된 파일이 있는지 확인
windows에서 확인하는 방법
1. Windows 기능 켜기/끄기에서 NFS용 서비스 > NFS용 클라이언트 켜기
2. 터미널에서 아래 명령어 입력
C:\Users\GaeunLee> mount 172.23.186.244:/share *
* 네트워크 오류 발생
문제 상황)
- WSL 환경에서 Ubuntu22.04를 구성했고, 거기에 NFS 서버를 설치함
- /etc/exports에는 접속하려는 내 로컬 IP를 입력하고 windows 명령 프롬프트에서 mount를 하려고 하니 네트워크 오류가 발생함
root@LGE-corp:/share# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.23.186.244 netmask 255.255.240.0 broadcast 172.23.191.255
inet6 fe80::215:5dff:feba:9f3d prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:ba:9f:3d txqueuelen 1000 (Ethernet)
RX packets 1052 bytes 917273 (917.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 394 bytes 66658 (66.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 68 bytes 5707 (5.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 5707 (5.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
C:\Users\GaeunLee>mount 172.23.186.244:/share *
네트워크 오류 - 53
자세한 내용을 보려면 'NET HELPMSG 53'을(를) 입력하십시오.
/etc/exports에 적는 ip를 *로 했더니 연결 됨
# WSL
root@LGE-corp:/share# cat /etc/exports
# /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)
#
/share *(rw,sync)
# Windows
C:\Users\GaeunLee>mount -o anon \\172.23.186.244\share Z:
Z: 현재 \\172.23.186.244\share에 성공적으로 연결되어 있습니다.
명령을 완료했습니다.
C:\Users\GaeunLee>mount
로컬 원격 속성
-------------------------------------------------------------------------------
Z: \\172.23.186.244\share UID=-2, GID=-2
rsize=1048576, wsize=1048576
mount=soft, timeout=0.8
retry=1, locking=yes
fileaccess=755, lang=KSC5601
casesensitive=no
sec=sys
해당 결과를 봤을 때 /etc/exports에 적는 ip가 windows에 ip인데, wsl 네트워크 중에 잘못 이해한 부분이 있지 않나 싶음
+ 추가적으로 공부할 때 참고할 자료
https://mulmandu17.tistory.com/53
참고자료
- 이것이 우분투 리눅스다 14장 NFS 서버 구축
'OS > Linux' 카테고리의 다른 글
[Linux] FTP 서버 구성, Filezilla (0) | 2024.09.19 |
---|---|
[Linux] Ubuntu 22.04 ufw 방화벽 설정 후 ssh port 22: Operation timed out 해결 (0) | 2024.02.27 |
[Linux] curl : (7) Failed to connect to localhost port 8080 해결 (1) | 2024.02.14 |
[Linux] SCP Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 해결 (4) | 2024.02.13 |