DSEFS圧縮
DSEFSは、ストレージ・スペースと帯域幅を節約するためにファイルを圧縮できます。
dse.yaml
dse.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/dse.yaml |
tarボール・インストール | installation_location/resources/dse/conf/dse.yaml |
DSEFSは、ストレージ・スペースと帯域幅を節約するためにファイルを圧縮できます。圧縮は、ユーザーの明示的な要求に従って、アップロード中にDSEによって実行されます。解凍は、透過的です。データは、クライアントに返される前に常にサーバーによって解凍されます。
圧縮は、ブロック境界内で実行されます。圧縮の単位、すなわち個別に圧縮されるデータのチャンクはフレームと呼ばれ、そのサイズはファイルのアップロード時に指定できます。
エンコーダー
DSEFSには、すぐに使用できるlz4エンコーダーが同梱されています。
圧縮
ファイルを圧縮するには、putまたはcpコマンドで-c
または--compression-encoder
パラメーターを使用します。このパラメーターは、アップロードしようとしているファイルに使用する圧縮エンコーダーを指定します。
dsefs / > put -c lz4 file /path/to/file
フレーム・サイズは、必要に応じて-f, --compression-frame-size
オプションを使用して設定できます。
最大フレーム・サイズ(バイト)は、compression_frame_max_size
オプション( dse.yaml)で設定します。put -f
を使用するときにフレーム・サイズをcompression_frame_max_size
よりも大きな値に設定すると、エラーがスローされ、コマンドは失敗します。ノードの使用可能なメモリーに基づいて、compression_frame_max_size
設定を変更します。
圧縮したファイルは、解凍されたファイルと同じように追加書き込みできます。ファイルを圧縮する場合、追加書き込みされるデータは、最初のput
操作に指定されたファイルのエンコーダーで透過的に圧縮されます。
ディレクトリーには、mkdirコマンドでディレクトリーが作成される際に指定されたデフォルトの圧縮エンコーダーを含めることができます。put
コマンドで新たに追加されたファイルは、このデフォルトの圧縮エンコーダーを含んでいるディレクトリーからこれを継承します。put
操作中にc
パラメーターを使用してデフォルトの圧縮エンコーダーをオーバーライドできます。
dsefs / > mkdir -c lz4 /some/path
解凍
解凍は、データをクライアントに転送するすべてのコマンドで自動的に実行されます。元の解凍されたファイルの内容を取得するために追加の構成は必要ありません。
ストレージ・スペース
圧縮を有効にすると、論理ファイル・サイズと物理ファイル・サイズ間に差異が生じます。
論理サイズは、DSEFSにファイルをアップロードする前のファイルのサイズで、ファイルはこの後に圧縮されます。論理サイズは、DSEFSコマンド・ライン・ツール・コマンドを実行するとSizeに表示されます。
dsefs dsefs://10.0.0.1:5598/ > stat /tmp/wikipedia-sample.bz2 FILE dsefs://10.0.0.1:5598/tmp/wikipedia-sample.bz2: Owner none Group none Permission rwxrwxrwx Created 2017-04-06 20:06:21+0000 Modified 2017-04-06 20:06:21+0000 Accessed 2017-04-06 20:06:21+0000 Size 7723180 Block size 67108864 Redundancy 3 Compressed true Encrypted false Comment
物理サイズは、ストレージ・デバイスに格納されたデータの実際のサイズです。物理サイズは、DSEFSコマンド・ライン・ツール・コマンドとstat -v
コマンドをブロックごとに個別に実行することでCompressed lengthカラムに表示されます。
制限事項
圧縮ファイルにTRUNCATEを実行することはできません。