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==
==A partir daqui, precisa de revisão==
Possui [[journaling]] de [[metadados]] que vem com um robusto conjunto de funções e é otimizado para escalabilidade. Entretanto é recomendado usar este sistema de arquivos em sistemas rodando [[Linux]] com equipamento [[SCSI]] de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção.
 
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.
Pelo fato de o XFS criar [[cache |cachês]] agressivamente de dados em uso na memória [[RAM]], programas mal desenhados (que não tomam precauções na hora de escrever os arquivos em disco, e existem muitos deles) podem perder uma grande quantidade de dados se o sistema for desligado sem aviso.
 
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.
O Sistema Operacional X K Ubuntu, traz no seu particionador, dentro de seu instalador, a opção de utilizar este método de alocação. De fato o desempenho com relação à velocidade é evidente se comparado ao EXT3 ou ReiserFS. O sistema Ubuntu famoso pelo boot demorado, utilizando o sistema de arquivos XFS, passa a carregar ligeiramente como o Microsoft Windows XP.
 
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.
É necessário salientar, que a escolha o sistema de arquivos XFS, implica em o usuário obrigatoriamente, pelo menos no Ubuntu Linux, precisar utilizar o [[LILO]] (Linux Loader) ao invés do GRUB. Existe portanto uma imcompatibilidade para o arranque de sistema quando se opta pelo XFS. Um erro detectado no Ubunto Linux, na sua versão 7.04 foi que o LILO, não detectou automaticamente outros sistemas operacionais no Disco rígido, o que deverá ser feito manualmente.
 
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>. AcessoAcessado em 03 de outubro de 2007.
* [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]]