AWS(Amazon) S3, goofys 로 mount 하기
AWS EC2에 S3 Bucket을 직접 File System 으로 마운트 해 사용하기 위해선 얼마전 까지는 S3 Fuse 가 유일한 방법이었다. Fuse의 단점은 성능이 극단적으로 떨어지기 때문에, 메이저 용도로 사용은 부적합 했는데, Go Language로 개발된 Goofys 가 얼마전 공개 되었다. Goofys는 Fuse의 느린 성능을 크게 개선 했음을 강조하고 있다.
- Goofys Githib : https://github.com/kahing/goofys
Install on AWS Linux
이번 테스트가 진행된 운영체제는 Amazon Linux AMI release 2015.09로 운영체제가 다르다면 조금씩 차이가 있지만, go lang은 운영체제 종속성이 없기 때문에 큰 문제는 없다. 만약, 설치에 자신 없다면 바이너리 파일을 받아 사용해도 무관하다.
- Pre-build binary : https://github.com/kahing/goofys/releases/
yum install golang fuse
Go Language 로 되어 있는 goofys를 사용하려면 golang 패키지 및 fuse 패키지가 모두 필요하다. 자세한 설치 메뉴얼이 필요하다면 Readme.md 참고 하자.
mkdir $HOME/go export GOPATH=$HOME/go go get github.com/kahing/goofys go install github.com/kahing/goofys
path 정보는 goofys 를 실행하면 다음과 같은 도움말 화면이 출력 된다.
바로 사용할 옵션은 –profile 부분. $HOME/.aws/credentials 을 수정하자. 문법은 다음과 같다.
[default] aws_access_key_id = AKID1234567890 aws_secret_access_key = MY-SECRET-KEY
S3 를 생성했을 때 받은 KEY들을 입력한다.
$GOPATH/bin/goofys <bucket> <mountpoint> // 예제 mkdir -p /mnt/s3test $GOPATH/bin/goofys temp-speed-test /mnt/s3test
마운트 된 결과는 다음과 같다.
proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) /dev/xvda1 on / type ext4 (rw,noatime,data=ordered) devtmpfs on /dev type devtmpfs (rw,relatime,size=500712k,nr_inodes=125178,mode=755) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /dev/shm type tmpfs (rw,relatime) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) temp-speed-test on /mnt/s3test type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/mnt/s3test 로 temp-speed-test bucket 이 마운트 되어 있는 것이 보인다. 부팅 시 자동으로 마운트 하기 위해선 fstab 에 마운트 정보를 추가 하면 되며, 예제는 다음과 같다.
goofys#bucket /mnt/mountpoint _netdev,allow_other,--file-mode=0666 0 0
하지만, 안타깝게도 본인의 경우 fstab 에 추가해도 부팅 후 자동 마운트가 되지 않는 증상이 발생했다. 그래서 본인의 선택은 startup script를 만들어 추가하는 것으로 해결했다.
주의
goofys 의 최신 버전은 0.0.5 버전으로 아직 Alpha level 이다. 때문에 서비스 반영에는 신중을 기해야 한다. 그럼에도 불구하고 goofys에 관심이 쏠리는건, s3fuse에 비해 탁월한 성능을 보이기 때문. EFS(ElastiFileSystem)이 모든 Region 에서 사용할 수 있기 전까지는 큰 문제가 없지 않을 까 하는 기대가 ..