Nachträgliches Aufrüsten auf RAID1 im D-Link DNS-323 bzw. Conceptronic CH3SNAS oder CH3MNAS

Dieser Artikel wurde von Thomas als Gastartikel eingereicht!

Da ich bereits sehr viele Daten auf eine externe 2TB-USB-Platte gespielt hatte, wollte ich mir nicht extra noch einmal 2x2TB-Platten kaufen, um das RAID1-System von null an einzurichten. Vielmehr sollte die vorhandene Platte und eine neue Platten zum Einsatz kommen. Standardmäßig ist das nicht vorgesehen, beim erstmaligen Erstellen eines RAID1-Systems werden vom NAS immer beide Platten neu formatiert.

Werbung


Benötigte Hard- und Software

  • PC mit SSH- und/oder Telnet-client
  • fun_plug-Software (Download und Installation siehe hier)
  • 1 uralte Festplatte, auf der fun_plug übergangsweise installiert werden kann („Hilfsplatte“)
  • 1 alte Platte –> Platte 1 für RAID1-System
  • 1 neue Platte –> Platte 2 für RAID1-System (absolut identisch zur oberen)

HINWEIS: Diese Anleitung wird auf eigene Gefahr durchgeführt. Dieser Artikel kann sehr leicht zum vollständigen Datenverlust führen! Ich übernehme keinerlei Verantwortung! Bitte versucht das zu umgehen und kauft euch lieber eine Festplatte auf der ihr die Daten zwischenspeichert!

Im folgenden „~#“ bezeichnet Konsoleneingaben, dabei ist jedoch „~#“ wegzulassen.

Hardware einbauen

  • NAS ausschalten
  • Alte Platte ausbauen
  • „Hilfsplatte“ für fun_plug einbauen (siehe Problembeschreibung unten wegen umount-Problem mit fun_plug), muss vermutlich im oberen bzw. linken Slot sein, damit fun_plug beim booten erkannt wird
  • neue, leere Platte in NAS einbauen (muss dann anderer Slot „sdb“ sein)

Formatierung und fun_plug

  • NAS starten
  • Neue Platte und „Hilfsplatte“ durch NAS formatieren lassen (s. Manual, getrennte Platten, kein JBOD oder RAID)
  • Auf Hilfsplatte fun_plug mit ftp aufspielen

Ergebnis der Formatierung betrachten,RAID1-Array erstellen und fun_plug kopieren~# df

so ungefähr könnte es aussehen:

Filesystem 1k-blocks Used Available Use% Mounted on
rootfs 13879 11374 1789 86% /
/dev/root 13879 11374 1789 86% /
/dev/loop0 6784 6784 0 100% /sys/crfs
/dev/sda2 75346560 221464 75125096 0% /mnt/HD_a2 –> Hilfsplatte mit fun_plug
/dev/sda4 497861 10539 487322 2% /mnt/HD_a4 –> Teil der 80GB-Platte mit System- und Printserver-Daten
/dev/sdb2 1921830604 616736652 1207470564 0% /mnt/HD_b2 –> neue Platte – Daten
/dev/sdb4 497861 10537 487324 2% /mnt/HD_b4 –> neue Platte – Systemdaten

Alle Laufwerke der neuen Platte umounten

~# umount /mnt/HD_b2
~# umount /mnt/HD_b4

RAID1-Array erstellen (fehlende Platte wird mit „missing“ gesetzt)

~# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb2

Mounten und mit „df“ ansehen

~# mount /dev/md0 /mnt/HD_b2

fun_plug auf neue Platte spielen

~# cp -R /mnt/HD_a2/ffp /mnt/HD_b2
~# cp /mnt/HD_a2/fun_plug /mnt/HD_b2

