Restplatz auf 6TB Platte in einem 4TB Raid5 nutzen

  • Moin,


    ich habe um mein Raid5 aus ehemals 5*4TB Platten in einer TS569L aufzustocken eine 4TB gegen eine 6TB Platte getauscht.
    Nun richtet Qnap den Raid natürlich auch nur mit 4TB ein, da alle anderen 4 Platten nur diese Kapazität haben.
    Von Haus aus ist auch eine Nutzung der restlichen 2TB nicht vorgesehen; verständlich.


    Meine Idee war nun um das zu umgehen, die Partitionstabelle einer 4TB platte nachzubauen und die restlichen ~2TB mit ext4 zu formatieren und manuell beim booten einzuhängen.
    Nachdem ich das gemacht habe, meldet mdadm aber, dass der Raid degraded ist und stellt wieder die alte 6TB Partition auf der Platte her.


    Wie kann ich mdadm beibiegen, dass es nurnoch die 4TB Partition als Medium nutzt und wiederherstellt, statt wieder eine 6TB Partition anzulegen, von der 2TB nicht genutzt werden?


    Grüße,


    Acid


    P.S. ja, ich weiß das ist fortgeschritten und das Datenverlustrisiko ist hoch. Geld für 4 weitere 6TB Platten ist auch momentan keins da; also muss es die "2TB ext4 Partitions"-Lösung tun. Backups auf insg. 3 3TB Usb Platten sind vorhanden.

  • ok, das thema ist gelöst.
    Hier die vorgehensweise um bei inhomogenen raids die übrige kapazität noch als normales laufwerk zur verfügung zu stellen.
    Was man können sollte: Grundkenntnisse in der Linux Bash, Booten der NAS mit einem Rettungs-Linux-System (z.b. Partedmagic), AKTUELLE BACKUPS! (vor dem booten alle Backup platten PHYSISCH von der NAS trennen, das macht auch die fdisk liste übersichtlicher).


    Schritt 1:
    Da der Raid sich an der kleinsten Platte orientert, muss die partitionstabelle dieser platte mit fdisk ausgelesen werden.
    ACHTUNG: Das fdisk an board der Qnap (sowohl das originale als auch das via optware installierbare) sind veraltet und unterstützen kein EFI GPT. Am besten in einem Live linux der wahl booten und dann die analyse starten:


    Zuerst:

    Code
    fdisk -l

    um die ganzen festplatten anzuzeigen. Anhand der dort gelisteten größe die kleinste platte des Raids aussuchen und mit

    Code
    fdisk /dev/sdX

    mit fdisk darauf zugreifen. X ist hierbei ein buchstabe zwischen a und, je nach anzahl der schächte, b - e.


    nun sind wir im fdsik menü und können mit "p [enter]" die partitionstabelle ausgeben lassen; siehe anhang Partitionstabelle kleinste HDD.
    Wichtig sind die nummern "Start" und "End" bei der jeweilß größten Partition (in diesem Fall 3.6T). Also die nummern notieren.
    Mit "q [enter]" wird fdisk wieder verlassen.


    Nun die größere HDD einlegen und erstmal die partitionstabelle sichern, damit wir diese im fall eines unglücks wiederherstellen können:

    Code
    dd if=/dev/sdY of=/share/CACHEDEV1_DATA/.qpkg/Parttablebackup.img bs=1M count=2

    Damit werden die erste 2 MB des Laufwerks gesichert, das sollte alle wichtigen Partitionsdaten enthalten.


    Nun die Platte mit fdisk öffnen:

    Code
    fdisk /dev/sdY


    mit " [enter]"p lassen wir und wieder die tabelle anzeigen; siehe Anhang Partitionstabelle größere HDD.
    Es fällt auf, dass hier die Partition des Raids 5.5T groß ist; also quasi 1,9T platzt verschwendet.
    mit "d [enter], 3 [enter]" löschen wir die größte partition (im bild /dev/sde3).
    nun erstellen wir mit "n [enter], 3 [enter], "STARTWERT aus der partitionstabelle der kleineren hdd" [enter], "ENDWERT aus der partitionstabelle der kleineren hdd" [enter]" eine neue partition mit der exakten größe der kleinsten hdd im raid. da der typ der partition auf "Microsoft basic data" gesetzt ist ändern wir das ebenfalls: "t [enter], 3 [enter], 6 [enter]"
    nun hat die Platte einen freien raum, in dem wir eine neue partition erstellen können:
    "n [enter], 6 [enter], [enter], [enter]" Die einfachen [enter] eingaben sorgen dafür, dass der maximale platzt genutzt wird.
    mit "p [enter]" lassen wir uns nochmals die tabelle anzeigen und kontrollieren, ob es nun 6 partitionen sind und die nr 3 die gleiche größe wie die kleinste hdd im raid hat.
    mit "w [enter]" wird die tabelle geschrieben. Danach zur Sicherheit nochmals "partprobe [enter]" ausführen um das Linux system von den änderungen zu überzeugen.
    mit mkfs.ext4 -L"NAME_DER_PARTITION" /dev/sdY6 fomatieren wir die partition als ext4.
    nun können wir diese nach jedem boot manuell auf die NAS mit

    Code
    mount -t ext4 /dev/sdY6

    einhängen.


    ACHTUNG: Die platte ist nicht im Raid und wird daher natürlich auch nicht dadurch vor ausfall geschützt.
    ACHTUNG2: Die methode gilt nur bei Raid systemen, die den ausfall einer Platte kompensieren können. Also Raid1, Raid5, Raid6 und Raid10. bei Raid0 GEHT DAS AUSDRÜCKLICH NICHT.


    Nachdem die Nas wieder bootet, wird das Raid wiederhergestelle (dauert bei einem 5*4 TB Raid5 ca 10h). Währenddessen kann nichts in den Raid geschrieben werden und ein weiterer Plattenausfall während dieser Phase bedeutet wahrscheinlich den kompletten datenverlust.
    Änderungen auf eigene gefahr!


    Grüße,


    -Acid