AIX 5.3を実行するAIX P720サーバーがあります。テープ(IBM TS3100テープ・ライブラリー)から抽出を実行すると、tar -xvf /dev/rmt0
次のエラーが発生しますThere is not enough memory available now
。ファイルコピーを使用しようとすると、cp
この現象が発生します。ページングスペースを大幅に増やしましたが、問題は依然として続きます。
ベストアンサー1
Unixのテープデバイスは、バイトストリーム指向ではなくレコード指向であるという点で多少ユニークです。したがって、テープに書き込まれる各レコードは、いくつかのブロックサイズ(通常は512バイト)の整数倍でなければならず、単一の呼び出しwrite
で完了する必要があります。各テープ装置にはレコードサイズの下限と上限があります。同様に、1回の呼び出しでレコードを読み取り、read
少なくとも実際のレコードサイズと同じ大きさのバッファを提供する必要があります。読みたいサイズがレコードサイズより小さい場合、Unixは部分レコードを返さずにENOMEM
エラーを返します。
レコードサイズの選択はアプリケーションによって異なります。 Tarにはb
電話オプションがありますブロック要因;値20は20 * 512バイトを意味します。以前のオペレーティングシステムではバッファを64KBに制限するため、広く使用されているブロック要素は126ですが、最新の高速テープドライブにはより大きな最小レコードサイズが必要です。 cpioはこのC
オプションを使用してバッファサイズを設定します。完全な状態を維持するには、通常、指定されたdd
ブロックサイズ(bs=
またはオプションを使用)を使用してテープドライブからデータを読み取り、データibs=
の圧縮をフルプログラムにパイプすることをお勧めします。
だからこれを試してみてください:
dd if=/dev/rmt0 bs=1024k | tar xvf -