XFS: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
Revisão, retirada de texto parcial e descrição da estrutura. |
|||
Linha 11:
Foi disponibilizado em dezembro de 1994 no IRIX 5.3. Em março de 2000 o código fonte foi liberado para que a comunidade pudesse usá-lo em outras plataformas. Entre 1999 e 2000, a SGI fez apresentações para facilitar a adaptação do código do XFS para o [[Linux_(kernel)|Linux]]. Em maio de 2001 foi lançada a versão 1.0 para Linux, por meio de ''patches''. Finalmente, foi incorporado ao kernel 2.4.25, em fevereiro de 2004.
==Estrutura==
Por ter sido projetado para ser escalável e gerenciar arquivos grandes, o XFS usa estruturas baseadas em 64 bits, embora completamente compatíveis com 32 bits. Em plataformas de 64 bits, suporta um volume de 18 EiB e arquivos com até 8 EiB; em 32 bits, o tamanho do volume e de um arquivo é limitado a 16 TiB.
O tamanho do bloco deve ser menor ou igual ao tamanho da página; portanto pode ser de 512, 1024, 2048, 4096 (x86, x86-64), 8192 (várias arquiteturas RISC) ou 16384 (IA-64 - Itanium) bytes. Não utiliza mapa de bits para gerenciamento de blocos e nós-i.
Um volume XFS é dividido em grupos de alocação (AG: ''Allocation Group''), que são conjuntos de blocos (análogos aos grupos de blocos do Ext3 e grupos de cilindros do UFS1), cujo tamanho varia entre 16 MiB e 1 TiB. Por padrão são criados 8 grupos, exceto quando o tamanho da partição é maior que 8 GiB. A quantidade pode ser definida manualmente na formatação. Cada AG contém o superbloco (único, o superbloco em cada AG subseqüente é cópia do primeiro), os nós-i e informações dos blocos referentes ao próprio grupo.
Um nó-i tem um tamanho padrão de 256 bytes, podendo chegar a 2048 bytes, desde que não exceda o tamanho do bloco. Os nós-i são criados dinâmicamente, em grupos (''chunks'') de 64. Uma estrutura em árvore balanceada (''B-tree'') é usada para gerenciar esses grupos. Um nó-i é dividido em 3 partes: (i) o núcleo (''core''); (ii) área de dados (''data fork''); (ii) atributos estendidos (''extended attribute fork'').
O núcleo, cujo tamanho é 96 bytes, contém as seguintes informações, dentre outras: permissões e tipo do arquivo; dono (UID) e grupo (GID); número de referências (''nlink'', análogo ao ''hard link''); tempos (''atime'', ''ctime'', ''mtime''); tamanho do arquivo, em bytes; número de extensões.
A área de dados, quando o arquivo é regular, contém: (i) ponteiros para as extensões (no máximo 19, para nós-i de 256 bytes e sem o uso de atributos estendidos); ou (ii) ponteiro(s) para lista(s) de extensões (em árvores balanceadas). Neste caso, o ponteiro pode ser para um árvore em 2 níveis, onde o primeiro nível aponta para outra árvore, que finalmente irá conter os ponteiros para as extensões do arquivo. Cada árvore pode apontar para até 254 extensões.
A alocação é feita por extensões (''extents''), que são agrupamentos de blocos contíguos; cada extensão pode ter até 8 GiB, quando o tamanho do bloco é de 4 KiB (a estrutura que usa a extensão reserva 21 bits para o tamanho da extensão em blocos). Para cada AG são mantidas duas estruturas em árvore balanceada para gerenciar os blocos: uma ordenada (decrescentemente) pelo tamanho de cada extensão; outra pelo endereço do bloco inicial de cada extensão.
Possui ''[[journaling]]'' de [[metadados]] que vem com um robusto conjunto de funções.
==Referências==
* [1] SWEENEY, Adam; e outros. ''Scalability in the XFS file system''. ''Proceedings of the USENIX 1996 annual technical conference''. San Diego. 1996. Disponível em <http://oss.sgi.com/projects/xfs/papers/xfs_usenix/index.html>.
* [2] NAUJOK, Barry. ''XFS filesystem structure''. 2.ed. Silicon Graphics, Inc. 2006. Disponível em <http://oss.sgi.com/projects/xfs/publications.html>. Acessado em 03 de outubro de 2007.
[[Categoria:Sistemas de ficheiros]]
|