SSHFS 설정방법
uname -r (커널버젼확인 서브버젼까지확인할것!!)
# wget http://dag.wieers.com/rpm/packages/fuse-sshfs/fuse-sshfs-1.9-1.el5.rf.i386.rpm
# wget http://dag.wieers.com/rpm/packages/fuse/fuse-2.7.3-1.el5.rf.i386.rpm
# wget http://dl.atrpms.net/all/fuse-kmdl-2.6.18-53.1.19.el5-2.7.3-8_9.el5.i686.rpm
상기 경로에서 없을시 http://rpm.pbone.net 에서 fuse-kmdl RHEL5 용으로 찾아서 설치할것
# rpm -ihv fuse-*
1. sshfs와 FUSE 개요
얼마전에 ‘Redhat Enterprise Linux securely mount remote Linux / UNIX directory or file system using SSHFS ( http://www.cyberciti.biz/tips/rhel-centos-mounting-remote-filesystem-using-sshfs.html )’ 제목의 글을 봤다.
예전에도 sshfs에 대한 글들은 봤으나 사용은 해보지 않다가 scp로 파일 복사를 자주 해야했던 최근 일을 떠올렸다. 좀 더 편하고 나은 방법이 있는데, 굳이 돌아갈 필요가 뭐가 있겠는가. 일상적인 사용을 위해 하나씩 살펴보았다.
ssh를 통해 원격지 파일시스템을 로컬에 마운트하는 sshfs를 사용하기 위해서는 먼저 FUSE가 필요하다.
FUSE(Filesystem in Userspace)은 커널이 아닌 유저공간에서 구현할 수 있는 파일시스템으로 Linux, FreeBSD, Max OSX(MaxFUSE라고 부릅니다.)에서 사용할 수 있다. 이들 OS에서는 FUSE 기반의 다양한 파일시스템을 맛 볼 수 있다.
– 지금 소개하는 sshfs를 비롯하여,
– 리눅스에서 NTFS파일시스템을 사용하기 위한 ntfsmount,
– 리눅스에서 NTFS파일시스템을 읽고 쓸수 있는 Captive NTFS,
( Captive NTFS에 대해서는 2003년 11월에 ‘리눅스에서 NTFS 파일시스템 읽고 쓰기’ ( http://coffeenix.net/board_view.php?bd_code=120 )란 제목의 글을 써둔게 있으니 참고하기 바란다. )
– NTFS파일시스템을 읽고 쓰는 또다른 드라이버인 NTFS-3G,
– BitTorrent 의 파일형식인 .torrent 를 파일시스템으로 마운트하는 BitTorrent File System,
– 오픈솔라리스의 ZFS 파일시스템을 리눅스에서 사용하기 위한 ZFS on FUSE, ( ‘Google Summer of Code 2006’의 결과물 중 하나 )
– Gmail을 파일시스템처럼 사용하는 GmailFS
등 FUSE로 인해 파일시스템의 확장은 벽이 없어졌다.
FUSE는 현재 리눅서 커널 2.6.14 이상에 공식적으로 포함되어 있지만, 리눅스 2.6.14이상을 쓰지 않아도 된다. 커널에 포함이 안되어 있을 뿐 FUSE 받아서 설치하면 되니깐.
2. FUSE와 sshfs 설치
FUSE와 sshfs 설치는 너무 쉬우니 간단히 설명한다.
http://fuse.sourceforge.net/ 에서 FUSE 소스를 받는다.
리눅스 커널 2.6.9 이상인 경우는 FUSE 2.6.X 버전을 받고, 커널 2.6.9보다 낮고 2.4.21보다 높으면 FUSE 2.5.x 버전을 받으면 된다.
./configure
make
make install
그리고, /etc/ld.so.conf 에 /usr/local/lib 를 넣고 ldconfig 명령을 내려준다.
sshfs를 설치해보자. sshfs 홈( http://fuse.sourceforge.net/sshfs.html )에서 소스를 받는다.
./configure
make
make install
3. sshfs로 마운트하기
sshfs 명령 사용은 간단하다. ssh와 scp 명령과 비슷하다. 다음 명령을 보면 접속할 서버명과 마운트할 포인트만 지정해주면 끝난다.
$ sshfs truefeel@coffeenix:/Data /home/truefeel/mount/master/
Password:
df명령과 mount 명령으로 확인해보자. 마운트가 정상적으로 됐음을 확인할 수 있으나 용량 표시는 정상적으로 표시되지 않았다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
… 생략 …
sshfs#master: 1000G 0 1000G 0% /home/truefeel/mount/master
$ mount
… 생략 …
sshfs#master: on /home/truefeel/mount/master typefuse(rw,nosuid,nodev,large_read,max_read=65536,user=truefeel)
sshfs를 할 때 원격지 ssh서버의 UID와 GID가 로컬 사용자가 다를 경우 액세스가 안되는 경우도 있는데, 이 때는 -o allow_other (NFS에서 /etc/exports파일의 all_squash 옵션으로 보면 됨)이나 -o uid=UID, -o gid=GID 옵션으로 해결 할 수 있다.
sshfs 명령 실행중에 발생할 수 있는 2가지 에러에 대해 살펴보자.
1) sshfs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory
libfuse.so.2 공유 라이브러리를 찾지 못해서 발생한 것이다. ‘2. FUSE와 sshfs 설치’중에 /etc/ld.so.conf 설정과 ldconfig 명령으로 해결할 수 있다.
2) fusermount: fuse device not found, try ‘modprobe fuse’ first
fuse 커널 모듈이 로딩되지 않았다. modprobe fuse 명령을 실행한다.
이제 사용 완료했으면 unmount를 해보자. unmount는 fusermount 명령 또는 umount 명령으로 할 수 있다.