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단일 호출로 완료되어야 합니다. 각 테이프 장치에는 레코드 크기 하한 및 상한이 있습니다. 마찬가지로 한 번의 호출로 레코드를 읽고 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

하지만 성공적인 복구가 끝난 후 다시 변경해 주시길 바랍니다.

관련 정보