Beinahe enzyklopädisch behandelt unser Schwerpunkt-Artikel über IPSEC verschlüsselte Verbindungen zwischen Linux, Windows, BSD, Solaris, Cisco- sowie ... (mehr)

Secure Erase

Wie bereits erläutert kann ein SSD Controller die Daten von einer einmalig beschriebenen Page nicht verändern, sondern muss zuvor den gesamten Block mit mehreren Pages löschen. Für die Wiederverwendung einer zuvor bereits benutzten SSD ist es daher sinnvoll, vor dem Einsatz alle Blöcke der SSD zu löschen. Bei den meisten SSDs klappt dies mit einem einfachen Secure Erase [2]. Ein Secure Erase soll laut ATA-Spezifikation das sichere Löschen aller gespeicherten Daten eines Datenträgers garantieren. Bei den meisten SSDs, die Secure Erase unterstützen, führt dies zum physischen Löschen aller Blöcke der SSD. Die SSD ist dann wieder mit der ursprünglichen optimalen Performance nutzbar, da alle Pages direkt beschrieben werden können. Bei einigen neueren SSDs ist das Secure Erase allerdings anders implementiert. Diese SSDs verschlüsseln automatisch alle geschriebenen Daten. Bei einem Secure Erase wird dann einfach der Schlüssel sicher gelöscht – die Daten können damit nicht mehr entschlüsselt werden, sind aber noch physisch vorhanden. Bei solchen SSDs werden somit nicht alle Blöcke der SSD gelöscht. In diesem Fall müssen die Blöcke per TRIM gelöscht werden, um für die neue Verwendung der SSD die optimale Performance zu bekommen. Windows 7 führt ein solches TRIM bei der Formatierung automatisch durch. Unter Linux bietet »hdparm« dazu zwar die »--trim-sector-ranges« -Option, die Manpage von hdparm 9.37 rät allerdings nach wie vor von ihrer Verwendung ab.

Partition Alignment

Unter Partition Alignment versteht man das Ausrichten von Partitionen an bestimmten Grenzen eines Datenträgers [3]. Ein korrektes Partition Alignment gewährleistet eine optimale Performance bei Datenzugriffen. Speziell bei SSDs (mit internen Page-Größen von beispielsweise 4.096 oder 8.192 Bytes), Festplatten mit 4 KiB-Sektoren (4.096 Bytes) und RAID-Volumes führt eine fehlerhafte Ausrichtung von Partitionen zu einer verminderten Performance [4].

In der Vergangenheit begann die erste Partition stets auf LBA-Adresse 63 (entspricht dem 64. Sektor), um kompatibel zu DOS und zur alten CHS-Adressierung (Cylinder/Head/Sector) zu bleiben. Die Größe eines solchen (logischen) Sektors beträgt 512 Byte. Bei normalen Festplatten (mit einer physischen Sektorgröße von 512 Byte) bringt das keine Nachteile. Neuere Festplatten mit einer physischen Sektorgröße von 4.096 Byte (4 KiB) emulieren zwar nach außen hin eine Sektorgröße von 512 Byte, arbeiten intern aber mit 4.096 Byte. Und auch SSDs arbeiten mit einer Pagegröße von 4 KiB beziehungsweise 8 KiB. Bei diesen neuen Festplatten und SSDs ist eine solche Partitionierung beginnend bei LBA-Adresse 63 daher sehr problematisch.

Formatiert der Benutzer eine solche Partition mit einem Dateisystem mit einer typischen Blockgröße von 4 KiB, passen die 4-KiB-Dateisystem-Blöcke nicht direkt in die 4 KiB oder 8 KiB großen Pages der SSD (Abbildung 3). Beim Schreiben eines einzelnen 4-KiB-Dateisystem-Blockes müssen dann zwei 4 KiB Pages verändert werden. Erschwerend kommt dabei hinzu, dass die jeweiligen 512-Byte-Sektoren erhalten bleiben müssen – es kommt damit zu einem Read/Modify/Write. Die Folge ist eine bis zu 25fach schlechtere Schreibperformance bei kleinen Dateizugriffen, wie Analysen von IBM zeigen [5].

Abbildung 3: DOS-kompatible Partitionen, die bei LBA Adresse 63 beginnen, führen zu erheblichen Performance-Nachteilen bei Datenzugriffen.

Um diese Probleme zu vermeiden, empfiehlt sich ein Alignment auf 1 MiB – damit ist man auf lange Sicht auf der sicheren Seite. Mit der aktuellen Adressierung in 512 Byte großen logischen Sektoren entspricht das 2048 Sektoren (Abbildung 4). Neuere Windows-Versionen (Windows Vista, Windows 7, Windows Server 2008) führen bei Partitionen größer 4 GiB ein solches Alignment auf 1 MiB durch. Kleinere Partitionen richten diese Windows-Versionen auf 64 KiB aus. Ältere Versionen (Windows XP, Windows Server 2003) benötigen ein manuelles Alignment. Aktuelle Linux-Distributionen verwenden ebenfalls ein Alignment von 1 MiB bei der Installation. Beim späteren Einrichten von Partitionen mit »fdisk« sind dessen Optionen »c« (Deaktiveren des DOS-Kompatibilitätsmodus) und »u« (verwendet Sektoren statt Zylinder als Einheiten) nötig, um ein korrektes Alignment zu erhalten.

Abbildung 4: Eine korrekt ausgerichtete Partition bringt optimale Performance bei Lese- und Schreiboperationen.

Zur Kontrolle zeigt »fdisk -l -u« die Startsektoren aller Partitionen. Sind diese Sektoren durch 2048 teilbar, sind alle Partitionen korrekt ausgerichtet (Listing 2). Neue LVM-Versionen (ab Version 2.02.73) verwenden dank eines Patches von Mike Snitzer ebenfalls ein Alignment von 1 MiB [6].

Listing 2

Partition-Alignment mit fdisk

 

Artikel als PDF herunterladen

SSD-Performance optimieren 3,11 MB
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019