AltaVault の削除プロセスとは何ですか。
環境
- AltaVault
- AVA400
- AVA800
- AVA-V
回答
- AltaVault には、バックアップデータをエンコードしてクラウドにレプリケートするときに受け取るローカルディスクキャッシュがあります
- データストア(Eviction)プロセスでは、ディスクキャッシュにある空きスペースをいくらか残し、データストアがいっぱいにならないようにする必要があります
- 導入環境の一般的なサイズは、新しいデータ取り込み速度がディスクキャッシュのローテーションを約30日(デフォルト)にするように設定されています。これにより、最近エンコードされた(書き込まれた)バックアップジョブを高速にデコードできます
- このローカルキャッシュ機能は、AltaVault の主要な差別化要因であり、最新バックアップの目標復旧時間(RTO)を短縮します
- Evicter プロセスでは、次の 3 つのウォーターマークを使用します。
- Eviction しきい値( evicter.maxpctused ):
- これはevicterが維持するために機能する使用率です
- 使用率がこの値を超えると、evicterは、スラブファイルが特定のパーセンテージ内で削除されるまで、スラブファイルの削除を開始します
- Eviction アラーム( evicter.maxpctused + evicter.alarmwindow ):
- これは、ローカルディスクキャッシュの利用率が高すぎることを示すアラームが生成される利用率です
- Eviction Upperbound ( evicter.upperbound ):
- これは、物理ディスクが完全にいっぱいになるのを防ぐために、AltaVault が書き込み要求の受け入れを停止する使用率です
- このレベルでは、ファイルシステムは「ファイルシステム上のスペースなし」エラーをフロントエンドプロトコル(OST / SMB / NFS)に返します。
- Eviction しきい値( evicter.maxpctused ):
- この場合、次のようなログ・メッセージが表示されます
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megamount/vnode.ERR] (30318) encode failed: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megamount/vnode.ERR] (31432) encode failed: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [write_cache.ERR] (30318) flush failed: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megamount/vnode.ERR] (30318) failed to commit write: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [write_cache.ERR] (30318) destructor flush failed :no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [encoder.ERR] (30318) Encoder 0x299e71018 destructor, aborting
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [write_cache.ERR] (31432) flush failed: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megamount/vnode.ERR] (31432) failed to commit write: no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [write_cache.ERR] (31432) destructor flush failed :no space on filesystem
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [encoder.ERR] (31432) Encoder 0x28f726798 destructor, aborting
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megastore.NOTICE] (30318) aborting transaction 149/14340392 (29 resources)
Apr 2 02:34:01 ss3030-dmz-nk2 rfsd[8609]: [megastore.NOTICE] (31432) aborting transaction 149/14349236 (1668 resources)
Apr 2 02:34:02 ss3030-dmz-nk2 rfsd[8609]: [megastore.NOTICE] (30318) transaction 149/14340392 aborted
Apr 2 02:34:02 ss3030-dmz-nk2 rfsd[8609]: [megamount/vnode.ERR] (30318) error flushing write cache no space on filesystem
low space
「」は、データパーティションの使用が 93% (デフォルト設定)を超えると発生しますevicter.maxpctused + evicter.alarmwindow
- 現在のディスクキャッシュの使用率(evicter.PctUsed)に注意してください。この値は、設定可能なパラメータではなく測定値です
追加情報
システムが読み取り専用になり、上記のエラーメッセージが表示されるという 2 つのシナリオがあります。
- AltaVault に書き込まれる新規データの割合が、evicterがスペースを解放できる速度を超えています
- evicterのしきい値を低い値にドロップすると、バックアップ用により多くのGBの空き領域を確保できますが、動作が遅いために、エンコーダによって保護されているデータに遅れが出る可能性がある場合に限り、アクティビティが低い時間帯を確保することができます
- に割り当てられた値
evicter.maxpctused
がより大きい場合、evicter.upperbound
原因 デバイスは使用率がしきい値に達する前に読み取り専用モードになり、デバイスはその値をカットしてスペースを解放します- これにより、evicterが実質的にデッドロックされます
- 適切な値はローカル・ディスク・キャッシュのサイズによって異なり、小規模なアプライアンスではより控えめな値が使用されます
- 次のコマンドを実行して、システムダンプ内の Evicter パラメータを確認します。
$ grep evicter stats_megastore
evicter.alarmwindow: 3
evicter.maxpctused: 90
evicter.pctused: 88
evicter.upperbound: 95
- 出力は、上記の出力よりも大きくなりますが、これらは重要なパラメータです
output/rfsd.xml
running config
これらのファイルはにもあります。これはrfsdサービスの「」です
<evicter
max_local_capacity="0"
max_used_pct="90"
upper_bound_pct="95"
evicter_num_threads="512"
/>
- これらの値は
collect_stats/rfsctl-a.log
、ファイルとアーカイブに 60 秒ごとに記録されます。
$ egrep "TIMESTAMP|evicter.pctused" collect_stats/rfsctl-a.log | less
TIMESTAMP: 2015-04-14 12:21:00
evicter.pctused: 88
TIMESTAMP: 2015-04-14 12:22:00
evicter.pctused: 88
TIMESTAMP: 2015-04-14 12:23:00
evicter.pctused: 88
TIMESTAMP: 2015-04-14 12:24:00
evicter.pctused: 88
TIMESTAMP: 2015-04-14 12:25:00
evicter.pctused: 88
- 次のコマンドを実行して、ライブAltaVault のevicterパラメータを表示します(サービスが実行されている必要があります)。
av730-rtp # rfsctl exec evicter
evicter.alarmwindow: 3
evicter.maxpctused: 90
evicter.pctused: 88
evicter.upperbound: 95
- ここでも、簡潔にするためにいくつかのパラメータが抑制されています
クラウドデータの検証と「クラウドデータの不整合」アラームの回避
- スラブを削除する前に、Evicterはスラブのmd5sumをクラウドオブジェクトに保存されている値でチェックします
- クラウドはmd5sumを計算しませんが、メタデータ値を返すだけなので、クラウドスラブの整合性を確認するのではなく、リビジョンを確認します
- スラブを変更してクラウドに再度アップロードするために登録することができます。このチェックにより、クラウド内のコピーがローカルのスラブと一致するようになります
- まだクラウドにレプリケートされていないスラブは削除しないでください
- md5sumチェックに失敗すると、「Inconsistent Cloud Data」というアラームが生成される
- 空の(null)応答または古いデータを送信するクラウドベンダーに関する経験があります
- Evicterはレプリケーションを一時停止できる
- クラウドスラブオブジェクトに対してHEAD要求に対するプロンプト応答を取得していない場合、レプリケーションは一時的に一時停止されます
例:
Sep 28 03:01:20 altavault01 rfsd[6599]: [evicter.INFO] (8921) Evicter will pause replication
Sep 28 03:01:41 altavault01 rfsd[6599]: [evicter.INFO] (8921) Evicter will resume replication
平均退去年齢
- evicterは削除されたスラブの経過時間を追跡します。この統計情報は、ローカルディスクキャッシュが小さすぎて回転速度が速すぎるかどうかを判断するのに役立ちます
- また、データがクラウドからダウンロードされる際に、削除されるまでの平均経過時間よりも古いファイルのリストアには時間がかかる可能性があるため、この統計はRTOにも影響します
- 削除されるまでの平均経過時間は、Web UIのレポートで確認できます
$ /support/bin/stats_evicted.py
timestamp evicted_bytes evicted_age
Jul 01 04:38 3.1 GB 48 day
Jul 01 04:39 3.8 GB 48 day
Jul 01 04:40 3.6 GB 48 day
Jul 01 04:41 3.3 GB 48 day
<snip>
Jul 01 07:18 4.3 GB 47 day
Jul 01 07:19 2.6 GB 47 day
Jul 01 07:20 2.5 GB 47 day
Jul 01 07:21 2.3 GB 47 day
Min: 47 day, Max: 48 day, Avg: 48 day, StdDev: 4 hour
- 削除されるまでの平均期間が30日未満の場合は(調整可能)、削除されるまでの平均期間がトリガーされます
- Web UIのAltaVault :Reports > Evictionの下にあるこの値は、5分間の表示以外ではグラフの精度が高くない可能性があります。値は集約によって平均値がダウンする可能性があるためです
- たとえば、AltaVault
average_eviction_age
は5秒ごとにを計算します。evicterが実行されていない期間は0として記録されます
avg_evicted_age | 0 | 0 | 30 日 | 30 日 | 30 日 | 30 日 | 0 | 0 | 0 | 0 | 0 | 0 |
サンプル間隔 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 | 5 秒 |
- 「データポイント」の有効期間は「収集」され、5分後にそれらの値が平均化されて60秒間隔になります
- この例では、evicterが60秒のうち20秒間だけ動作するとします
- 60秒間の合計期間の平均値は、(30日間* 20秒)+(0 * 40秒)/ 60秒= 10日間です
- これは、この集約方法の望ましくない側面の影響です
avg_evicted_age
デフォルトでは、値が30日(2592000秒)未満になるとアラームがトリガーされます。この値は、お客様のニーズに合わせて調整できます- アラームは完全に無効にすることもできます
# show alarm avg_evicted_age
Alarm Id: avg_evicted_age
Alarm Description: Datastore Eviction
Enabled: no
Alarm State: (enabled)
Error threshold: 2592000
Clear threshold: 3024000
Rate limit bucket counts: (email) { 5, 20, 50 }
Rate limit bucket windows: (email) { 3600, 86400, 604800 }
Rate limit bucket counts: (snmp) { 5, 20, 50 }
Rate limit bucket windows: (snmp) { 3600, 86400, 604800 }
Last checked at: 2015/06/16 11:41:39
Last checked value: 4294967295
Last error at:
Last clear at:
(config) # alarm avg_evicted_age enable
(config) # no alarm avg_evicted_age enable
- たとえば、しきい値を14日に上昇するように調整し、15日にクリアするには、次のように入力します
(config) # alarm avg_evicted_age error-threshold 1209600
(config) # alarm avg_evicted_age clear-threshold 1296000
クラウドのストレージ利用率に対する平均的な削除年齢の影響
- ファイルを削除すると、参照しているスラブが検査され、アプライアンスに保存されている他のファイルから参照されているかどうかが確認されます
- スラブのいずれかの部分が参照されている場合は削除できませんが、スラブがローカルキャッシュにあり、その50%以上が使用されていない場合は、スラブを圧縮してから再エンキューして、古いスラブを上書きするクラウドにレプリケートできます。 より大きなバージョン
- スラブの圧縮は、スラブがローカルキャッシュにある場合にのみ実行できることを覚えておくことが重要です
- クラウドのみのスラブは、100%未使用の状態で削除する必要があります
- Amazon Glacierでは、64個のスラブのバンドルであるパッケージと呼ばれる大きなオブジェクトが使用されます
- ほとんどのバックアップ戦略では、1カ月分の日次バックアップが保持され、1週間ごとのバックアップが1年間保持され、1カ月ごとのバックアップが5年間保持される、ローテーションスケジュールのセットが維持されます
- バックアップの有効期限が切れ、削除されるまでの時間が平均削除時間よりも短い場合は、バックアップが参照しているスラブがローカルにある可能性があるため、圧縮に使用できます
- 削除時の平均削除期間が標準バックアップの使用年数よりも短い場合、一部のスラブは圧縮できましたが、クラウドのみのため縮小が可能でした
- 使用されていないデータを大量に保持するクラウドオブジェクトは、クラウドスペアと呼ばれます。また、ローカルキャッシュを平均的な削除期間ですばやくローテーションする環境では、クラウドスペアが作成される可能性が高くなります
- Amazon Glacierのユーザはクラウドの火花の影響を受けやすくなります。これは、クラウドに格納されているデータオブジェクトのサイズが大きいためです(パッケージ= 64スラブ)。