Site icon GRIP.News

AWS(Amazon) S3, goofys 로 mount 하기

이전 포스트와 연결된 글로, 2016년 3월 15일 작성 된 포스트 입니다. 경험의 발자취를 남기기 위해.

“당시 Seoul/Tokyo Region 은 EFS(Elastic File System) 서비스를 제공하고 있지 않았습니다. 개발자들이 AWS CLI 에 대해 익숙하지 않아 S3 활용을 위해 Drive 로 마운트하는 양대 도구, Fuse 와 Goofys 의 PoC 를 진행했었습니다.

최근 Seoul 에 EFS 서비스가 제공되고, AWS CLI 사용이 익숙해진 개발자들이 많아 Fuse 나 Goofys 를 사용하는 경우가 많지 않지만 참고삼아 포스트를 이전하게 되었습니다.”

AWS(Amazon) S3, S3Fuse vs Goofys 성능 비교

 

AWS EC2에 S3 Bucket을 직접 File System 으로 마운트 해 사용하기 위해선 얼마전 까지는 S3 Fuse 가 유일한 방법이었다. Fuse의 단점은 성능이 극단적으로 떨어지기 때문에, 메이저 용도로 사용은 부적합 했는데, Go Language로 개발된 Goofys 가 얼마전 공개 되었다. Goofys는 Fuse의 느린 성능을 크게 개선 했음을 강조하고 있다.

 

Install on AWS Linux

이번 테스트가 진행된 운영체제는 Amazon Linux AMI release 2015.09로 운영체제가 다르다면 조금씩 차이가 있지만, go lang은 운영체제 종속성이 없기 때문에 큰 문제는 없다. 만약, 설치에 자신 없다면 바이너리 파일을 받아 사용해도 무관하다.

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 에서 사용할 수 있기 전까지는 큰 문제가 없지 않을 까 하는 기대가 ..

Exit mobile version