procura arquivo por número de bloco em ext3 fs em lvm

7

O smartd detectou um bloqueio incorreto no meu disco rígido e eu gostaria de saber a que arquivo esse bloco pertence. Eu tenho sistema de arquivos ext3 em um volume lógico. O Google me deu muitos tutoriais (como este: link ) de como encontrar o arquivo por número de bloco quando o sistema de arquivos é criado diretamente dispositivo de bloqueio de disco rígido. Nenhum deles menciona o LVM. Existe uma maneira de encontrar o arquivo por número de bloco no meu caso?

    
por facha 25.05.2013 / 22:29

1 resposta

10
  1. Como descrito no Bad Blocks Howto, localize a partição que contém o bloco defeituoso e calcule o deslocamento do setor dentro da partição. Suponha que a partição seja /dev/sda3 e seja um PV do LVM.

  2. Determine o deslocamento do setor do primeiro PE:

    pvs -o pe_start --units s /dev/sda3
    

    Subtraia esse deslocamento do deslocamento do setor defeituoso para obter o deslocamento do setor do primeiro PE. Se o resultado for negativo, o setor defeituoso estará na área de metadados do LVM.

    Bad_Offset_from_1st_PE = Bad_Offset_in_Partition - First_PE_Start
    
  3. Execute pvdisplay --maps --units s /dev/sda3 para obter a lista de segmentos no PV; a seção "Volume Físico" desta saída também mostrará o campo "Tamanho PE".

  4. Divida o deslocamento do setor do primeiro PE (obtido na etapa 2) pelo tamanho do PE em setores. O resultado inteiro da divisão será o número ruim do PE, e o restante será o offset do setor defeituoso dentro daquele PE.

    Bad_PE           = Bad_Offset_from_1st_PE / PE_Size
    Bad_Offset_in_PE = Bad_Offset_from_1st_PE % PE_Size
    
  5. Encontre o segmento no mapa que contém o PE ruim. Se você tiver sorte, o segmento pode estar livre, caso contrário, você verá o volume lógico ruim. Você pode parar nesta etapa se o volume não for interessante para você (por exemplo, é swap ou alguns dados temporários com os quais você não se importa). O setor também pode estar além do último PE, o que significa que ele está na área não utilizada, que é menor que um PE completo, ou na segunda área de metadados no final do PV (se essa área de metadados estiver presente).

    Se o volume inválido for um instantâneo, seria muito difícil mapear o setor defeituoso para o deslocamento real no volume lógico. Se você realmente se importa com o conteúdo do snapshot, a única coisa que você pode fazer é tentar ler e esperar que o setor defeituoso ainda não seja usado pelo snapshot (e se ele foi usado, espere que a máquina não seja suspensa completamente ao tentar lê-lo).

    Se o volume ruim estava usando algo sofisticado, como espelhamento ou striping no nível LVM ... não sei como lidar com isso atualmente.

  6. Calcule Bad_LE = Bad_PE - Seg_First_PE + Seg_First_LE , onde Seg_First_PE é a primeira extensão física do segmento ruim e Seg_First_LE é a primeira extensão lógica no segmento defeituoso, conforme visto nos dados do segmento no mapa. / p>

  7. Calcule o deslocamento do setor dentro do volume lógico:

    Bad_LV_Offset = (Bad_LE * PE_Size) + Bad_Offset_in_PE
    
  8. Retorne ao Howto Bad Blocks em sua segunda etapa para encontrar o arquivo que corresponde ao setor em Bad_LV_Offset no sistema de arquivos.

por 25.05.2013 / 23:38