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)バケット名
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コア数の2倍を超えてはならず、有効範囲は[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コマンドを実行してシステムログを出力できます。