최신 업데이트:2025-06-30 17:29:50
이 장에서는 WOSGateway와 Goofys를 다운로드 및 설치하여 객체 스토리지를 마운트하는 방법을 소개합니다.
WOSGateway(스토리지 게이트웨이)는 CDNetworks에서 개발한 고성능 게이트웨이 도구로, 캐싱 기능, NFS 공유 및 SMB 공유를 지원합니다. 이를 통해 Linux에서 객체 스토리지 서비스(OSS) 버킷을 로컬 파일 시스템처럼 마운트할 수 있습니다. 이렇게 하면 로컬 파일을 관리하는 것과 동일한 방식으로 OSS 객체를 처리할 수 있습니다.
WOSGateway 사용에는 서버에 100GB 이상의 저장 공간이 캐시 디스크로 사용되어야 합니다.
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
[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 | 최대 청크 수를 설정합니다. |
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_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’ 작업이 실패합니다. |
wosgw_ctl -action start
wosgw_ctl -action stop
Goofys는 로컬 파일 시스템에 S3 스토리지 버킷을 마운트할 수 있게 해주는 오픈소스 도구입니다.
vim ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
./goofys --endpoint http://s3-cn-south-6.wcsapi.com --region cn-south-6 yourBucketName /mnt/mount -o allow_other
mount
> bucket on /mnt/mount type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)