다큐멘트 센터 Object Storage Tutorials Mount OS data by WOSGateway/Goofys

Mount OS data by WOSGateway/Goofys

최신 업데이트:2025-06-30 17:29:50

이 장에서는 WOSGateway와 Goofys를 다운로드 및 설치하여 객체 스토리지를 마운트하는 방법을 소개합니다.

WOSGateway

WOSGateway(스토리지 게이트웨이)는 CDNetworks에서 개발한 고성능 게이트웨이 도구로, 캐싱 기능, NFS 공유 및 SMB 공유를 지원합니다. 이를 통해 Linux에서 객체 스토리지 서비스(OSS) 버킷을 로컬 파일 시스템처럼 마운트할 수 있습니다. 이렇게 하면 로컬 파일을 관리하는 것과 동일한 방식으로 OSS 객체를 처리할 수 있습니다.

WOSGateway 사용에는 서버에 100GB 이상의 저장 공간이 캐시 디스크로 사용되어야 합니다.

설치 (CentOS 환경)

  1. 먼저 설치 패키지를 다운로드하고 콘텐츠를 로컬 디렉터리에 추출합니다. 다운로드 링크.
  2. wosgw-*.zip 패키지의 압축을 풉니다.
  3. cd wosgw-* 명령으로 wosgw-* 디렉터리로 이동한 후 rpm -ivh *.rpm으로 설치를 진행합니다.
  4. 종속성 오류가 발생하면 yum -y install fuse fuse-libs libibverbs librdmacm gperftools-libs를 실행하여 해결합니다.
  5. leveldb 종속성 누락 오류가 발생하면 다음 단계로 설치합니다:
wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-13.noarch.rpm
rpm -Uvh epel-release-7-13.noarch.rpm
yum -y install leveldb
  1. 설치가 성공하면 다음 파일과 디렉터리가 생성됩니다:
  • 바이너리 경로: /usr/bin/wosgw
  • 구성 파일: /etc/wosgw/wosgw.conf
  • 로그 경로: /var/log/wosgw
  • 런타임 디렉터리: /var/run/wosgw
  • 데이터베이스 경로: /var/run/wosgw/db

구성

  1. 메인 구성 파일 수정: /etc/wosgw/wosgw_ctl.toml
[wosgw_ctl]

# 액세스 키 자격 증명
AK = "your ak"
SK = "your sk"

# 엔드포인트 주소
server = "http://endpoint"

# 버킷 이름
bucket = "regionName"

# 로컬 마운트 디렉터리
mount_dir = "/mnt/xxx"

# 로컬 캐시 디렉터리
use_cache = "/cache5/s3fs_cache"

conf_path = "/etc/wosgw/wosgw.conf"
client = "client.wosgw"

[params]
args = [
	"-o enable_noobj_cache",
	"-o ensure_diskfree=300",
	"-o use_xattr",
	"-o allow_other",
	"-o umask=000,noatime",
	"-o force_purge_rocksdb_stat",
	"-o use_path_request_style",
	"-o curldbg",
	"-o dbglevel=dbg",
]

지침

