• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] 512/4096KB Sektor-HDDs im md raid, Alignment

norritt

Member
Kürzlich hat leider eine meiner mechanischen HDDs WD Green (3TB) begonnen ihr baldiges Ableben anzukündigen. Die Platte ist Teil eines md RAID1, Ersatz in Form einer WD-Red gleicher Größe ist heute eingetroffen und wird grade einem Stresstest unterzogen.

Die defekte Platte habe ich vor dem Ausbau folgendermaßen aus dem RAID entfernt:
mdadm --fail /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1
mdadm --zero-superblock /dev/sdb1

Bei der Gelgenheit ist mir bei der Inspektion der verbleibenden HDD aufgefallen, das fdisk meldet das Alignment sei nicht korrekt:
Code:
Disk /dev/sda: 3000.6 GB, 3000592982016 bytes, 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x069bf684

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Normalerweise wird ja immer geraten HDDs "aligned" zu partitionieren. Ich habe den mdraid seinerzeit über den Installer anlegen lassen und mir darüber keine weiteren Gedanken gemacht, da ich davon ausgegangen bin das dieser für korrektes Alignment sorgt.

Ich bin mir tatsächlich auch nicht sicher, ob das Alignment evtl. nicht doch trotz anderslautender fdisk Meldung korrekt ist, weil die eigentliche Partition, ja von dem mdraid (der auch overhead auf der Platte speichert) gewrappt wird. Im Thomas Krenn Wiki gibt es die Information das man das Alignment mittels

Code:
mdadm -E /dev/sdXX

prüfen könne. Bei mir (OpenSUSE 13.1) fehlt leider die wesentliche Angabe "Data Offset" in der Ausgabe des

Weiß jemand, ob das Alignment nun so korrekt ist und falls nein - einen Weg das Alignment nachträglich durchzuführen - ohne Datenverlust? (P.S.: Es handelt sich um einen Server der remote über ssh gewartet wird und kein optisches Laufwerk hat - GParted ist also keine Option)

Außerdem habe ich noch eine Frage zum Hinzufügen der neuen (leeren) HDD zu dem vorhandenen RAID1 der sich momentan im "degraded"-Status befindet. Bisher bin ich immer davon ausgegangen, dass es genügt, eine neue leere Platte dem md raid hinzuzufügen und der Rest würde automatisch gesynced. Allerdings habe ich in einigen Anleitung gelesen (unter anderem auch in hier in Linupedia) das die Partitionierung von der funktionsfähigen Platte manuell kopiert werden muss z.B. mit:
Code:
sfdisk -d /dev/sda | sfdisk /dev/sdb

Ich bin momentan ein wenig unschlüssig, ob sfdisk -d nicht auch den md raid superblock mit kopiert und dadurch den kompletten RAID schreddert. Hat jemand schonmal einen bestehenden RAID um eine neue HDD erweitert und weiss, welche Schritte hier nun wirklich nötig sind?
 

josef-wien

Ultimate Guru
Du verwendest eine alte Version von fdisk, die nicht mit einer GPT umgehen kann. Du verwendest nicht die Version von 13.1, die kann das nämlich (wenn auch noch nicht alle Funktionen implementiert sind). Mit
Code:
sgdisk -p /dev/sda
wirst Du wohl sehen, daß die erste Partition ab Sektor 2048 beginnt.

Ich habe zwar mit
Code:
sgdisk -b sda.gpt /dev/sda
die GPT gesichert, aber ich habe mich nicht damit befaßt, ob ich sie mit
Code:
sgdisk -l sda.gpt /dev/sdb
problemlos auf eine andere Platte kopieren kann. Ich würde die neue Platte manuell mit
Code:
gdisk /dev/sdb
so partitionieren wie die alte (ohne Partitionierung kannst Du sie nicht verwenden). Nach einem
Code:
mdadm /dev/md0 -a /dev/sdb1
passiert dann der Rest von allein.

Partitionentabelle und raid superblocks haben nichts miteinander zu tun. sfdisk und cfdisk nützen Dir bei einer GPT überhaupt nichts, damit kannst Du ebenso wie mit einem veralteten fdisk nur Unheil anrichten.
 
OP
N

norritt

Member
josef-wien schrieb:
Du verwendest eine alte Version von fdisk, die nicht mit einer GPT umgehen kann. Du verwendest nicht die Version von 13.1, die kann das nämlich (wenn auch noch nicht alle Funktionen implementiert sind).

Okay in dem Fall ist mir allerdings schleierhaft warum mein fdisk nicht aktuell ist:

Code:
cube:~ # zypper search --provides fdisk
Loading repository data...
Reading installed packages...

S | Name              | Summary                                                   | Type
--+-------------------+-----------------------------------------------------------+--------
i | gptfdisk          | GPT partitioning and MBR repair software                  | package
  | gptfdisk-fixparts | A tool for repairing certain types of damage to MBR disks | package
i | yast2-storage     | YaST2 - Storage Configuration                             | package
cube:~ # fdisk -v
fdisk from util-linux 2.23.2
cube:~ # zypper up
Loading repository data...
Reading installed packages...

Nothing to do.
cube:~ # cat /etc/issue
Welcome to openSUSE 13.1 "Bottle" - Kernel \r (\l).

cube:~ #

Ansonsten herzlichen Dank für deine Tipps. Ich habe die Schritte so durchgeführt, wie Du es vorgeschlagen hast. Der RAID hat über Nacht synchronisiert und nun ist wieder alles im Lot!

"sgdisk -p" hat auch wie Du schon vermutet hattest gezeigt, dass die Partitionierung der alten HDD korrekt war.
 

josef-wien

Ultimate Guru
Genau diese Version hat auch mein 13.1. Ich kann nur vermuten, daß der Fehler mit der Festplattengröße zusammenhängt (meine größte hat 640 GB), aber schließlich ist die GPT-Unterstützung bei dieser Version noch "experimentell".

Es ist interessant, daß zypper das Paket nicht findet, wenn man nach fdisk sucht, aber erfolgreich ist, wenn man als Suchbegriff /usr/sbin/fdisk verwendet. Womit wieder einmal bewiesen ist, daß jedes Programm seine Schwächen hat.
 
Oben