1. Mas você precisa alocar algum disco sobressalente ou pool do zfs para fazer isso manualmente? ou isso é intrínseco por zfs?
Os dados afetados precisam ser redundantes para que isso aconteça. Essa redundância pode ser obtida sem discos extras. Vários discos também não implicam redundância.
O ZFS oferece suporte a dispositivos sobressalentes, mas eles estão aqui para substituir outros dispositivos que estão em estado de falha. Eles não são usados para redundância de dados.
2. O sistema de arquivos zfs de disco único possui esse recurso ou você precisa obter o RAIDZ?
Qualquer que seja a configuração do pool, os dados corrompidos são sempre detectados com o ZFS, a menos que você desative explicitamente checksums, mas isso seria uma idéia muito ruim.
Um único conjunto de discos pode recuperar um bloco corrompido quando contém metadados. Os blocos que contêm dados de arquivo só podem ser recuperados se a propriedade de cópias estiver definida como 2 ou superior.
Vários conjuntos de discos em uma configuração distribuída são semelhantes aos conjuntos de discos individuais, ou seja, os metadados podem sobreviver à decomposição de disco, e a presença de blocos é necessária para a auto-recuperação de dados de arquivos.
Vários conjuntos de discos em uma configuração redundante (mirror, raidz, raidz2, raidz3) podem recuperar qualquer problema de decomposição de disco (a menos, é claro, que uma situação de erro em massa como vários discos falhem).
Erros são detectados quando o arquivo afetado (ou metadados ou bloco zvol) é lido. Se o ZFS puder recuperar o erro, o erro será corrigido de forma transparente e os dados corretos serão retornados. Caso contrário, um erro de leitura é relatado. Note que o checksum não é um ECC, então ele não pode ser usado para recuperar blocos quebrados, apenas para detectá-los.
Se você quiser verificar um pool inteiro sem esperar que uma leitura ocorra, você pode usar o mecanismo de depuração. O ZFS verifica todos os blocos usados e auto-cura os podres quando possível.