Platten umbauen und Daten auf neue Platte spielen

  • Ausschalten
  • Hilfsplatte ausbauen
  • Neue Platte an Stelle der Hilfsplatte einbauen, wegen fun_plug (jetzt sda)
  • Alte Platte mit Daten im zweiten Slot einbauen (sdb) –> ACHTUNG: nicht über das Webtool formatieren, es würden alle Daten verloren gehen!
  • Einschalten und Verbindungsaufbau zum NAS
  • Gemountete Platten mit „df“ ansehen, folgende Partitionen sollten unter anderem existieren:

    /dev/sda2 1921830604 616736652 1207470564 0% /mnt/HD_a2 –> neue Platte – Daten (Zielplatte)
    /dev/sda4 497861 10537 487324 2% /mnt/HD_a4 –> neue Platte – Systemdaten

    –> zusätzlich einige Partitionen der Quellplatte (als sdb1…sdbn)

  • Daten kopieren (geht sicher auch mit „rsync -aqxP /quelle /ziel“ (vorher mounten)):

Beispiel für alle Verzeichnisse und Dateien ohne Endung:

~# cd /mnt/HD_b2/
~# cp -aR * /mnt/HD_a2/Part1Verz1

Beispiel für einzelne Verzeichnisse:

~# cd /mnt/HD_b3/
~# cp -aR Verz1 /mnt/HD_a2/Part2Verz1
~# cp -aR Verz2 /mnt/HD_a2/Part2Verz2

Beispiel für einzelne Dateien:

~# cd /mnt/HD_b4/
~# cp -a File1 /mnt/HD_a2/Part2Verz1/

Achtung ab hier kann man sehr leicht die Platten verwechseln! Sda ist oben/links und jetzt die Platte mit den Daten, sdb ist unten/rechts und wird gelöscht. Alle benötigten Daten müssen jetzt auf der oberen/linken Platte (sda) sein.

Alte Platte als zweite RAID1-Platte vorbereiten
Alte Platte (unten im Beispiel „sdb„) per fdisk löschen

~# cat|fdisk /dev/sdb
d,4,d,3,d,2,d,w

Alte Platte (unten sdb) neu mit fdisk einrichten (die Partitionstabellen der RAID1-Partition müssen absolut identisch sein!)
–> erste Partition (sdb1) ist SWAP (Typ 82), zweite Partition (sdb2) ist Datenbereich, sdb3 nicht benutzt, sdb4 ist Systembereich

~# cat|fdisk /dev/sdb
n, p, 1, 1, 66, t, 82
n, p, 2, 131,enter
n, p, 4,enter(67),enter (130)
w

Platte (unten im Beispiel „sdb„) von Hand formatieren (ext3: mke2fs -j, ext2: „-j“ entfällt)

~# mke2fs -j /dev/sdb2

Das gleiche mit Partition sdb4

~# mke2fs -j /dev/sdb4

Swap aktivieren

~# mkswap /dev/sdb1
~# swapon /dev/sdb1

Neustart per Knopfdruck (reboot bzw. poweroff habe ich nicht getestet)

Aktuellen RAID1-Status ansehen und verändern
Nach reboot gemountete Platten kontrollieren:

~# df
Filesystem 1k-blocks Used Available Use% Mounted on
rootfs 13879 11374 1789 86% /
/dev/root 13879 11374 1789 86% /
/dev/loop0 6784 6784 0 100% /sys/crfs
/dev/md0 1921830604 616736680 1207470536 34% /mnt/HD_a2 --> mit etwas Glück bereits erkannt (/dev/md0), kann auch noch als /dev/sda2 sein
/dev/sda4 497861 10539 487322 2% /mnt/HD_a4
/dev/sdb2 1921830604 616736680 1207470536 0% /mnt/HD_b2 --> sehr wahrscheinlich noch separat
/dev/sdb4 497861 10536 461621 2% /mnt/HD_b4

…und den RAID-Status ansehen (liefert nur was zurück, wenn /dev/md0 existiert):

~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1]
md0 : active raid1 sda2[0]
1952467712 blocks [2/1] [U_]
unused devices:

