# ZFS Ashift

Bei **ZFS** bezeichnet **`ashift`** die **Blockgröße (Sektorgröße)**, mit der ZFS **intern auf einem vdev arbeitet**.  
Der Wert ist ein **Exponent zur Basis 2**:

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-sektorgr%C3%B6%C3%9Fe-%3D-2%5Eashi"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`Sektorgröße = 2^ashift Bytes`</div></div>---

## Bedeutung von ashift 9 bis 12

<div class="TyagGW_tableContainer" id="bkmrk-ashift-sektorgr%C3%B6%C3%9Fe-e"><div class="group TyagGW_tableWrapper flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="458" data-start="241"><thead data-end="278" data-start="241"><tr data-end="278" data-start="241"><th data-col-size="sm" data-end="250" data-start="241">ashift</th><th data-col-size="sm" data-end="264" data-start="250">Sektorgröße</th><th data-col-size="sm" data-end="278" data-start="264">Entspricht</th></tr></thead><tbody data-end="458" data-start="313"><tr data-end="356" data-start="313"><td data-col-size="sm" data-end="317" data-start="313">9</td><td data-col-size="sm" data-end="328" data-start="317">512 Byte</td><td data-col-size="sm" data-end="356" data-start="328">klassische 512B-Sektoren</td></tr><tr data-end="383" data-start="357"><td data-col-size="sm" data-end="362" data-start="357">10</td><td data-col-size="sm" data-end="375" data-start="362">1.024 Byte</td><td data-col-size="sm" data-end="383" data-start="375">1 KB</td></tr><tr data-end="410" data-start="384"><td data-col-size="sm" data-end="389" data-start="384">11</td><td data-col-size="sm" data-end="402" data-start="389">2.048 Byte</td><td data-col-size="sm" data-end="410" data-start="402">2 KB</td></tr><tr data-end="458" data-start="411"><td data-col-size="sm" data-end="416" data-start="411">12</td><td data-col-size="sm" data-end="429" data-start="416">4.096 Byte</td><td data-col-size="sm" data-end="458" data-start="429">**4 KB (Standard heute)**</td></tr></tbody></table>

</div></div>---

## Warum ashift wichtig ist

ZFS schreibt **immer in ashift-großen Blöcken** auf die Platte.

Wenn:

- die **physische Sektorgröße** der Platte größer ist als ashift
- oder das Storage intern mit größeren Blöcken arbeitet

→ entstehen **Read-Modify-Write-Zyklen**, was:

- Performance kostet
- unnötige Schreibvorgänge erzeugt
- SSDs schneller altern lässt

---

## Praxisbezug (heute sehr wichtig)

### Moderne Festplatten &amp; SSDs

- Fast alle **HDDs**: 4K physische Sektoren (Advanced Format)
- **SSDs / NVMe**: intern ebenfalls ≥ 4K

👉 **ashift=12 ist heute der sichere Standard**

---

## Typische Szenarien

### ashift=9 (512B)

❌ **Nicht mehr empfehlenswert**

- schlecht für moderne HDDs/SSDs
- Performanceeinbrüche möglich
- kann nicht nachträglich geändert werden

---

### ashift=12 (4K)

✅ **Best Practice**

- kompatibel mit:
    
    
    - HDDs
    - SSDs
    - NVMe
    - RAID-Controllern
- minimaler Platzverlust
- stabile Performance

---

### ashift &gt; 12 (z. B. 13 = 8K)

⚠️ Nur sinnvoll bei:

- speziellen Enterprise-Systemen
- dediziertem Storage mit garantierter Blockgröße

---

## Wichtig: ashift ist **final**

- Wird **beim Erstellen des vdevs festgelegt**
- **Nicht änderbar**
- Auch beim Ersetzen einzelner Platten bleibt ashift gleich

👉 Fehlerhafte Wahl = Pool neu erstellen

---

## Empfehlung (kurz &amp; klar)

<div class="TyagGW_tableContainer" id="bkmrk-einsatz-empfehlung-h"><div class="group TyagGW_tableWrapper flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1980" data-start="1780"><thead data-end="1804" data-start="1780"><tr data-end="1804" data-start="1780"><th data-col-size="sm" data-end="1790" data-start="1780">Einsatz</th><th data-col-size="sm" data-end="1804" data-start="1790">Empfehlung</th></tr></thead><tbody data-end="1980" data-start="1826"><tr data-end="1862" data-start="1826"><td data-col-size="sm" data-end="1845" data-start="1826">Heimserver / NAS</td><td data-col-size="sm" data-end="1862" data-start="1845">**ashift=12**</td></tr><tr data-end="1893" data-start="1863"><td data-col-size="sm" data-end="1876" data-start="1863">SSD / NVMe</td><td data-col-size="sm" data-end="1893" data-start="1876">**ashift=12**</td></tr><tr data-end="1933" data-start="1894"><td data-col-size="sm" data-end="1916" data-start="1894">Unbekannte Hardware</td><td data-col-size="sm" data-end="1933" data-start="1916">**ashift=12**</td></tr><tr data-end="1980" data-start="1934"><td data-col-size="sm" data-end="1954" data-start="1934">Alte 512B-Platten</td><td data-col-size="sm" data-end="1980" data-start="1954">trotzdem **ashift=12**</td></tr></tbody></table>

</div></div>---

## Prüfen, welchen ashift ein Pool hat

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-zdb--c-poolname-%7C-gr"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`zdb -C poolname | grep ashift`</div></div>---

Wenn du möchtest, erkläre ich dir auch:

- **Zusammenspiel von ashift &amp; recordsize**
- **Einfluss auf ZVOLs / VM-Storage**
- **ashift bei RAIDZ vs. Mirror**
- **Performance-Tuning für SSD-Pools**