「mbuffer -T」はどのように機能しますか?

「mbuffer -T」はどのように機能しますか?

現在テープにバックアップし、mbuffer次の間でバッファとして機能しようとしています。

tar --acls -c /var/test | mbuffer -m 8G -P 100% -R 100M | dd of=/dev/nst0 bs=256k

しかし、約10〜20回程度はまだバッファが空です。だから、次のコマンドでファイルベースのバッファを使用したいと思います。

tar --acls -c /var/test | mbuffer -m 60G -T /srv/testbuffer -P 100% -R 100M | dd of=/dev/nst0 bs=256k 

私が理解したように、このオプションは-T与えられた場所にファイルを作成し、それを読み書きバッファとして使用します。

ただし、ファイルは生成されず、1つのシステムではmbuffer中断されます。

  • 私は何を逃したことがありませんか?
  • mbufferファイルは特別な方法で作成されましたか?
  • mbuffer別のディレクトリにファイルを作成しますか?
  • mbufferスワップはどのように拡張/使用されますか?

mbuffer()のソースコードを読むと、settings.cビアサイズ分のスペースが割り当てられていますmbuffertmpfilemalloc()

これは、引数なしで使用するのと同じくらいの量のRAMが必要なのか、少なくともスワップが必要なのですか-T

答え1

生成されたファイルはありません。

mbuffer -m 60G -T /srv/testbufferファイルを作成して開き、すぐに切断します。ファイル記述子を確認すると、/proc/<PID of mbuffer>/fd次のポインタを見つけることができます。

/srv/testbuffer (deleted)

これは一時ファイルのためのかなり標準的なトリックです。何らかの理由で終了するとmbuffer(残酷に終了しても)、ファイルシステムは最終的にスペースを解放します(最悪の場合は停電またはカーネルパニック:その後は後でfsck)。完全に使用されていないファイルまたは廃棄されたファイルはディスク領域を永久に占有しません。

あるシステムでは、mbufferただ停止します。

このツールは、データバッファリングと呼ばれる主な作業を開始する前に、実際にディスク領域を予約しますfallocate(たとえば、スパースファイルを作成するのではなく)。truncate大容量ファイルの割り当てに時間がかかることがあります。この遅延は、ファイルシステムの種類、断片化の可能性などによって異なります。

これは、引数なしで使用するのと同じくらいの量のRAMが必要なのか、少なくともスワップが必要なのですか-T

いいえ。選択したパス(あなたの場合)に適したファイルシステムにファイルがありますが、/srv/testbufferパスはもう存在しません。 (注:同じパスを持つ新しいファイルは、inode番号が異なる別々のファイルになります。)

関連情報