Neste livro , é mencionado o seguinte sobre endereçamento de sistema de arquivos:
Um sistema de arquivos não precisa se preocupar com onde um bloco deve ser colocado na mídia física, esse é o trabalho do driver do dispositivo
Tenho algumas perguntas relacionadas a isso:
- Os ponteiros que fazem parte dos inodes são compostos por índices de blocos lógicos ou endereços físicos reais?
- Se for o primeiro, onde está armazenado o mapeamento do índice de bloco para a localização física real?
- Existe um exemplo de como seria o endereçamento físico, por exemplo, para um dispositivo SSD?
Lógico, relativo ao início do dispositivo de bloco que contém o sistema de arquivos.
Esse mapeamento pode acontecer em várias camadas:
Se o LVM for usado, ele fornece uma tabela de mapeamento que mapeia intervalos de blocos de um dispositivo de volume lógico para algum dispositivo de bloco de volume físico + deslocamento.
O RAID de software também mapeia os blocos do dispositivo RAID de alguma forma (simples e sistemática) para os blocos do(s) dispositivo(s) de bloco subjacente(s), se usados.
Um dispositivo de bloco de partição aplica um deslocamento simples aos números dos blocos lógicos, igual à distância do início da partição ao início do disco.
SATA, SAS e NVMe modernos usam endereçamento baseado em blocos lógicos numerados a partir do início do dispositivo, de forma que apenas o próprio disco conheça a localização física real. Para HDDs, o clássico endereçamento físico Cilindro/Cabeça/Setor tornou-se obsoleto há muito tempo: os HDDs modernos provavelmente terão mais setores físicos nos cilindros externos do que nos internos, e pode haver outras complicações também. Para SSDs, o número do bloco lógico é mapeado por meio de uma tabela de nivelamento de desgaste para encontrar o número real do bloco físico.
Quando você visualiza cada camada isoladamente, é comum chamar o número do bloco de nível superior de "lógico" e o de nível inferior de "físico", mas quando várias camadas são empilhadas umas sobre as outras, elas são efetivamente todas "lógico" de um modo ou de outro, até chegar ao próprio dispositivo de armazenamento.
A menos que você esteja desenvolvendo/depurando/hackeando o firmware de um SSD real ou examinando forensemente chips de memória flash soltos dessoldados de um SSD, é provável que você nunca tenha acesso ao endereçamento físico real. Podem estar envolvidas soluções proprietárias e específicas do fornecedor (tradução: cada fabricante pode fazê-lo da maneira que achar melhor, e as implementações exatas são provavelmente consideradas segredos comerciais). A situação é semelhante com os HDDs modernos.
Do ponto de vista de um kernel, todos os dispositivos de armazenamento modernos são apenas longas linhas de blocos lógicos de tamanho fixo, numerados com números de bloco crescentes simples, começando no bloco #0 no início do dispositivo. O endereçamento físico real não é uma preocupação prática fora do dispositivo de armazenamento real.