구성 필수 예시 구성 참고
allow_other -o allow_other 기본 고정 옵션으로, 서버에 로그인한 모든 사용자가 마운트 디렉터리를 사용할 수 있으며 NFV/SMB 공유 생성에 사용할 수 있습니다.
rw -o rw 읽기 및 쓰기 권한을 나타냅니다.
umask -o umask=000 마운트된 리소스에 대한 액세스 권한을 설정합니다. umask = 000일 때 파일 권한은 777(읽기, 쓰기, 실행)로 설정됩니다.
noatime -o noatime 액세스 시간 추적을 비활성화하려면 값을 0으로 설정합니다.
use_cache -o use_cache=/cache/wos-cache 스토리지 게이트웨이의 캐시 경로 주소를 지정합니다.
ensure_diskfree 아니오 -o ensure_diskfree=300 파일 쓰기에 충분한 공간을 보장하기 위해 최소 300M의 디스크 공간을 예약합니다. 스토리지 게이트웨이는 기본적으로 디스크 용량의 20%를 예약하므로 이 옵션은 생략할 수 있습니다.
use_xattr -o use_xattr 파일 확장 속성 설정을 지원합니다.
use_path_request_style 권장 -o use_path_request_style 경로 기반 액세스를 사용하며, URL이 IP인 경우 DNS 확인 오류를 방지하기 위해 마운트 명령에 이 매개변수를 사용해야 합니다.
enable_noobj_cache -o enable_noobj_cache 이 매개변수를 구성하면 WOSGW가 전송하는 버킷 목록 요청 수가 줄어들어 성능이 향상됩니다.
max_stat_cache_size 권장 -o max_stat_cache_size=1000000 기본값은 100,000입니다. 메모리에 저장할 수 있는 최대 stat 캐시 항목 수입니다. 성능 향상을 위해 더 큰 값을 구성하는 것이 좋습니다.
force_purge_rocksdb_stat -o force_purge_rocksdb_stat 데이터 일관성을 보장하기 위해 데이터베이스를 강제로 지웁니다.
dbglevel 아니오 -o dbglevel=debug 디버깅 목적으로 사용되며 일반적인 사용에는 권장되지 않습니다.
multipart_size 아니오 -o multipart_size=10 개별 청크의 크기를 설정합니다.
max_multipart_cnt 아니오 -o max_multipart_cnt=10000 최대 청크 수를 설정합니다.
  1. 고급 구성 파일 /etc/wosgw/wosgw.conf을 수정하고 필요에 따라 다음 세부 사항을 조정합니다. (참고: 설정을 사용자 정의할 필요가 없는 경우 이 구성 파일을 추가하지 않아도 됩니다.)
wosgw_run_mode=async
debug_wosgw=60
wosgw_rgw_host_regex = ".*"

wosgw_cachefile_life_time=1
wosgw_cachefile_remove_size=200
wosgw_cachefile_remove_interval=2
wosgw_cachefile_remove_thread_num=2
wosgw_cachefile_quantity_watermark_high=0
wosgw_cachefile_quantity_watermark_low=0
wosgw_cachefile_gc_thread_num=3

wosgw_db_path=/cache2/wosgw-db

wosgw_stat_mode=1

wosgw_sync_log_interval=10
wosgw_num_shards=5
wosgw_sync_sleep_time=0

wosgw_resume_upload=True

wosgw_vid_prealloc=100

[client.wosgw.default]
log file=/cache2/wosgw-log/$name.log
admin socket = /usr/local/etc/wosgw/$name.asok

Wosgw 구성 지침

