Raid 1 zu Raid 10

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
chris0102
Beiträge: 7
Registriert: 01.02.2014 20:15:06

Raid 1 zu Raid 10

Beitrag von chris0102 » 01.02.2014 20:31:23

Guten Abend liebes Forum,

habe derzeit folgendes Problem: Der Speicher meiner Festplatten sind voll. Habe derzeit 2 Festplatten (a 2TB) im Raid1 Verbund (/dev/md0) laufen. So nun habe ich mir 2 neue Festplatten gekauft, um den Speicher zu erweitern (je 3 TB). Möchte auch die Daten auf diesen Festplatten im Raid Verbund spiegeln. Und anschließend den momentan 2 TB Speicher auf 5 TB erweitern. Jetzt lautet meine Frage:
Wie stelle ich das am besten an? Habe mich seit längerem im Internet informiert und bin auf "Raid 10" gestoßen. Leider habe ich kein geeignetes Tutorial gefunden und möchte hiermit fragen, wie ich das Ganze jetzt am geschicktesten umsetzen kann.

Zum System:
Auf dem Server läuft momentan Debian 6.0.8 und wie gesagt der Raid 1 /dev/md0 aus /dev/sdb1 & /dev/sdd1.

Würde mich sehr freuen, wenn Ihr mir weiter helfen könntet. :hail:
Viele Grüße
Chris

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Raid 1 zu Raid 10

Beitrag von Cae » 02.02.2014 01:45:09

Vorneweg: /dev/sdb1 und /dev/sdd1 seien deine bestehenden Platten bzw. Partitionen im /dev/md0, /dev/sdc1 und /dev/sde1 die neu hinzugekommenen. Ich gehe davon aus, dass letztere per fdisk oder aehnlich mit einer entsprechenden Partitionstabelle ausgstattet wurden.

So im Prinzip sollte das per

Code: Alles auswählen

# mdadm /dev/md0 --add /dev/sdc1 /dev/sde1
# mdadm --grow /dev/md0 --level=raid10
-- aber es scheint da keine internen Konvertierungsmoeglichkeiten wie bei z.B. RAID5/6 zu geben, denn ich erhalte

Code: Alles auswählen

mdadm: Impossibly level change request for RAID1
Falls die Aenderung nicht komplett online gehen muss, solltest du aus dem zwei neuen Platten ein "halbes" RAID10 anlegen:

Code: Alles auswählen

mdadm --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sdc1 missing /dev/sde1 missing
Dann ein Dateisystem darauf spielen und den Inhalt kopieren. Falls da / oder andere aktiv beschriebene Teile dabei sind, muss dies vom Live-System aus geschehen. Anschliessend kannst du das "alte" Dateisystem umounten und per

Code: Alles auswählen

# mdadm --stop /dev/md0
# mdadm /dev/md1 --add /dev/sdb1 /dev/sdd1
die "fehlenden" ("missing") Devices hinzufuegen und auf den Rebuild warten.

Willkommen im Forum!

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

chris0102
Beiträge: 7
Registriert: 01.02.2014 20:15:06

Re: Raid 1 zu Raid 10

Beitrag von chris0102 » 02.02.2014 16:03:37

Vielen vielen Dank für die schnelle Antwort und für die Anleitung.

Also das hat leider auch nicht bei mir geklappt mit "mdadm --grow ...", habe da folgenden Fehler erhalten:

Code: Alles auswählen

root@Debian:~# mdadm --grow /dev/md0 --level=raid10
mdadm: /dev/md0: could not set level to raid10
Jedenfalls habe ich dann wie beschrieben das 'halbe' RAID10 erstellt:

Code: Alles auswählen

...
root@Debian:~# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sun Feb  2 15:32:51 2014
     Raid Level : raid10
     Array Size : 5860527104 (5589.03 GiB 6001.18 GB)
  Used Dev Size : 2930263552 (2794.52 GiB 3000.59 GB)
   Raid Devices : 4
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sun Feb  2 15:32:51 2014
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : Home:1  (local to host Home)
           UUID : 9050c6e0:bf9f118d:834bed07:206d974b
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0        1      removed
       2       8       33        2      active sync   /dev/sdc1
       3       0        0        3      removed
