O Solaris diz que minha partição está usando mais de 100 GB, mas a partição parece vazia. Onde o espaço está sendo usado?


0

Estou telnetando para uma caixa Solaris 5.9 que deveria armazenar nosso banco de dados Oracle. Eu apaguei a versão antiga do banco de dados, tentei mudar para a nova versão (o banco de dados inteiro tem 90 GB), mas continuava recebendo erros de "disco está cheio". Eu corri

df -hk

e descobri que a partição (chamada "/ d02") estava tentando mover arquivos para ter 135 GB no total, 123 GB usados ​​e 10 GB disponíveis. No entanto, quando eu corro

ls -lah /d02

Eu recebo 4 diretórios: 3 deles são 512B e 1 é 8KB.

Quando excluí o antigo banco de dados Oracle, o espaço não foi liberado de alguma forma? Como posso liberar o espaço, ou pelo menos ver como meu espaço está sendo ocupado?

Obrigado pelo seu tempo.

Respostas:


3

Eu descobri. Eu tive que matar todos os processos que estavam mantendo esses dados - neste caso, Oracle.

Também acho que deveria postar isso no serverfault. Desculpa!


Em sua defesa, obrigado por postar uma resposta para sua pergunta. Agora você só precisa aceitá-lo! :)

2

Sim, você descobriu a causa raiz. No unix, a remoção de um arquivo remove o link da lista de acesso no diretório No entanto, ele não pode remover o conteúdo até que o identificador do arquivo seja fechado, associado ao arquivo. Esse é um problema bastante comum, difícil de rastrear após o fato.

Depois que o identificador do arquivo é fechado, os links de dados podem ser liberados para a lista gratuita, como você descobriu. Provavelmente, um arquivo de log ainda estava aberto. Você pode ter encontrado algum comportamento estranho depois que o banco de dados foi reiniciado, pois estava faltando o local do log e ele inicia o log no console ou em outros locais estranhos, como / tmp.


2

+1 na resposta do @UnixGeek: a exclusão de um arquivo não libera espaço em disco até que os processos com o arquivo aberto acabem.

A ferramenta "padrão" para listar arquivos abertos é lsof- eu ainda não acho que ele esteja incluído no Solaris (faz vários anos desde que eu era um administrador do Solaris, ou mesmo o usei), mas está disponível no sunfreeware.

Um rápido google descobre que o utilitário Solaris pfilespode fazer algo semelhante (mas eu não o usei).

Além disso, fuserno nome do arquivo, mas você precisa verificá-lo antes de excluir o (s) arquivo (s). fusertambém é útil para encontrar o que tem uma porta aberta, quando um processo informa que ele já está em uso.

Vou conectar o tradutor unixersal de A Sysadmin (ROSETTA STONE) , um guia muito útil para quem usa vários Unices e faz a tradução entre eles.

Truque de bônus para recuperar arquivos excluídos em /procsistemas baseados em que ainda estão abertos por um processo:

cat /proc/<pid>/fd/<fd-of-delete-file>  > recovered.data

Eu usei isso no Linux, onde ls -l /proc/<pid>/fdmostra o nome do arquivo inicial (e [excluído]) na saída.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.