Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sistemas de Ficheiros Linux

4,510 views

Published on

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

Published in: Technology, News & Politics
  • Be the first to comment

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. ?

×