SSHFS
는 SSH 기반으로 SCP또는 SFTP와 같이 파일을 전송하여 파일시스템처럼 마운트해주는 기능이다. 실제 블럭스토리지처럼 FUSE
를 이용하여 제공하는데 EPEL
에서받을수 있다. 다만 RHEL 5, 6, 7, 8
에서는 공식적으로 지원하지 않으면 앞으로 지원할 계획도 없다.
특정 경로를 다른 서버로 연결(mount)하고 싶은 경우가 있다. 예를 들면, 백업해 둘 경로를 백업서버로 연결해서, 백업 경로에 파일을 넣으면 바로 백업서버에 저장이 되도록 할 수 있다.
[server1] /my/backups/jenkins -> [백업 서버] /backups/server1/jenkins [server1] /my/backups/releases -> [백업 서버] /backups/server1/releases [server2] /my/backups/jenkins -> [백업 서버] /backups/server2/jenkins
여러 방법들이 있지만, 백업 서버에 SSH가 열려 있다면 SSHFS
를 이용해서 간단히 마운트 할 수 있다. SSHFS(Secure SHell FileSystem)
는 SFTP
로 파일을 전송하는 클라이언트이다.
위의 server1
, server2
등 마운트할 클라이언트 쪽에서만 아래 명령을 실행하면 된다.
SSHFS 설치는 패키지 매니저를 쓰면 간단하다. 시스템에 맞는 명령을 사용하자.
$ yum install sshfs $ dnf install sshfs $ sudo apt-get install sshfs
$ mkdir -p /my/backups $ # 보통 마운트 경로는 /mnt 경로 아래로 생성한다. $ sudo mkdir -p /mnt/backups
$ # user와 x.x.x.x는 백업 서버의 사용자와 IP를 적어준다. $ sshfs user@x.x.x.x:/backups/server1 /my/backups $ # Ubuntu, Debian의 경우 $ sudo sshfs -o allow_other user@x.x.x.x:/backups/server1 /my/backups
위와 같이 실행하면 명령을 실행한 server1
의 /my/backups
경로는 백업서버(x.x.x.x)의 /backups/server1
에 연결된다.
$ # 연결이 끊기면 재접속할 수 있게 설정 $ sshfs -o reconnect user@x.x.x.x:/backups/server1 /my/backups $ # SSH key 인증 방식을 쓴다면 인증 파일을 지정해 줄 수도 있다. $ sshfs -o IdentityFile=~/.ssh/id_rsa user@x.x.x.x:/backups/server1 /my/backups
df
명령으로 마운팅된 경로와 해당 서버의 경로를 알 수 있다.
$ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda4 xfs 268G 122G 147G 46% / devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs tmpfs 7.8G 57M 7.7G 1% /run tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/sda2 xfs 1014M 130M 885M 13% /boot tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/1000 user@my-backup-server:/backups/server1 fuse.sshfs 50G 4.2G 46G 9% /my/backups
서버가 재시작 되어도 항상 연결되어 있게 하려면 /etc/fstab
파일을 수정해 주면 된다.
sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs defaults 0 0 # 옵션이 필요하면 적어준다 sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0 sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs reconnect defaults 0 0
연결을 끊고 싶으면 umount
명령을 사용한다.
$ umount /my/backups