ossfsデータキャッシュは、少量のデータが頻繁に読み取られるシナリオに適しています。 ossfsデータキャッシュを有効にすると、読み取り待ち時間を効果的に短縮し、オブジェクトに対する操作の効率を向上させることができます。 このトピックでは、ossfsデータキャッシュを設定して効果的に使用する方法について説明します。
キャッシュされたデータを使用するときは、データの一貫性と適時性に注意する必要があります。 したがって、データのリアルタイムパフォーマンスに対する要件が高いシナリオでは、ossfsデータキャッシュを有効にしないことをお勧めします。
背景情報
ossfsを使用してオブジェクトにアクセスすると、ossfsはデフォルトでディスクキャッシュとしてtmpfileという名前の一時ファイルを /tmpディレクトリに作成します。 開いているすべてのファイルハンドルが閉じられると、システムは自動的に一時ファイルを削除します。 ただし、同じオブジェクトが頻繁にアクセスされるビジネスシナリオでは、このメカニズムでは、オブジェクトを開いたり、読み取ったり、閉じたりするたびに、OSSからオブジェクトをダウンロードする必要があります。これにより、大量のOSSスループットが消費されます。
ossfsデータキャッシュを有効にすることで、ホットデータの頻繁な読み取りによるリモートストレージへのスループットの負荷を効果的に軽減し、読み取り待ち時間を短縮し、リモートストレージへのアクセス数を減らすことができます。
シナリオ
ossfsデータキャッシュは、少量のデータが頻繁に読み取られるシナリオに適しています。 ローカルディスク容量がホットデータを格納するのに十分であることを確認する必要があります。
モード間の比較
ossfsデフォルトモード (データキャッシュなし) とossfsデータキャッシュモードの違いを次の表に示します。 ossfsのデフォルトモードでは、システムディスク容量が占有されないように、tmpdirオプションを使用して一時ファイルを /tmpディレクトリからデータディスクディレクトリに移動することを推奨します。
モード | 読み取り操作 | 書き込み操作 | 性能 |
ossfsデフォルトモード (データキャッシュなし) | データを読み取るたびに、データはバケットから一時ファイルにダウンロードされ、一時ファイルから読み取られます。 すべてのファイルハンドルを閉じると、一時ファイルは削除されます。 | 一時ファイルが生成され、すべてのファイルハンドルが閉じられた場合にのみ削除されます。 大量のファイルが一時ファイルに書き込まれると、大量のディスク容量が消費されます。 ローカルディスク容量が不足している場合は、事前に一時ファイルの一部をアップロードし、キャッシュを削除します。 この場合、書き込み速度はOSSのアップロード速度によって制限されます。 | このモードのパフォーマンスは、ディスクのパフォーマンスとOSSのレイテンシによって異なります。 |
ossfsデータキャッシュ | バケットからオブジェクトを初めて読み取ると、キャッシュパスにファイルが作成され、オブジェクトがファイルに保存されます。 ファイルからオブジェクトを繰り返し読み取ることができます。 | データは、最初にローカルキャッシュに書き込まれる。 ファイルが更新またはクローズされると、ファイルはバケットにアップロードされます。 ローカルキャッシュの容量が不足している場合、ossfsは事前にファイルの一部をアップロードし、キャッシュを削除します。 この場合、書き込み速度はOSSのアップロード速度によって制限されます。 | ローカルキャッシュが存在する場合、このモードのパフォーマンスはディスクのパフォーマンスによって異なります。 ローカルキャッシュが存在しない場合、このモードのパフォーマンスはデフォルトモードのパフォーマンスと同じです。 この場合、このモードのパフォーマンスは、ディスクのパフォーマンスとOSSのレイテンシによって異なります。 |
構成オプションは次のとおりです。
次の表に、ossfsデータキャッシュに設定できるパラメーターを示します。
パラメーター | 説明 | デフォルト値 |
use_cache | ossfsデータキャッシュを有効にし、データキャッシュのパスを指定します。 デフォルトでは、ossfsデータキャッシュは無効になっています。 たとえば、 | なし |
ensure_diskfree | ディスク容量が完全に占有され、データを書き込む他のアプリケーションに影響を与えないように予約されたディスク容量のサイズ。 デフォルトでは、ディスク容量は予約されていません。 単位:MB。 たとえば、ossfsの予約ディスク容量を1024 MBに設定する場合は、 | なし |
del_cache | ローカルキャッシュを削除するかどうかを指定します。 デフォルトでは、ローカルキャッシュは削除されません。 たとえば、 | なし |
max_dirty_data | ファイルをアップロードするサイズのしきい値を指定します。 ファイルのサイズが値より大きい場合、ファイルが閉じられていなくてもファイルがアップロードされます。 単位:MB。 たとえば、ファイルが閉じられていない場合でもサイズが2,000 MBを超えるファイルをアップロードするように指定する場合は、 | 5120 |
データキャッシュ管理メカニズム
ossfsデータキャッシュモードでは、ファイルを閉じてもディスク上のキャッシュファイルは削除されません。 このように、キャッシュされたファイルは、ファイルが将来再び読み取られるときに直接使用することができる。
キャッシュ容量が不足している場合、キャッシュされたデータは削除されます。
読み取りおよび書き込み操作中に、システムはディスク容量の使用状況をチェックします。 ディスク容量が不足している場合、データ再利用操作がトリガーされます。 データ再利用操作は、最小単位として単一のキャッシュファイルに対して実行されます。
提案
ホットオブジェクトに頻繁にアクセスする場合は、ossfsデータキャッシュを有効にして、キャッシュのパスを設定することを推奨します。 このようにして、オブジェクトは、繰り返し読み出し中にローカルキャッシュから直接取得することができる。 これにより、アクセスの待ち時間が減り、頻繁にアクセスされるオブジェクトがすばやく読み込まれます。 これにより、OSSへのリクエスト数も削減されます。
キャッシュが保存されているディスクが他のアプリケーションで使用されている場合は、ディスクを使用するときに
conceed_diskfreeオプションを指定することを推奨します。 このようにして、システムの正常な動作を保証するために、特定の量のディスク容量を確保することができる。複数のクライアントがossfsにデータを書き込む、またはossfsからデータを読み取る、または複数のクライアントがossfsからデータを読み取る間にクライアントがossfsにデータを書き込むシナリオでは、ossfsデータキャッシュを有効にしないことをお勧めします。
ossfsデータキャッシュが有効になっている場合、クライアントがossfsにデータを書き込むシナリオでキャッシュが存在する必要があります。 ディスク容量を無駄にしない場合は、ossutilを使用することを推奨します。
大きなオブジェクトが一度に読み取られるシナリオでは、キャッシュのパフォーマンスが制限されます。 したがって、ディスク容量の使用量を減らすために、直接読み取りモードを有効にすることを推奨します。
ossfsデータキャッシュのパフォーマンスは、キャッシュされたデータが格納されているディスクのパフォーマンスによって異なります。 パフォーマンスバーストが有効なESSD AutoPLディスク、エラスティックエフェメラルディスク、ローカルディスクなど、パフォーマンスの高いディスクを選択することを推奨します。 詳細については、「ESSD AutoPLディスク」をご参照ください。