–> von 2 Platten ist eine vorhanden, steht ein (F) ist diese fehlerhaft, ein (S) steht für spare-disk
–> steht nur [1/1] da, muss die Anzahl der Platten erhöht werden:

~# mdadm -G /dev/md0 --raid-devices=2

Andere Platte zum RAID-Verbund dazubringen

~# mdadm --add /dev/md0 /dev/sdb2

Wenn alles passt, beginnt das System sofort mit dem Kopieren der Daten auf die neue Platte:

~# watch cat /proc/mdstat
Every 2s: cat /proc/mdstat
Personalities : [linear] [raid0] [raid1]
md0 : active raid1 sdb2[2] sda2[0]
1952467712 blocks [2/1] [U_]
[>....................] recovery = 0.8% (16835008/1952467712) finish=322.5min speed=100027K/sec

unused devices:

Warte bis die Recovery abgeschlossen ist!. Anschließend Neustart per Knopfdruck (reboot bzw. poweroff habe ich nicht getestet)

Aktuellen RAID1-Status ansehen und wenn nötig RAID1-Konfigurationsdateien kopieren
So sieht es aus, wenn alles passt:

~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1]
md0 : active raid1 sda2[0] sdb2[1]
1952467712 blocks [2/2] [UU]
unused devices:

Um nach dem Reboot das RAID-System wieder zur Verfügung zu haben, kann es nötig sein die Konfigurationsdaten zu kopieren. Wurde die obere Platte bereits als /dev/md0 gemountet, ist dieser Schritt evtl. nicht nötig. Die Dateien in den „.systemfile“-Ordnern kann man sich mal ansehen. Nur kopieren, wenn nötig!
Kopieren der Dateien aus dem „/etc/tmp_raid_table“ – Verzeichnis nach /mnt/HD_a4/.systemfile

~# cp /etc/tmp_raid_table/* /mnt/HD_a4/.systemfile/

Kopieren der Dateien aus dem „/etc/tmp_raid_table“ – Verzeichnis nach /mnt/HD_b4/.systemfile

~# cp /etc/tmp_raid_table/* /mnt/HD_a4/.systemfile/

Ändern von EXT2 auf EXT3 (wenn mit „-j“ formatiert) in web-Datei, sowie Anzahl Disks auf 2!

Probleme und Lösungen:
Ein umount der Partitionen schlägt fehl, wenn fun_plug läuft
Workarround:

  • Hilfsplatte einsetzen und vom Gerät formatieren lassen (z.B. 80GB)
  • fun_plug auf dieser Platte installieren
  • fun_plug auf anderer Platte deaktivieren (Datei und ffp-Verzeichnis umbenennen) oder löschen
  • Ausschalten
  • Festplatten vertauschen
  • Einschalten

Veröffentlicht von

Uli

IT-Nerd und Admin

