Erro de tar do AIX: Não há memória suficiente disponível agora

2

Eu tenho um servidor AIX P720 executando o AIX 5.3. Ao executar a extração tar -xvf /dev/rmt0 da fita (IBM TS3100 Tape Library), recebo o seguinte erro: " There is not enough memory available now ". Isso também acontece quando tento usar cp para copiar arquivos. Eu aumentei significativamente o espaço de paginação, mas o problema persiste.

    
por LMK 03.02.2016 / 10:57

3 respostas

3

Minha primeira vez aqui.

Gostaria de saber se você pode listar os arquivos sem tentar restaurar ainda. Você poderia tentar fazer isso com tar -tvf /dev/rmt0

E também, é possível que você possa capturar a saída para um arquivo em vez de para STDOUT (sua tela)?

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

Algumas outras áreas para analisar. É realmente memória física? Se assim for, você deve estar vendo alguns acessos no espaço de paginação com o comando lsps -a ou usando um utilitário como o nmon (opção m para memória) ou topas.

Um outro pensamento: não é algo tão simples quanto o NCARGS. Da memória (com o perdão do trocadilho) isso daria um erro diferente, como "a lista de parâmetros é muito longa". Mas pode valer a pena verificar usando: lsattr -El sys0 -a ncargs

Algumas outras opções são tentar a restauração em uma LPAR diferente, supondo que você tenha outra LPAR que possa ter essa ou outra unidade de fita atribuída a ela.

Espero que isso seja uma ajuda.

    
por 03.02.2016 / 12:14
3

Os dispositivos de fita no Unix são um pouco exclusivos, pois são orientados a registros, em vez de serem um fluxo de bytes. Portanto, cada registro gravado em fita deve ser um múltiplo arredondado de algum tamanho de bloco, geralmente 512 bytes, e deve ser feito em uma única chamada write . Cada dispositivo de fita terá limites inferiores e superiores para o tamanho do registro. Da mesma forma, você precisa ler um registro em uma única chamada read , fornecendo um buffer que seja pelo menos tão grande quanto o tamanho real do registro. Se você tentar um tamanho de leitura menor que o tamanho do registro, o Unix não retornará um registro parcial; ele retornará o erro ENOMEM .

A escolha do tamanho do registro depende do aplicativo. Tar tem uma opção b , chamando o fator de bloqueio ; um valor de 20 significa 20 * 512 bytes. Os sistemas operacionais mais antigos limitavam-se a buffers de 64kbytes, portanto, um fator de bloqueio popular era de 126, mas os drives de fita mais novos e mais rápidos exigem tamanhos de registro mínimos ainda maiores. O Cpio usa a opção C para definir o tamanho do buffer. Para manter a sanidade, geralmente é melhor usar dd para ler os dados da unidade de fita usando um determinado tamanho de bloco (com a opção bs= ou ibs= ) e encaminhá-lo para qualquer programa que descompacte os dados.

Então tente isto:

dd if=/dev/rmt0 bs=1024k | tar xvf -
    
por 03.02.2016 / 13:00
2

Isso é bem interessante: um tamanho de bloco incorreto usando o comando dd também gera um erro de falta de memória.

Usando o 'dd' (disk dump) para verificar os rótulos de volume de fita do Tivoli Storage Manager

Para visualizar ou alterar o tamanho do bloco em uma unidade de fita, você pode usar:

lsattr -El rmt0 -a block_size

E para alterá-lo, por exemplo, para variável,

chdev -l rmt0 -a block_size=0

Mas você gostaria de alterá-lo no final da restauração bem-sucedida, espero.

    
por 03.02.2016 / 12:24

Tags