現在テープにバックアップし、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
ビアサイズ分のスペースが割り当てられていますmbuffer
。tmpfile
malloc()
これは、引数なしで使用するのと同じくらいの量の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番号が異なる別々のファイルになります。)