Und dazu habe ich jetzt eine Frage: Diese Ausgabe sagt, dass das RAID Array 6TB umfasst. Aber am Ende kann es doch nur ein RAID mit 5TB sein (2x2TB /2+ 2x3TB/2)
Also wird sich nun das Array auf 5TB verkleinern, wenn ich abschließend die 2TB Fesplatten hinzufüge oder was wird passieren? Bin mir da momentan ziemlich unsicher.

Viele Grüße und schon mal vielen Dank
Chris!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Raid 1 zu Raid 10

Beitrag von Cae » 02.02.2014 16:50:53

Oh, du hast da unterschiedlich grosse Platten im Einsatz? Das wird so direkt nicht gehen. Momentan wird angenommen, dass die beiden missing-Devices so gross wie die 3-TB-Platten sind. Daher kommt auch die "hohe" Nutzdaten-Kapazitaet. Vermutlich hustet er dir einen beim Hinzufuegen der zu kleinen Platten; evtl. musst du das "ueberschuessige" Terrabyte von den neuen Platten in ein separates RAID1 packen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

chris0102
Beiträge: 7
Registriert: 01.02.2014 20:15:06

Re: Raid 1 zu Raid 10

Beitrag von chris0102 » 02.02.2014 17:28:36

Ohh man...
Also muss ich nun die Partition der 3 TB Platten auf 2TB verkleinern und dann ein neuen 2TB RAID Verbund mit den 4 Platten einrichten und erstmal 1 TB der 3 TB Platten 'leer' lassen?

Oder wäre es auch möglich ein RAID Verbund aus verschiedenen RAIDs zu machen? Die 2 TB Festplatten im RAID1 Verbund (/dev/md0) (so wie es auch momentan läuft); dann die 2 3-TB-Platten auch im RAID1 Verbund (/dev/md1) und dann aus diesen Beiden (/dev/md0 + /dev/md1) ein RAID0? Würde das funktionieren? Dann hätte ich doch die 5 TB oder funktioniert das nicht?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Raid 1 zu Raid 10

Beitrag von Cae » 02.02.2014 18:19:28

Also einfach hinzufuegen is nicht:

Code: Alles auswählen

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
vdb    254:16   0     1G  0 disk 
└─vdb1 254:17   0   512M  0 part 
vdc    254:32   0     1G  0 disk 
└─vdc1 254:33   0   512M  0 part 
vdd    254:48   0     1G  0 disk 
└─vdd1 254:49   0  1023M  0 part 
vde    254:64   0     1G  0 disk 
└─vde1 254:65   0  1023M  0 part 
# mdadm --create /dev/md1 --raid-devices 4 --level raid10 /dev/vdd1 missing /dev/vde1 missing
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
# cat /proc/mdstat 
Personalities : [raid10] 
md1 : active (auto-read-only) raid10 vde1[2] vdd1[0]
      2093056 blocks super 1.2 512K chunks 2 near-copies [4/2] [U_U_]
      	resync=PENDING
      
unused devices: <none>
# mdadm /dev/md1 --add /dev/vdb1
mdadm: /dev/vdb1 not large enough to join array
# 
Wie ich oben schon vermutet hatte.

RAID0 ueber zwei RAID1 geht aber wohl:

Code: Alles auswählen

# mdadm --create /dev/md0 --raid-devices 2 --level raid1 /dev/vdb1 /dev/vdc1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# mdadm --create /dev/md1 --raid-devices 2 --level raid1 /dev/vdd1 /dev/vde1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
# mdadm --create /dev/md3 --raid-devices 2 --level 0 /dev/md0 /dev/md1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.
# mdadm --examine --scan >>/etc/mdadm/mdadm.conf 
# mkfs.ext4 /dev/md3
...
# cat /proc/mdstat 
Personalities : [raid10] [raid1] [raid0] 
md3 : active raid0 md1[1] md0[0]
      1570304 blocks super 1.2 512k chunks
      
