AIX tarエラー:現在使用可能なメモリーが不足しています。

AIX tarエラー:現在使用可能なメモリーが不足しています。

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 -

答え2

回復しようとせずにファイルを一覧表示できるかどうか疑問に思います。これを試してみることができますtar -tvf /dev/rmt0

また、STDOUT(画面)の代わりにファイルに出力をキャプチャできますか?

tar -tvf /dev/rmt0 1>/tmp/rest.out 2>/tmp/rest.err

注目すべきいくつかの異なる側面があります。実際に物理メモリですか?その場合は、lsps -aコマンドを使用するか、nmon(メモリの場合はオプションm)やtopasなどのユーティリティを使用して、ページングスペースに対するいくつかのヒットを確認する必要があります。

もう一つの考え:NCARGSほど簡単ではありません。メモリから見ると(言葉を許してください)、「パラメータリストが長すぎます」など、さまざまなエラーが発生します。ただし、以下を使用して確認する価値があります。 lsattr -El sys0 -a ncargs

他のオプションは、別のLPARまたは別のテープドライブに割り当てる別のLPARがあると想定し、別のLPARから復元を試みることです。

答え3

これは非常に興味深いです。 ddコマンドに誤ったブロックサイズを使用すると、メモリ不足エラーが発生します。

「dd」 (ディスク・ダンプ) を使用して、Tivoli Storage Manager テープ・ボリューム・ラベルを確認してください。

テープドライブのブロックサイズを表示または変更するには、次のものを使用できます。

lsattr -El rmt0 -a block_size

たとえば、変数を変更します。

chdev -l rmt0 -a block_size=0

しかし、成功した回復が完了したら、もう一度変更してください。

関連情報