구성 필수 예시 구성 참고
wosgw_run_mode wosgw_run_mode=asyncV 기본값은 'async’로, 서비스가 비동기 모드로 작동함을 의미합니다. 마운트 디렉터리에 쓴 파일은 백엔드에 동기화되기 전에 먼저 로컬 캐시 디스크에 존재합니다.
wosgw_stat_mode 아니오 wosgw_stat_mode=1 기본값은 1로, 메타데이터 저장 모드를 구성합니다. 이는 메타데이터가 로컬 디스크에 기록되는 방식을 결정합니다.
wosgw_db_path 아니오 db wosgw_db_path=/cache/db 비동기 모드에서 데이터베이스 저장 경로를 설정합니다. 독립 실행형 db 구성에는 권장되지 않습니다.
wosgw_log_db_path wosgw_log_db_path=/cache/db_log 기본값이 없으므로 반드시 구성해야 합니다. 비동기 로그 데이터베이스를 저장할 위치입니다. 스토리지 게이트웨이 성능에 영향을 주지 않도록 SSD 디스크(복제 포함)에 배치하는 것이 좋습니다.
wosgw_stat_db_path wosgw_stat_db_path=/cache/db_stat 기본값이 없으므로 반드시 구성해야 합니다. 메타데이터 데이터베이스를 저장할 위치입니다. 스토리지 게이트웨이 성능에 영향을 주지 않도록 SSD 디스크(복제 포함)에 배치하는 것이 좋습니다.
wosgw_lc_db_path wosgw_lc_db_path=/cache/db_lc 기본값이 없으므로 반드시 구성해야 합니다. 캐시 파일 데이터베이스를 저장할 위치입니다. 스토리지 게이트웨이 성능에 영향을 주지 않도록 SSD 디스크(복제 포함)에 배치하는 것이 좋습니다.
wosgw_fault_db_path wosgw_fault_db_path=/cache/db_fault 기본값이 없으므로 반드시 구성해야 합니다. 샤딩 데이터베이스를 저장할 위치입니다. 스토리지 게이트웨이 성능에 영향을 주지 않도록 SSD 디스크(복제 포함)에 배치하는 것이 좋습니다. wosgw_cachefile_life_time 선택 사항, 권장 wosgw_cachefile_life_time=1 기본값은 24시간입니다. 캐시 파일의 만료 시간을 설정하는 데 사용되며 유효 범위는 [0.00028, 2^20]입니다.
wosgw_cachefile_life_time 아니오 wosgw_cachefile_life_time=1 기본값은 24시간입니다. 캐시 파일의 만료 시간을 설정하는 데 사용되며 유효 범위는 [0.00028, 2^20]입니다.
wosgw_cachefile_remove_size 아니오 wosgw_cachefile_remove_size=200 기본값은 100 MB입니다. 조건이 충족될 때 캐시 정리를 시도할 총 파일 크기를 설정하는 데 사용되며 유효 범위는 [100, 2^31-1]입니다.
wosgw_cachefile_remove_interval 아니오 wosgw_cachefile_remove_interval=2 기본값은 2초입니다. 디스크 공간 확인 간격을 설정하는 데 사용되며 유효 범위는 [2, 2^31-1]입니다.
wosgw_cachefile_remove_thread_num 아니오 wosgw_cachefile_remove_thread_num=2 기본값은 2입니다. 캐시 정리를 위한 스레드 수를 설정하는 데 사용되며 유효 범위는 [2, 32]입니다.
wosgw_cachefile_quantity_watermark_high 아니오 wosgw_cachefile_quantity_watermark_high=0 기본값은 0.7입니다. 디스크 사용량이 이 수준에 도달할 때 정리를 트리거하는 디스크 확인을 위한 높은 워터마크 백분율을 설정하며 유효 범위는 [0, 0.8]입니다.
wosgw_cachefile_quantity_watermark_low 아니오 wosgw_cachefile_quantity_watermark_low=0 기본값은 0.6입니다. 디스크 사용량이 이 수준 아래로 떨어질 때 정리를 방지하는 디스크 확인을 위한 낮은 워터마크 백분율을 설정하며 유효 범위는 [0, 높은 워터마크]입니다.
wosgw_cachefile_gc_thread_num 아니오 wosgw_cachefile_gc_thread_num=3 기본값은 16입니다. 캐시 파일 레코드 삭제를 위한 스레드 수를 설정하며 유효 범위는 [1, 32]입니다.
wosgw_cachefile_remove_count 아니오 wosgw_cachefile_gc_thread_num=10000 기본값은 100,000입니다. 조건이 충족되고 총 파일 크기가 구성된 크기를 충족하지 않을 때 제거할 총 파일 수를 설정합니다.
wosgw_sync_log_interval 아니오 wosgw_sync_log_interval=10 기본값은 120초입니다. 비동기 로그 처리 간격을 설정하며, 작업 로그가 생성된 후 백엔드에 동기화되는 데 걸리는 시간을 결정합니다. 유효 범위는 [10, 2^31-1]입니다.
wosgw_num_shards 아니오 wosgw_num_shards=5 기본값은 5입니다. 비동기 로그 처리를 위한 스레드 수를 설정합니다. 최대 설정은 CPU 코어 수의 두 배를 초과해서는 안 되며 유효 범위는 [1, 2^31-1]입니다.
wosgw_sync_sleep_time 아니오 wosgw_sync_sleep_time=0 기본값은 30초입니다. 원격 작업을 동기화하기 전 백엔드에 대한 연결을 기다리는 시간을 설정하며 유효 범위는 [1, 2^31-1]입니다.
wosgw_resume_upload 아니오 wosgw_resume_upload=True 기본값은 False입니다. 업로드 재개 기능을 활성화 또는 비활성화하며 유효한 값은 [True, False]입니다.
wosgw_vid_prealloc 아니오 wosgw_vid_prealloc=1024 기본값은 1024입니다. 삽입된 로그에 대한 버전 ID 할당 단계를 설정합니다. 이는 기능에는 영향을 주지 않지만 성능에는 영향을 줄 수 있습니다. 기본값 사용을 권장합니다.
debug_wosgw 아니오 debug_wosgw=60 스토리지 게이트웨이 인스턴스의 로깅 수준을 설정하며 기본값은 1입니다.
og file 아니오 log file=/etc/log/$name.log 스토리지 게이트웨이 인스턴스의 로그 경로를 설정합니다.
admin socket 아니오 admin socket = /etc/log/$name.asok 스토리지 게이트웨이 인스턴스의 소켓 경로를 설정합니다.
wosgw_rgw_host_regex 아니오 wosgw_rgw_host_regex=.* 정규 표현식으로 서버 구성을 확인하는 데 사용됩니다. 기본 구성은 IP
wosgw_load_multi_thread_enable 아니오 wosgw_load_multi_thread_enable = False 기본값은 False입니다. 버킷 스레드 초기화 스위치를 설정합니다. 유효한 값은 [True, False]입니다. 현재 상위 수준 s3는 다중 스레딩을 지원하지 않습니다.
wosgw_load_max_thread_num 아니오 wosgw_load_max_thread_num = 100 기본값은 20입니다. 다중 스레드 가져오기를 위한 스레드 수를 지정합니다.
wosgw_fullsync_threads 아니오 wosgw_fullsync_threads = 10 기본값은 5입니다. 오류 발생 시 전체 동기화를 위한 스레드 수를 지정합니다.
wosgw_multi_copy_source_size 아니오 wosgw_multi_copy_source_size = 100 기본값은 128 MB입니다. 개별 크기가 지나치게 커서 시간 초과가 발생하지 않도록 multipart_copy에서 각 세그먼트의 크기를 설정합니다. 시간 초과가 계속 발생하면 값을 줄이는 것이 좋습니다.
wosgw_rename_max_file_num 아니오 wosgw_rename_max_file_num= 10000 기본값은 100,000입니다. ‘mv’ 작업을 시도할 때 디렉터리 내 최대 파일 및 폴더 수를 지정합니다. 이 제한을 초과하면 ‘mv’ 작업이 실패합니다.

사용 방법

  1. 시작
wosgw_ctl -action start
  1. 중지
wosgw_ctl -action stop

Goofys

Goofys는 로컬 파일 시스템에 S3 스토리지 버킷을 마운트할 수 있게 해주는 오픈소스 도구입니다.

설치 단계 (CentOS 예시)

  1. wget https://github.com/kahing/goofys/releases/latest/download/goofys로 goofys를 다운로드합니다.
  2. goofys 파일에 실행 권한을 부여합니다: chmod 755 goofys.
  3. 자격 증명을 인증서 파일에 추가합니다:
vim ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
  1. 마운트 명령을 시작합니다:
./goofys --endpoint http://s3-cn-south-6.wcsapi.com --region cn-south-6 yourBucketName /mnt/mount -o allow_other
  1. 성공적인 마운트를 확인합니다:
mount
> bucket on /mnt/mount type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)
  1. 로그는 기본적으로 syslog에 인쇄됩니다. 다른 시스템에 대한 syslog 구성을 참조할 수 있습니다. 예를 들어 CentOS의 기본 syslog는 다음 위치에 있습니다: /var/log/message; Ubuntu 시스템은 dmesg 명령을 실행하여 시스템 로그를 출력할 수 있습니다.
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.