9 Gedanken zu „Nachträgliches Aufrüsten auf RAID1 im D-Link DNS-323 bzw. Conceptronic CH3SNAS oder CH3MNAS“

  1. Schöne Anleitung.
    Aus eigener schlechter Erfahrung möchte ich jedoch nochmal etwas zur Vorsicht mahnen! In meinem DNS-323 ist sda der rechte Slot. Ich habe dadurch vor einiger Zeit versehentlich meine HDD mit Daten formatiert und erstaunlicherweise nicht geschafft, die Partitionierung wiederherzustellen. Ich empfehle daher jedem, eine Sicherheitskopie seiner Daten anzufertigen, bevor man solche Experimente wagt. Zu den aktuellen Festplattenpreisen schadet es auch nicht, nochmal eine 1TB-Platte für Backups zu haben 😉

  2. Alternative mit externem USB-Leergehäuse:

    1.) Alte Festplatte(n) ausbauen und neue Festplatten einbauen
    2.) RAID1 einrichten und fun_plug installieren und ggf. 4K-Optimierung vornehmen
    3.) Alte Festplatte in USB-Leergehäuse einsetzen, anschließen und NAS starten
    4.) Zugriff auf USB-Laufwerk einrichten:
    wget http://wolf-u.li/u/176 -O /lib/modules/usb-storage.ko
    insmod /lib/modules/usb-storage.ko
    mkdir /mnt/HD_c2
    mount /dev/sdc2 /mnt/HD_c2
    5.) Daten von alter Festplatte auf neue Festplatten (RAID) kopieren:
    rsync -aqxP /mnt/HD_c2/Verzeichnis/ /mnt/HD_a2/Verzeichnis >/mnt/HD_a2/rsync.log

    Vorteile:
    Weniger Risiko für die alte Festplatte, also für die Daten.
    Installation geht schnell
    Kopieren von USB geht gleich schnell (langsam) wie von interner Festplatte.
    Den rsync-Befehl gebe ich im Telnet-Fenster und kann danach das Telnet-Fenster schließen und meinen PC ausschalten. Der rsync-Job läuft auch ohne beobachtenden PC weiter und einen evtl. Fehler kann ich später in rsync.log nachlesen.

    Bei mir wurden 300 GB in ca. 23 Stunden kopiert (WD10EADS auf 2 x WD20EARS).

    Gruß Arno

  3. Hi Uli,
    Schöne Anleitung. Funktioniert auch bis kurz vor Schluß – und da schreibst Du:

    ~# df
    Filesystem 1k-blocks Used Available Use% Mounted on
    rootfs 13879 11374 1789 86% /
    /dev/root 13879 11374 1789 86% /
    /dev/loop0 6784 6784 0 100% /sys/crfs
    /dev/md0 1921830604 616736680 1207470536 34% /mnt/HD_a2 –> mit etwas Glück bereits erkannt (/dev/md0), kann auch noch als /dev/sda2 sein
    /dev/sda4 497861 10539 487322 2% /mnt/HD_a4
    /dev/sdb2 1921830604 616736680 1207470536 0% /mnt/HD_b2 –> sehr wahrscheinlich noch separat
    /dev/sdb4 497861 10536 461621 2% /mnt/HD_b4

    ..aber leider sagst Du nicht dazu, was man tut, wenn /dev/md0 nicht erkannt ist. Ich habe immernoch zwei Partitionen, die als sda2 und sdb2 erkannt werden…und nun?

    Bernd

    1. Hi Bernd,

      die Antwort kommt etwas spät und wird dir nichts mehr nützen. Dennoch stand ich vor dem selben Problem und hab mich da einige Tage durchgekämpft. Mit Erfolg erfreulicherweise.

      Evtl. hilft es ja noch wem anderen deshalb will ich hier kurz festhalten was ich gemacht habe.

      Offenbar lädt das NAS seine RAM Partition bei jedem Hochfahren neu. Dies habe ich festgestellt da mein erster Versuch war das md0 zu mounten via Eintrag in fstab war. Nur war das fstab bei jedem reboot wieder das Alte.
      Also hab ich mich auf die Suche begeben wo dies alles gemacht wird und bin dabei auf folgendes Script gestoßen: /etc/rc.sh
      In diesem Script wird folgendes File ausgeführt: /usr/sbin/hd_verify
      Das habe ich auf gut Glück ausgeführt und siehe da es umountet alle drives und versucht das md0 zu mounten. Dabei kam es bei mir aber zu Fehlern und diese Fehler haben mich zur Lösung des Problems geführt.

      Auf der Systempartition /dev/sda4 & /dev/sdb4 liegt der Folder .systemfile dort liegen die configs für das NAS:
      mdadm.conf – für mdadm
      sieht bei mir so aus:

      ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8ea7b33d:459b4240:08db6c36:4f89d662
      

      Wenn das Array erstellt ist müsste folgender Befehl genau diese Zeile für dein System generieren:

      mdadm --examine --scan
      

      raidtab
      Hat bei mir folgenden Inhalt

      raiddev /dev/md0
              raid-level      raid1
              nr-raid-disks   2
              chunk-size      64
              persistent-superblock   1
              device          /dev/sda2
              raid-disk       0
              device          /dev/sdb2
              raid-disk       1
      
      raiddev null
              raid-level      null
              nr-raid-disks   0
              chunk-size      64
              persistent-superblock   1
              device          null
              raid-disk       null
              device          null
              raid-disk       null
              Version 1.3
      

      raidtab2web
      Hat bei mir folgenden Inhalt:

      raiddev        /dev/md0
      raid-level        raid1
      nr-raid-disks        2
      chunk-size        32
      persistent-superblock   1
      device        /dev/sda2
      raid-disk        0
      device        /dev/sdb2
      raid-disk        1
      Status        Start
      raid-masterdisk        /dev/sda2
      FirstStart        0
      FormatwebFlag        1
      SatamountFlag        1
      SatamountFlag1        0
      raidsize        929
      filesystem        ext2
      parti3        1
      extra_status        1
      Version        1.5
      

      Nachdem ich das NAS neugestartet hatte war md0 immer noch nicht gemountet. Nach erneuten ausführen von hd_verify wurde klar, dass die Files von /mnt/HD_a4/.systemfiles nun abweichten von /mnt/HD_b4/.systemfiles. Also habe ich die 3 beschriebenen Files auch auf /mnt/HD_b4 angepasst. Nun hats nach dem reboot geklappt und das NAS hat immer md0 gemountet -> yuhu!

      Im Nachhinein betrachtet wäre die Lösung aber auch im oben beschriebenen gestanden:

      Kopieren der Dateien aus dem “/etc/tmp_raid_table” – Verzeichnis nach /mnt/HD_a4/.systemfile
      
          ~# cp /etc/tmp_raid_table/* /mnt/HD_a4/.systemfile/
      
      Kopieren der Dateien aus dem “/etc/tmp_raid_table” – Verzeichnis nach /mnt/HD_b4/.systemfile
      
          ~# cp /etc/tmp_raid_table/* /mnt/HD_a4/.systemfile/
      

      Das Verzeichnis /etc/tmp_raid_table/ scheint raidtab und raidtab2web zur Verfügung zu stellen.

      Leider war ich damit noch nicht fertig denn wenn ich die 2 Platte nun dem Array hinzufügen wollte hat mdadm einen Fehler geschmissen:

      mdadm --add /dev/md0 /dev/sdb2
      

      Fehler: mdadm: /dev/sdb2 not large enough to join array

      … Tja, die Platte war aber exakt die selbe wie /dev/sda2 (auch die Partitionen, Blöcke, etc…)
      Offenbar haben bestimmte mdadm Versionen genau diesen Bug. Ich hatte ursprünglich „mdadm – v2.5.6 – 9 November 2006“ drauf welche diesen Bug hatte. Ich habe mir dann die Version „mdadm – v2.6 – 21 December 2006“ rauf geladen. Mit dieser hat es dann problemlos funktioniert.
      Seit dem läuft das NAS als RAID1 -> yuhu 🙂

      Ich hoffe meine Beschreibung hilft wem anderen (falls überhaupt noch wer dieses NAS verwendet 🙂

      sg,
      _santos

  4. Hi

    ja es gibt noch Dinos , die dieses alte schätzchen in Gebrauch haben.
    Ich würde gerne die Daten meiner beiden platten zusammenführen, also alles was auf Volume_1 ist zu Volume_2 kopieren oder umgekehrt.sodass ich mir diese Daten dann sichern kann. Ich habe mir endlich mal eine synology gekauft und die Platten kann ich ja nicht einfach ins synology stecken , die werden warscheinlich formatiert.oder kann ich hinten evtl. eine USB PLatte anschließen um die Daten zu kopieren????

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.