adding documentation on block size/ashift for zfs
parent
57a1d2fed3
commit
8cca034cb1
27
tools/zfs.md
27
tools/zfs.md
|
@ -142,3 +142,30 @@ Pour remonter le dataset il faut alors recharger la clé :
|
|||
```bash
|
||||
sudo zfs load-key pool/dataset && sudo zfs mount pool/dataset
|
||||
```
|
||||
|
||||
## Ashift ou comment casser la prod a retardement.
|
||||
|
||||
Un bloc est la plus petite taille sur laquelle une opération de lecture ou écriture peux être effectuer. Il y a une taille logique et une taille physique.
|
||||
|
||||
Théoriquement, la taille du bloc du disque est un compromis entre les performance séquentielles (sur de gros volumes de données contenus) et aléatoires (des petits volumes de données non continus).
|
||||
|
||||
En pratique, les vieux disques ont un taille de 512B, alors que les ssd et les disques récents sont en 4096B.
|
||||
|
||||
On peux lire la taille des bloc via:
|
||||
|
||||
```bash
|
||||
cat /sys/block/sdx/queue/logical_block_size
|
||||
> 512
|
||||
cat /sys/block/sdx/queue/physical_block_size
|
||||
> 4096
|
||||
```
|
||||
|
||||
Avec zfs, la taille logique est controllé via le parametre ashift.
|
||||
```python
|
||||
block_size=2**ashift
|
||||
```
|
||||
|
||||
Le coup d'émuler une taille logique supérieure à la taille physique est minime, voir peut améliorer les performance dans certains cas. Au contraire, émuler une taille logique plus petite que la taille physique est couteux et dégrade les performances significativement.
|
||||
|
||||
Il est impossible de modifier le ashift d'une pool sans la recréer. Les pools du crans ont le parametre ashift=9 donc il faut une taille de bloc de 512B pour les disques.
|
||||
|
||||
|
|
Loading…
Reference in New Issue