md1 : active raid1 vde1[1] vdd1[0]
      1046976 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 vdc1[1] vdb1[0]
      523968 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
# blkid | awk -F\" '/md3/{print "UUID="$2"\t/mnt\text4\tdefaults\t0\t1"}' >>/etc/fstab
# mount /mnt
# yes this-is-md3 | head -200 >/mnt/this-is-md3
# lsblk
NAME      MAJ:MIN RM    SIZE RO TYPE  MOUNTPOINT
...
vdb       254:16   0      1G  0 disk  
└─vdb1    254:17   0    512M  0 part  
  └─md0     9:0    0  511.7M  0 raid1 
    └─md3   9:3    0    1.5G  0 raid0 /mnt
vdc       254:32   0      1G  0 disk  
└─vdc1    254:33   0    512M  0 part  
  └─md0     9:0    0  511.7M  0 raid1 
    └─md3   9:3    0    1.5G  0 raid0 /mnt
vdd       254:48   0      1G  0 disk  
└─vdd1    254:49   0   1023M  0 part  
  └─md1     9:1    0 1022.4M  0 raid1 
    └─md3   9:3    0    1.5G  0 raid0 /mnt
vde       254:64   0      1G  0 disk  
└─vde1    254:65   0   1023M  0 part  
  └─md1     9:1    0 1022.4M  0 raid1 
    └─md3   9:3    0    1.5G  0 raid0 /mnt
# shutdown -r -F now
Die letzten paar Zeilen (mkfs ff.) sollen pruefen, ob das Ganze auch beim Booten sauber in der richtigen Reihenfolge erkannt wird. Dies scheint der Fall zu sein. shutdown -F erzwingt einen fsck, was eher nur fuer meinen Test empfehlenswert ist.

Hast du Zwischenspeicher fuer die Daten auf dem bestehenden RAID1? Sie werden ja vom RAID0 ueberschrieben, und das kann man nicht per missing o.ae. starten. Im Zweifel koennte man das 3-TB-RAID mit nur einer Platte starten und die freie 3-TB-Platte als temporaeren Speicher verwenden.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

chris0102
Beiträge: 7
Registriert: 01.02.2014 20:15:06

Re: Raid 1 zu Raid 10

Beitrag von chris0102 » 02.02.2014 21:04:33

Vielen vielen Dank nochmal für die Antwort und dein Engagement!


So bin jetzt wie folgt vorgegangen: Habe eine 2TB Fesplatte rausgenommen, dann eine anderen 2TB Festplatte rein (damit ich meine Daten sicher habe). Anschließend habe ich den RAID1 Verbund zwischen den 2TB Platten (die alte und der neuen) gelöscht und mit der neuen Festpaltte einen RAID 1 Verbund erstellt. Die 3 TB Festplatten sind jetzt auch in einem RAID 1 Verbund und diese beiden RAID 1´s jetzt in einem RAID 0 Verbund. Hat auch alles soweit geklappt.
So jetzt das neue Problem:
Möchte nun die Daten von der 'alten' 2TB Festplatte, die ich raus genommen und durch eine andere 2TB Platte ersetzt habe, in den RAID Verbund (/dev/md3) kopieren...Dafür habe ich die Fesplatte angeschlossen und das RAID1 gelöscht (war glaube ich mit mdadm --stop /dev/md0 && mdadm --zero-superblock /dev/sda1) (im Nachhinein wäre es schlauer erst das RAID 1 Array zu löschen und dann die Platten zu tauschen).. Naja egal! So jetzt habe ich das Problem, dass er die Festplatte nicht mehr einbinden will. Das ganze sieht dann so aus:

Code: Alles auswählen

root@ubuntu:~# mount /dev/sda1 /mount1/
mount: unknown filesystem type 'linux_raid_member'


root@ubuntu:~# mount /dev/sda1 /mount1/ -t ext4
mount: wrong fs type, bad option, bad superblock on /dev/sda1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
Hier noch ein paar Infos zur Festplatte:

Code: Alles auswählen

