Sistemas de Ficheiros Linux

4,087 views
3,972 views

Published on

Sistemas de Ficheiros Linux, Deep Dive:
Passado, presente e futuro

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,087
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
74
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sistemas de Ficheiros Linux

  1. 1. Sistemas de Ficheiros Miguel Mascarenhas Filipe, Junho de 2009, SAPO.PT Mergulho Profundo
  2. 2. Mapa <ul><li>Ideias e Conceitos
  3. 3. Sistemas de Ficheiros Actuais </li><ul><li>Características diferenciadoras
  4. 4. Problemas </li></ul><li>Desenvolvimentos Actuais </li><ul><li>Reiser4
  5. 5. Ext4
  6. 6. ZFS
  7. 7. BtrFS </li></ul></ul>
  8. 8. Algumas Ideias, Conceitos <ul><li>Block based
  9. 9. Journaling
  10. 10. Log based
  11. 11. Hashtables
  12. 12. Fragmentação </li></ul><ul><li>Extent based
  13. 13. Copy on Write
  14. 14. Btrees, Htrees
  15. 15. Bitmaps, Listas
  16. 16. Solid State Disks </li></ul>
  17. 17. Mais Ideias e Conceitos <ul><li>Fiabilidade perante erros: </li><ul><li>Dos dados
  18. 18. Dos meta-dados </li></ul><li>Como ? </li><ul><li>Redundância interna
  19. 19. Códigos de correcção de erros
  20. 20. Canários
  21. 21. RAID (?) </li></ul></ul><ul><li>Integrar no FS : </li><ul><li>Gestão de volumes
  22. 22. Gestão de discos
  23. 23. Backups
  24. 24. Snapshots
  25. 25. Compressão
  26. 26. Cifra ( encriptação )
  27. 27. Data dedup </li></ul></ul>
  28. 28. Sistemas de Ficheiros actuais <ul><li>Ext2 e Ext3
  29. 29. XFS
  30. 30. ReiserFS
  31. 31. ... outros ... </li></ul>
  32. 32. Ext3 <ul><li>Evolução do Ext2
  33. 33. Journaling FS
  34. 34. Muito rápido em operações com metadata
  35. 35. Performance muito equilibrada numa grande variedade de workloads
  36. 36. Muito fiável e muito robusto a “ crashes ”
  37. 37. Desenho simples e bem dominado (quando comparado com os competidores) </li></ul>
  38. 38. Um ficheiro em Ext3
  39. 39. Ext3- Limitações <ul><li>Directorias: </li><ul><li>Com mais de 32k sub-directorias (limite de contador)
  40. 40. Com mais de ~32k ficheiros (degradação de performance) </li><ul><li>Recentemente usa Htree's, tive problemas nos ~1M </li></ul></ul><li>Data intensive workloads
  41. 41. Nº máximo de ficheiros determinado na criação
  42. 42. Não lida muito bem com: </li><ul><li>Ficheiros de grande dimensões (>1Gb)
  43. 43. Sistemas de ficheiros de grandes dimensões </li></ul><li>Tolera mal corrupção de dados no hardware/disco </li></ul>
  44. 44. XFS <ul><li>Optimizado para “ data intensive workloads ”
  45. 45. Muito bom a lidar com: </li><ul><li>Ficheiros de grandes dimensões
  46. 46. Sistemas de ficheiros de grandes dimensões
  47. 47. Streaming de dados a baixas latências
  48. 48. Streaming de dados à velocidade dos disco ( platter speed )
  49. 49. Arrays de discos de alta capacidade </li></ul><li>Muito bom a tirar partido de multi-processador </li></ul>
  50. 50. XFS – limitações <ul><li>Mais difícil de manter, poucas pessoas com conhecimento para o manter/desenvolver
  51. 51. Código muito complexo, é um port /evolução do XFS presente no IRIX nos anos 90
  52. 52. Menos bom em operações com metadata
  53. 53. Por design o sistema de journaling é mais “ sensível ” que o Ext3
  54. 54. Tolera mal corrupção de dados no hardware/disco </li></ul>
  55. 55. ReiserFS <ul><li>Muito bom com ficheiros de dimensão reduzida (<4k) </li><ul><li>Tail packing </li></ul><li>Muito rápido
  56. 56. Escala muito bem em: </li><ul><li>Nº de ficheiros
  57. 57. Tamanho do sistema de ficheiros </li></ul></ul>
  58. 58. ReiserFS – Limitações <ul><li>Já não é mantido pelos criadores
  59. 59. Filesystem aging
  60. 60. Alguns bugs de corrupção de dados
  61. 61. Escala mal em sistemas SMP (trinco global a cada mount-point)
  62. 62. Código difícil de manter/seguir
  63. 63. Tolera mal corrupção de dados no hardware/disco </li></ul>
  64. 64. Limitações de todos <ul>O aumento de capacidade dos discos não é acompanhada pela velocidade de leitura ou tempos de seek <ul><li>Gerir maior volume de dados: </li><ul><li>Quantidade de ficheiros/directorias
  65. 65. Tamanho dos ficheiros/directorias
  66. 66. Tempo de criação, Fsck, reparação, desfragmentação </li></ul><li>Gerir maior carga de IO </li><ul><li>Manter platter speed </li></ul></ul></ul>
  67. 67. Mais Limitações <ul><li>Discos terão cada vez mais bad blocks e mais faltas silenciosas </li><ul><li>Comportamento perante corrupção (activa e passiva) dos dados </li></ul><li>Gestão de Backups
  68. 68. Gestão de volumes lógicos
  69. 69. Gestão de discos físicos, RAIDs
  70. 70. Boa performance com Solid State Disks </li></ul>
  71. 71. Reiser4 <ul><li>Btrees (dancing trees)
  72. 72. Transaccional
  73. 73. Journaled
  74. 74. Abstração para o “on-disk format”: </li><ul><li>Plugins para compressão, cifra, etc.. </li></ul><li>Ficheiro como directório </li><ul><li>Corridas e problemas de segurança </li></ul><li>Delayed Allocation
  75. 75. Anunciada performance impressionante </li></ul>
  76. 76. Reiser4 <ul><li>Problemas: </li><ul><li>Comunicação com a comunidade
  77. 77. Objecções técnicas a decisões arquitecturais
  78. 78. Hans Reiser (o criador) foi preso
  79. 79. Empresa foi desmantelada
  80. 80. Desenvolvimento parou </li></ul><li>Não procura resolver problemas de: </li><ul><li>Corrupção de dados no hardware/disco
  81. 81. Gestão de volumes, snapshots, backups </li></ul></ul>
  82. 82. Ext4 <ul><li>Escala melhor, mais velocidade, mais robustês
  83. 83. Lida melhor com ficheiros/sistemas de grandes dimensões. </li><ul><li>Extent based filesystem
  84. 84. Delayed Allocation
  85. 85. Persistent Pre-allocation
  86. 86. Faster fsck ( proporcional aos dados na partição )
  87. 87. Online Defragmentation
  88. 88. Htrees para extents, directory entries e links </li></ul></ul>
  89. 89. Ext4 <ul><li>Tolera melhor faltas no hardware/disco: </li><ul><li>Checksumming do journal
  90. 90. canários/health checks nos inodes válidos </li></ul><li>Suporte para gigantes (>1 EB): </li><ul><li>Volumes e Ficheiros (2^48/48bits) </li></ul><li>Retro compatível
  91. 91. Resolução de tempo ao nanosegundo
  92. 92. Fsck() bastante mais rápido
  93. 93. Journal é opcional </li></ul>
  94. 94. ZFS Grande pioneiro de novos avanços e desenvolvimento em sistemas de ficheiros. “ The last word on File Systems” “ The Zettabyte File System” 1 ZB (10^21) = 1024 EB; 1 EB (10^18) = 1024 PB; 1 PB (10^15) = 1024 TB
  95. 95. ZFS <ul><li>Suporte “multi-volume”/storage pool </li><ul><li>Capacidade de gerir/usar vários discos.
  96. 96. Níveis de RAID: 0, 1, z, 2z... </li><ul><li>RAIDz e RAIDz2 são melhorias do raid5 e 6 </li></ul><li>Unifica gestão de volumes, discos, mount-points. </li></ul><li>Copy-On-Write: </li><ul><li>Snapshotting/backups
  97. 97. Desfragmentação automática
  98. 98. Algumas capacidades transaccionais. </li></ul><li>Data e Metadata checksumming </li></ul>
  99. 99. ZFS <ul><li>Self-Healing </li><ul><li>Sistema integrado raid/checksumming permite detectar faltas silenciosas no hardware/disco
  100. 100. Corrige automáticamente, notifica administrador </li></ul><li>Dimensões gigantes (2^128/128bit) </li><ul><li>Volumes
  101. 101. Nº de ficheiros
  102. 102. Nº de directorias ou ficheiros por directoria
  103. 103. Tamanho de ficheiros
  104. 104. Nº de sub-volumes e snapshots </li></ul></ul>
  105. 105. ZFS <ul><li>Licença incompatível com a GPL
  106. 106. Não integraria bem com os internals do Linux
  107. 107. Linux port : ZFS-FUSE </li><ul><li>Várias ineficiências de performance
  108. 108. Problemas de fiabilidade, corrupção de dados
  109. 109. Desenvolvimento estagnou </li></ul><li>ZFS tem vários problemas </li><ul><li>Mas são pouco conhecidos, porque... </li><ul><li>Base de utilizadores efectiva é muito pequena </li></ul></ul></ul>
  110. 110. BtrFS <ul><li>Novo FS, começou em 2007, integrado no Linux-2.6.29 (experimental). Criado por Chris Mason, kernel hacker da Oracle
  111. 111. Bem recebido pela comunidade de hackers do Linux kernel.
  112. 112. Pretensões de ser o sucessor do Ext4
  113. 113. Desenvolvido em parceria pela comunidade Linux, com investimento explícito de: </li><ul><li>Oracle, HP, IBM, RedHat, SuSE, outros </li></ul></ul>
  114. 114. BtrFS <ul><li>Extent Based, Copy on Write, Delayed Allocation
  115. 115. Dimensões gigantes (2^64/64bit) </li><ul><li>nº ficheiros, tamanho de ficheiros, volumes, snapshots ... </li></ul><li>Multi-Disco e Multi-Volume
  116. 116. Writable Snapshots
  117. 117. Data e Metadata checksumming
  118. 118. Compressão, cifra e data “ dedup ” </li></ul>
  119. 119. BtrFS <ul><li>Online fsck e desfragmentação
  120. 120. Offline fsck muito rápido
  121. 121. B-Tree para tudo: </li><ul><li>Sub-Volumes, Snapshots
  122. 122. dados (extents), Dir entries, inodes </li></ul><li>Multi-threaded, multi-processador friendly
  123. 123. Design contempla Solid State Disks
  124. 124. Grande foco em minimizar o nº de seeks
  125. 125. Redundância distinta para meta-dados e dados </li></ul>
  126. 126. BtrFS <ul><li>Desenho modular, podemos desligar/ligar: </li><ul><li>Checksumming de dados
  127. 127. Checksumming de meta-dados
  128. 128. Copy-on-Write (é mau para BDs)
  129. 129. modo SSD ou modo normal </li></ul><li>Forte integração com outros componentes do kernel </li><ul><li>Multi-disk: md layer: raid5, raid6 e outros (planeado)
  130. 130. Bio, thread-pool, locking, rcu, buffer cache, etc </li></ul></ul>
  131. 131. BtrFS <ul><li>O nome BtrFS vem de: </li><ul><li>Baseado em B-Tree
  132. 132. Better FS </li></ul><li>Possível migrar um volume ext3 ou ext4 para btrfs usando o espaço livre da partição.
  133. 133. Em forte desenvolvimento, patches are welcome
  134. 134. http://btrfs.wiki.kernel.org
  135. 135. http://en.wikipedia.org/wiki/Btrfs </li></ul>
  136. 136. Outros <ul><li>Tux3 - http://tux3.org/
  137. 137. LogFS - http://logfs.org/
  138. 138. NILFS - http://www.nilfs.org/ </li></ul>
  139. 139. ?

×