# MANUAL TÉCNICO - ARQUITETURA ZFS E PLANEJAMENTO - TRUENAS SCALE

**Código:** ITGENG 0016/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

> ⚠️ **REGRA DE OURO:**
> 1. **Autor:** João Pedro Toledo Gonçalves.
> 2. **Descrição:** Criação do documento.

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Definir a arquitetura lógica de armazenamento ZFS, incluindo escolha de VDEVs, dimensionamento de hardware (Sizing) e estratégias de redundância para diferentes cargas de trabalho (VMs, Backup, Arquivos).

## 3. PRÉ-REQUISITOS
> Lista de hardware e conceitos necessários.
*   [ ] Servidor compatível com TrueNAS Scale (HCL verificado).
*   [ ] Discos SAS/SATA em modo Passthrough (HBA) ou AHCI. **Jamais Hardware RAID.**
*   [ ] Memória ECC (Recomendado para produção).

## 4. CONCEITOS ZFS E REDUNDÂNCIA (VDEVs)

> ℹ️ **NOTA:** Um Pool ZFS é composto por um ou mais VDEVs. Se UM VDEV falhar completamente, **TODO O POOL É PERDIDO**. A redundância ocorre no nível do VDEV.

### Tipos de VDEV de Dados

| Tipo | Descrição | Custo/GB | Performance | Segurança | Uso Recomendado |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Mirror** | Espelhamento (RAID 1/10). 2+ discos. | Alto (50% útil) | Alta (Leitura/Escrita) | Alta | VMs, Bancos de Dados, iSCSI. |
| **RAIDZ1** | Paridade Simples (RAID 5). Min 3 discos. | Baixo | Média | Baixa (Risco na resilver) | Não recomendado para discos > 2TB. |
| **RAIDZ2** | Paridade Dupla (RAID 6). Min 4 discos. | Médio | Média/Baixa | Muito Alta | File Server, Backups, Mídia. |
| **RAIDZ3** | Paridade Tripla. Min 5 discos. | Médio | Baixa | Extrema | Cold Storage, Arquivamento Crítico. |

### VDEVs Especiais (Performance)

1.  **LOG (SLOG):**
    *   **Função:** Acelera escritas síncronas (NFS, Banco de Dados, iSCSI). Move o ZIL (ZFS Intent Log) para um SSD rápido.
    *   **Hardware:** SSD High Endurance (Optane é ideal). Não precisa ser grande (16GB-32GB sobraram).
    *   **Risco:** Se o SLOG falhar sem mirror, pode haver perda de dados em escritas não confirmadas durante um crash.

2.  **CACHE (L2ARC):**
    *   **Função:** Extensão da RAM (ARC) para leitura. Armazena dados acessados frequentemente que não cabem na RAM.
    *   **Hardware:** NVMe/SSD rápido de leitura.
    *   **Atenção:** Consome RAM para mapear o L2ARC. Só use se tiver >64GB de RAM e ela já estiver cheia.

3.  **METADATA (Special VDEV):**
    *   **Função:** Armazena metadados do filesystem e arquivos pequenos. Acelera monstruosamente listagem de diretórios e buscas.
    *   **Hardware:** SSD NVMe em Mirror (Obrigatorio).
    *   **Crítico:** **Se este VDEV falhar, o pool morre.** Sempre usar espelhamento (Mirror).

![Diagrama de VDEVs ZFS](assets/zfs_architecture.png)
*(Imagem ilustrativa da estrutura de Pool > VDEV > Discos)*

## 5. DIMENSIONAMENTO DE HARDWARE (SIZING)

### Memória RAM (ARC)
O ZFS usa RAM agressivamente para cache (ARC). É o componente mais importante para performance.

> 🚀 **REGRA BÁSICA:** 1 GB de RAM para cada 1 TB de Espaço Bruto.

**Cenários Ajustados:**
*   **File Server Simples/Backup:** Pode usar menos (ex: 8GB RAM para 20TB), mas a performance cairá.
*   **VMs/iSCSI:** Mínimo 32GB ou siga a regra de 1GB/1TB, o que for maior.
*   **Deduplicação:** Requer **5 GB de RAM por TB de dados**.
    > ⚠️ **PERIGO:** **Não ative Deduplicação** a menos que tenha certeza absoluta e RAM infinita. Use Compressão (`LZ4` ou `ZSTD`).

### CPU
*   **Compressão (LZ4):** Leve, qualquer CPU moderna aguenta.
*   **Compressão (ZSTD-High):** Exige multicore moderno.
*   **Encripatação:** Exige suporte AES-NI.

## 6. CENÁRIOS RECOMENDADOS

### Cenário A: Alta Performance (Virtualização/Databases)
*   **Layout:** Mirrors de SSDs ou HDDs SAS 10k/15k.
*   **Rede:** 10GbE / 25GbE iSCSI.
*   **Extras:** SLOG (Optane) + RAM Máxima.
*   **Record Size:** Pequeno (8k, 16k) na tunagem do Dataset/Zvol.

### Cenário B: Capacidade e Segurança (File Server / Mídia)
*   **Layout:** RAIDZ2 (6-10 discos por VDEV). Evite VDEVs muito largos (>12 discos).
*   **Extras:** Special VDEV (Metadata) em SSD para acelerar navegação de pastas.
*   **Record Size:** Grande (1M) para arquivos de mídia/backup.

### Cenário C: Backup Puro (Veeam Repo)
*   **Layout:** RAIDZ2 ou RAIDZ3.
*   **Compressão:** ZSTD (Nível 3 ou superior) para economizar espaço.
*   **Foco:** Custo/GB.

## 7. DADOS TÉCNICOS

| Parâmetro | Valor Padrão | Notas |
| :--- | :--- | :--- |
| **Compressão Padrão** | `LZ4` | Excelente equilíbrio. Mude para `ZSTD` se CPU sobrar. |
| **Sync** | `Standard` | Para segurança total, use `Always` (Requer SLOG). |
| **Atime** | `Off` | Desligue para evitar escritas desnecessárias a cada leitura. |
| **Dedup** | `Off` | **NÃO LIGUE**. Performance penalty servero. |

## 8. VALIDAÇÃO (CHECKLIST DE DESIGN)

- [ ] O Hardware tem acesso direto aos discos (Sem RAID Controller)?
- [ ] A quantidade de RAM está adequada ao tamanho do pool?
- [ ] Se usar RAIDZ1, os discos são menores que 2TB? (Se >2TB, use Z2).
- [ ] Se usar Special VDEV ou SLOG, eles estão redundantes (Mirror)?
- [ ] Existe plano de backup off-site? (RAID não é Backup).
