NetApp-Shelf - 520-Byte Sektoren
Diese Anleitung erklärt warum 520-Byte-Sektoren existieren, wie man betroffene Platten identifiziert und welche Wege es gibt, sie nutzbar zu machen (oder bewusst auszublenden), ohne produktive Datenträger anzutasten.
Inhalt
- Warum haben manche NetApp-Platten 520 B/Sektor?
- Typische Symptome & Kernel-Logs
- Voraussetzungen & Pakete
- Betroffene Platten sicher finden (ohne Risiko für Daten)
- Entscheidung: Reformatieren, Übersetzen oder Ausblenden
- Reformatieren auf 512 B/4 Kn (falls erlaubt)
- Fortschritt & Status überwachen
- Nachbereitung: Rescan, Multipath, Partition/FS
- Wenn Reformatierung verweigert wird (Vendor-Lock)
- Optional: Multipath-Spam vermeiden (Blacklist)
- Troubleshooting-Tabelle
- Anhang: hilfreiche One-Liner/Skripte
1) Warum haben manche NetApp-Platten 520 Byte pro Sektor?
- 520 B = 512 B Nutzdaten + 8 B T10 PI/DIF (Protection Information).
- DIF/PI fügt pro Block Tags/Checksummen hinzu (u. a. LBA-Tag), womit End-to-End-Integrität von Host → Controller → Medium geprüft wird.
- Vorteile: bessere Fehlererkennung, Schutz gegen „silent corruption“, wichtig in Enterprise-Storage (z. B. ONTAP).
- Nachteil unter Standard-Linux: Der Kernel erwartet 512n/4Kn. 520 B werden als „unsupported“ abgelehnt.
Merke: 4160 B physische Blockgröße in Logs = 8 × 520 B.
2) Typische Symptome & Kernel-Logs
Unsupported sector size 520
Preferred minimum I/O size 4096 bytes not a multiple of physical block size (4160 bytes)
- Multipath:
failed to setup map ... uevent trigger error
- Geräte erscheinen mehrfach (mehrere SAS-Pfade), z. B.
/dev/sdcx
,/dev/sdcy
,/dev/sg108
,/dev/sg109
– sind aber derselbe physische Datenträger.
3) Voraussetzungen & Pakete
# Debian/Ubuntu
apt-get update
apt-get install -y sg3-utils lsscsi multipath-tools smartmontools
# RHEL/CentOS/Rocky/Alma
yum install -y sg3_utils lsscsi device-mapper-multipath smartmontools
sg_format
) zerstört alle Daten auf der betroffenen Platte. Diese Anleitung zeigt, wie du nur die neuen/unerwünschten 520 B-Platten anfasst und produktive Disks sicher ignorierst.4) Betroffene Platten sicher finden (ohne Risiko)
4.1 Geräte & Pfade auflisten
lsscsi -g | grep -E "NETAPP|HGST|Seagate|TOSHIBA" # Beispielhaft; Hersteller ggf. anpassen
# Ausgabe zeigt je Zeile: ... /dev/sdX /dev/sgY
4.2 Prüfen, ob 520 B gemeldet werden
Die sg*
-Geräte (SCSI generic) für Detailabfragen verwenden:
sg_readcap -l /dev/sg108
# Wichtige Zeilen:
# Logical block length=520 bytes
# Logical blocks per physical block exponent=3 [phys = 4160 bytes]
# Device size: ... 5.99 TB
4.3 Sicherstellen, dass es derselbe physische Datenträger ist (Multipath)
Bei mehreren Pfaden hat jedes einen eigenen /dev/sg*
. Die LU name (LUN-WWN) ist identisch:
sg_inq -i /dev/sg108 | grep -E "Unit serial number|LU name"
sg_inq -i /dev/sg109 | grep -E "Unit serial number|LU name"
# Sind LU name und/oder Unit serial identisch → gleicher Datenträger über zwei Pfade.
/dev/sg108
) zum selben Laufwerk verwenden!5) Entscheidung: Reformatieren, Übersetzen oder Ausblenden
Weg | Wann? | Pro | Contra |
---|---|---|---|
Reformatieren auf 512 B/4096 B | Nur bei neuen/leerem Laufwerk, wenn Firmware es erlaubt | Standard-Linux nutzbar, keine Spezial-HW | Vernichtet Daten; 2–4 h/6 TB (oft), manche NetApp-OEMs verbieten es |
On-the-fly Übersetzung (HBA/RAID mit DIF-Translation) | Wenn Reformat blockiert ist, aber Controller PI/DIF-Translation beherrscht | OS sieht 512 B, Laufwerk bleibt 520 B | Abhängig von Hardware-Modell/Firmware; nicht jeder HBA kann das |
Ausblenden/Blacklisten | Wenn Platte nicht benötigt/kompatibel ist | Ruhe im syslog/multipath | Platte bleibt ungenutzt |
6) Reformatieren auf 512 B/4 Kn (falls erlaubt)
LU name
und Unit serial number
. Niemals produktive Disks anfassen.6.1 Multipath kurz pausieren (verhindert Verwirrung)
systemctl stop multipathd
multipath -F # alle Maps flushen
6.2 Probe-Format (Dry-Run)
Testet nur, ob die Firmware 512/4096 akzeptiert – es passiert noch nichts:
# 512-Byte testen
sg_format --format --size=512 --six --fmtpinfo=0 --dry-run /dev/sg108
# 4Kn (4096) als Alternative testen
sg_format --format --size=4096 --six --fmtpinfo=0 --dry-run /dev/sg108
# Typische Fehler bei Vendor-Lock:
# "INVALID FIELD IN CDB" oder "Device not ready" → Reformat nicht erlaubt.
6.3 Schnellstmögliches Format anstoßen
Wenn der Dry-Run OK ist, starte das Format. Manche Firmwares unterstützen „fast“/„complete list“ – andere ignorieren es.
# Schnellvariante versuchen (falls Firmware unterstützt):
sg_format --format --size=512 --six --fmtpinfo=0 --cmplst=1 --early /dev/sg108
# Fällt Firmware auf Full-Format zurück, dauert es entsprechend (2–4h/6TB).
# Alternative "fast format":
sg_format --format --size=512 --six --fmtpinfo=0 --ffmt=1 --early /dev/sg108
Hinweis: --early
kehrt sofort zurück, das Laufwerk formatiert im Hintergrund weiter. Auf Systemen ohne --early
beende das Userspace-Tool notfalls mit Ctrl+C
; der Vorgang im Laufwerk läuft weiter.
7) Fortschritt & Status überwachen
# Regelmäßig Sense-Daten abfragen (zeigt Fortschritt, wenn verfügbar)
sg_requests /dev/sg108
# Beispielausgabe:
# Sense key: Not Ready
# Additional sense: Logical unit not ready, format in progress
# Progress indication: 37.50%
# Alternativ (je nach Build):
sg_turs /dev/sg108 # "Unit ready" wenn fertig; manche Builds können nicht anzeigen
# Live-Monitoring:
watch -n 60 sg_requests /dev/sg108
FORMAT UNIT
lässt sich nicht sauber abbrechen. Stromlos/Slot ziehen ist riskant und endet oft damit, dass du erneut formatieren musst.8) Nachbereitung: Rescan, Multipath, Partition & Filesystem
# Nach Abschluss erneut einlesen
rescan-scsi-bus.sh -a # ggf. aus 'sg3-utils' Zusatzpaket
# prüfen:
sg_readcap -l /dev/sg108
# Erwartet: "Logical block length=512 bytes" (oder 4096)
# Blockgeräte-Ansicht
lsblk -o NAME,HCTL,WWN,MODEL,LOG-SEC,PHY-SEC,SIZE
# Multipath wieder starten
systemctl start multipathd
multipath -ll
# (Optional) Partition & Filesystem
# GPT anlegen und 1 große Partition:
parted -s /dev/sdX mklabel gpt mkpart primary 1MiB 100%
# z. B. XFS:
mkfs.xfs -f /dev/sdX1
# oder ext4:
mkfs.ext4 -F -L data01 /dev/sdX1
# Mountpunkt
mkdir -p /mnt/data01
echo '/dev/sdX1 /mnt/data01 xfs defaults,noatime 0 2' >> /etc/fstab
mount -a
9) Wenn Reformatierung verweigert wird (Vendor-Lock)
- Erkennung:
sg_format --dry-run
oder direktessg_format
meldet INVALID FIELD IN CDB / Device not ready (bei MODE SENSE/SELECT) oder akzeptiert nur 520 B. - Optionen:
- Platte hinter einem NetApp-Controller (ONTAP) verwenden (520 B nativ).
- HBA/RAID einsetzen, der PI/DIF-Translation (520→512) beherrscht (einige Broadcom/LSI-MegaRAID-Modelle). OS sieht 512 B.
- Platte tauschen gegen 512n/4Kn-Modell.
10) Optional: Multipath-Spam vermeiden (Blacklist)
Wenn du 520 B-Platten nicht nutzen kannst/willst, blackliste sie (z. B. nach Vendor/Product):
# /etc/multipath/conf.d/blacklist.conf
blacklist {
vendor "NETAPP"
product "X316_SMKRE06TA07"
}
systemctl reload multipathd
11) Troubleshooting-Tabelle
Symptom | Ursache | Maßnahme |
---|---|---|
Unsupported sector size 520 |
Linux erwartet 512n/4Kn | Reformat (falls erlaubt) oder HBA-Übersetzung oder Blacklist |
Preferred minimum I/O size 4096 ... not a multiple of 4160 |
Physischer Block = 4160 B (8×520) | Wie oben; Platte ist 520 B-formatiert |
multipathd: failed to setup map ... |
Gerät mit 520 B; kein nutzbares Blockdevice | Nach Reformat OK; sonst Blacklist |
sg_format ... Device not ready (MODE SENSE) |
Firmware blockiert Reformat / bereits Format läuft | Mit sg_requests prüfen; ggf. später erneut versuchen |
INVALID FIELD IN CDB |
Reformat auf 512/4096 verboten (Vendor-Lock) | Nur NetApp/HBA-Translation/tauschen |
Mehrere /dev/sg* für dieselbe Platte |
Mehrpfad (zwei Controller/Ports) | Nur einen Pfad formatieren; Gleichheit via LU name prüfen |
12) Anhang: hilfreiche One-Liner & Schnipsel
12.1 Alle 520 B-Kandidaten listen (mit sd-Mapping & LU-WWN)
#!/usr/bin/env bash
# list-520.sh — listet alle SCSI-Geräte mit 520-Byte-Sektoren
for sg in /dev/sg*; do
cap=$(sg_readcap -l "$sg" 2>/dev/null | tr -d '\r')
[[ -z "$cap" ]] && continue
if echo "$cap" | grep -q "Logical block length=520 bytes"; then
sd=$(lsscsi -g | awk -v s="$sg" '$NF==s{print $(NF-1)}')
inq=$(sg_inq -i "$sg" 2>/dev/null)
serial=$(echo "$inq" | awk -F': ' '/Unit serial number/{print $2}')
lun=$(echo "$inq" | awk -F': ' '/LU name/{print $2}')
size=$(echo "$cap" | awk -F': ' '/Device size/{print $2}')
printf "%-8s %-8s %-20s %-20s %s\n" "$sg" "${sd:--}" "${serial:--}" "${lun:--}" "$size"
fi
done
12.2 Nur einen Pfad pro physischer Disk wählen (per LU-Name deduplizieren)
#!/usr/bin/env bash
# pick-one-path.sh — gibt pro LU (LUN WWN) genau EIN /dev/sg* aus
declare -A seen
for sg in /dev/sg*; do
lun=$(sg_inq -i "$sg" 2>/dev/null | awk -F': ' '/LU name/{print $2}')
[[ -z "$lun" ]] && continue
if [[ -z "${seen[$lun]}" ]]; then
echo "$sg"
seen[$lun]=1
fi
done
12.3 Format sicher anstoßen (schnellstmöglich, wenn erlaubt)
# Beispiel: genau EINEN Pfad der Zielplatte verwenden!
systemctl stop multipathd
multipath -F
# Dry-Run (prüfen, ob 512 akzeptiert wird)
sg_format --format --size=512 --six --fmtpinfo=0 --dry-run /dev/sgXYZ
# Start (Firmware versucht "fast", fällt ggf. auf "full" zurück)
sg_format --format --size=512 --six --fmtpinfo=0 --cmplst=1 --early /dev/sgXYZ
# Fortschritt
watch -n 60 sg_requests /dev/sgXYZ
# Nach Abschluss
rescan-scsi-bus.sh -a
sg_readcap -l /dev/sgXYZ
systemctl start multipathd
multipath -ll
Kurzfazit: 520 B-Sektoren sind bei NetApp wegen T10 PI/DIF ein Feature für Datenintegrität. Unter generischem Linux sind solche Platten ohne Reformat/Übersetzung nicht nutzbar. Wenn die Firmware Reformat erlaubt: sicher auf 512 B/4 Kn umstellen (nur einen Pfad!), Fortschritt mit sg_requests
prüfen, danach wie gewohnt einbinden. Wenn nicht: NetApp-Controller oder HBA mit DIF-Translation verwenden – ansonsten die Geräte sauber blacklisten.
No Comments