요약 :
openstack의 object stroage 인 swift를 fuse를 통해 서버의 특정디렉토리에 연결했던 swiftfs가 있었다.
그러나, 현 재 인증방식이 버전이 3인데도 불구하고 현재에는 1에 머물러있어 다른 대안을 찾게 되었다.
svfs는 자동으로 인증방식의 버전을 확인한다.
hubC라는 클라우드서비스업체에서 만든 것으로 현재 최신버전이 0.8.2이고
자체서비스용설정, Openstack의 Openrc 형식및 token 방식을 지원한다.
keystone에서 https 연결을 통해 token과 storage url을 얻는 것으로 보이나,
http 연결을 지원하지않아 test lab에서는 openrc방식으로 연결시도는 실패했다.
그래서 swift auth를 통해 얻은 storage url과 token을 통해 마운트를 진행했다.
설치하기
wget https://github.com/ovh/svfs/releases/download/v0.8.2/svfs_0.8.2_amd64.deb
dpkg -i svfs_0.8.2_amd64.deb
설정하기
cat openrc.sh
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=jaeminj
export OS_USERNAME=jaeminj
export OS_PASSWORD=votmdnjem
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
source openrc.sh
swift stat
실행하기
mount.svfs –help
Usage: mount.svfs device mountpoint [-o option=value,[option=value]…]
device는 식별하기위한 문자열을 입력합니다.
mountpoint는 마운트하기 위한 디렉토리를 입력합니다.
# cat -n svfs.sh
1 #!/bin/bash
2 container=pds
3 mountpoint=/mnt/svfs
4 swift post ${container}
5 mkdir -p ${mountpoint}
6 swift auth | awk -F ‘ ‘ ‘NR==1 { printf(“%s”, $2) } NR==2 {printf(” %s”, $2)}’ > SVFS_AUTH
7 echo $(cat SVFS_AUTH) mount -t svfs svfs /mnt/svfs -o container=pds,nonempty,extra_attr | sh
#sh svfs.sh && mount |grep svfs
svfs on /mnt/svfs type fuse.svfs (rw,nosuid,nodev,allow_other,default_permissions)
쓰기시험
# cd /mnt/svfs
/mnt/svfs# dd if=/dev/zero of=1M.img bs=1M count=1
1+0 레코드 들어옴
1+0 레코드 나감
1048576 바이트 (1.0 MB) 복사됨, 0.0103816 초, 101 MB/초
/mnt/svfs# dd if=/dev/zero of=20M.img bs=1M count=20
20+0 레코드 들어옴
20+0 레코드 나감
20971520 바이트 (21 MB) 복사됨, 0.29249 초, 71.7 MB/초
/mnt/svfs# dd if=/dev/zero of=50M.img bs=1M count=50
50+0 레코드 들어옴
50+0 레코드 나감
52428800 바이트 (52 MB) 복사됨, 1.09199 초, 48.0 MB/초
/mnt/svfs# dd if=/dev/zero of=100M.img bs=1M count=100
100+0 레코드 들어옴
100+0 레코드 나감
104857600 바이트 (105 MB) 복사됨, 2.43013 초, 43.1 MB/초