root@ubuntu:~# fdisk -l /dev/sda
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 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 identifier: 0x000412de

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048  3907028991  1953513472   83  Linux
Also wie kann ich das am besten lösen? Ist echt wichtig!!

Vielen vielen Dank! Echt super Forum!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Raid 1 zu Raid 10

Beitrag von Cae » 02.02.2014 21:14:22

Da ist jetzt noch ein "halbes", degradedtes RAID1 drauf, das kann man nicht einfach mounten. Du musst es erst starten:

Code: Alles auswählen

# mdadm --assemble /dev/md42 --run /dev/vdb1 
mdadm: /dev/md42 has been started with 1 drive (out of 2).
# cat /proc/mdstat 
Personalities : [raid1] [raid0] 
md42 : active (auto-read-only) raid1 vdb1[0]
      523968 blocks super 1.2 [2/1] [U_]
...
# 
Das dabei erzeugte /dev/md42 (der Name soll Verwirrungen mit "dauerhaften" Arrays verhindern) sollte ein mountbares Dateisystem enthalten.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

chris0102
Beiträge: 7
Registriert: 01.02.2014 20:15:06

Re: Raid 1 zu Raid 10

Beitrag von chris0102 » 02.02.2014 21:34:26

Vielen Dank für die erneut schnelle Antwort.

Ich wollte ja die Daten von der Backup Festplatte in das manuell installierte 'RAID 10' packen (/dev/md3). Dazu musste ich ja die eine Fesplatte, wie du es beschrieben hast, als 'halbes' RAID einbinden, da hatte er aber gemeckert, als ich 'mdadm --assemble --scan' ausgeführt habe, dass es /dev/md0 zwei mal gibt und da habe ich das 'halbe' Raid von der Backup Festplatte gelöscht (wie vorher beschrieben) und jetzt kann ich aber nicht mehr die Backup Festplatte mounten. Was mach ich denn nun? Wie kann ich jetzt die Daten auf dem ehemaligen RAID Laufwerk auslesen, obwohl das RAID Array schon gelöscht ist?
[Achso und greife per Ubuntu Live-USB auf das System zu...]

Viele Grüße
Chris!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Raid 1 zu Raid 10

Beitrag von Cae » 04.02.2014 00:48:49

--zero-superblock ist grundsaetzlich eine schlechte Idee, wenn man die Daten auf dem RAID nochmal lesen will. Fuer RAID1 scheint es aber trotzdem einen Weg zur Wiederherstellung zu geben, sofern man peinlich genau darauf achtet, dieselben Parameter wieder zu verwenden:

Code: Alles auswählen

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/vd[bc]1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# cat /proc/mdstat 
Personalities : [raid1] [raid0] 
md0 : active (auto-read-only) raid1 vdc1[1] vdb1[0]
      523968 blocks super 1.2 [2/2] [UU]
      	resync=PENDING
      
unused devices: <none>
# mkfs.ext4 /dev/md0
...
# mount /dev/md0 /mnt/
# yes this-is-md0 >/mnt/this-is-md0
yes: standard output: No space left on device
yes: write error
# sha1sum /mnt/this-is-md0 >/mnt/this-is-md0.sha1
# sha1sum -c /mnt/this-is-md0.sha1
/mnt/this-is-md0: OK
# umount /mnt
# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv normalerweise ist das _keine_ gute Idee
# mdadm --zero-superblock /dev/vdb1
# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/vdb1 missing
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# cat /proc/mdstat 
Personalities : [raid1] [raid0] 
md0 : active (auto-read-only) raid1 vdb1[0]
      523968 blocks super 1.2 [2/1] [U_]
      
unused devices: <none>
# e2fsck -f /dev/md0
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md0: 13/131072 files (0.0% non-contiguous), 520897/523968 blocks
# mount /dev/md0 /mnt/
# sha1sum -c /mnt/this-is-md0.sha1 
/mnt/this-is-md0: OK
# 
Ich wuerde aber unbedingt zu einem Backup vom Blockdevice raten, bevor da mit --create drauf rumgeschrieben wird. In meinem Fall waere das /dev/vdb1.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten