O que são metadados e como isso ajuda no processo “fsck”?

8

Se eu entendi corretamente, "fsck" é usado em sistemas UNIX para verificar a consistência interna dentro de discos após uma falha. Eu estava pensando, então, como ele usa "metadados" para ter certeza de que tudo no sistema de arquivos é consistente, por exemplo, quais etapas o processo fsck precisa tomar para restaurar e reparar?

- > edit: também seria útil se alguém pudesse esclarecer o que "write-through síncrono" refere-se a esta imagem também.

    
por Kaitlyn Mcmordie 25.10.2011 / 03:54

3 respostas

12

Metadados são informações sobre dados. Se você pensar em um arquivo de texto, a seqüência de letras desse arquivo de texto é o dado real que o arquivo contém. No entanto, o arquivo tem um nome, um proprietário, uma data de criação, um local no meio de armazenamento, etc. Todas essas informações são metadados. Observe que os metadados podem ser manipulados da mesma maneira que os dados. Por exemplo, o Unix armazena metadados de arquivos em arquivos de dados chamados diretórios (ou pastas nesta nova era da computação: -)

O sistema de arquivos Unix usa uma unidade básica de armazenamento chamada inodes . Um inode individual pode conter dados de arquivos reais, informações de diretório (metadados) ou não ser utilizado (gratuito). Observe que o ato de criar um novo arquivo envolve alterar o estado de um inode de livre para alocado, gravar dados no novo arquivo e gravar metadados em um arquivo de diretório. É possível que um computador trave no meio desse tipo de operação, caso em que o sistema de arquivos pode estar corrompido .

A verificação do sistema de arquivos consiste em ler todos os inodes e tentar resolver o maior número possível de problemas de corrupção. Por exemplo, suponha que um inode não esteja na lista de inodes livres, mas não há entradas de diretório que digam que esse inode faz parte de um arquivo em qualquer um dos diretórios que o sistema de arquivos conhece. Este inode pode ser colocado de volta na lista de inodes livres.

Gravação síncrona é uma maneira de executar a gravação no disco de maneira a garantir que, se ocorrer uma falha, o sistema de arquivos possa ser recuperado. Por exemplo, quando você está criando um novo arquivo, precisa alocar um inode, criar o inode com seu conjunto de metadados e atualizar o arquivo que contém as informações do diretório. Com o write-thru síncrono , eles são feitos como ações separadas, uma por vez, nessa ordem. Se a falha ocorrer antes da gravação do diretório, o inode poderá ser colocado de volta na lista livre e a criação do arquivo não ocorreu.

Outros tipos de verificação do sistema de arquivos também são possíveis.

    
por 25.10.2011 / 04:14
5

No contexto dos sistemas de arquivos Unix ou Linux, "metadados" são informações sobre um arquivo: ID de usuário de quem é proprietário, permissões, tipo de arquivo (especial, regular, named pipe etc.) e quais blocos de disco o arquivo usa. Isso é tudo tipicamente mantido em uma estrutura no disco chamada "inode". Uma das informações em um inode é quantos "links" existem para o arquivo. Um arquivo normal normalmente tem 1, mas um diretório (que é principalmente um arquivo com uma marca de tipo de arquivo especial "Sou um diretório") tem pelo menos dois links. Tudo visível em um sistema de arquivos tem um link do diretório em que aparece, mas desde que cada diretório tem um "." nome, bem como seu nome comum, eles têm 2 links.

fsck pode varrer os "blocos de inode" do sistema de arquivos (os blocos de disco que contêm as estruturas de dados inode) para localizar inodes com uma contagem de links maior que 0. Um arquivo representado por um inode com um número de links maior que 0 deve aparecer em um diretório em algum lugar. Se esse inode não aparecer em um diretório, fsck coloca o arquivo no diretório conhecido, geralmente "lost + found" no topo do sistema de arquivos. Note que os sistemas de arquivos Unix / Linux normalmente não possuem nenhum metadado em um inode sobre qual diretório o inode pertence, apenas informações no arquivo de diretório sobre quais arquivos o diretório contém.

fsck pode usar outros metadados, como blocos de discos, que contêm os dados de um arquivo. fsck pode verificar se os blocos de discos que um inode diz pertencerem a um arquivo aparecem na "lista não alocada" do sistema de arquivos de blocos de disco. Potencialmente, fsck poderia verificar se dois ou mais inodes contêm os mesmos blocos de disco, o que indicaria algum tipo de corrupção de alocação múltipla.

A alocação de blocos de disco para arquivos aparece nos inodes em disco. A estrutura de árvore de associação de diretório de um sistema de arquivos aparece nos diretórios. Os inodes não aparecem e não estão alocados em diretórios. fsck aproveita essa separação para fazer reparos. Isso é bem diferente de sistemas como o MS-DOS ou o Windows antigo, em que uma "tabela de alocação de arquivos" mantinha a estrutura de árvore (associação de diretório) e a alocação de blocos de disco. Corrupto o "FAT" e você tem que ir digitalizar blocos de disco para ver o que eles contêm e como eles podem se encaixar.

    
por 25.10.2011 / 18:50
4

Metadados são "Dados sobre dados".

No caso do sistema de arquivos * nix, os metadados usados por fsck de um cabeçalho em cada bloco de dados apontam para uma entrada de diretório ou o próximo bloco de dados e as entradas correspondentes no diretório. fsck varre os blocos e verifica se as entradas de diretório correspondem e se os ponteiros de encaminhamento para o próximo bloco estão corretos.

Isso varia muito entre os sistemas de arquivos. Na verdade, quais metadados são armazenados e onde são armazenados é o que mais diferencia os vários sistemas de arquivos * nix. Os mais modernos também mantêm um arquivo de log de alterações nas estruturas de diretórios.

    
por 25.10.2011 / 04:04