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

Btrfs: alte Paritition auf RAID1 mit neuer Platte

Zerberus

Member
Hi Leute,

bisher hatte ich nur ne 300GB Platte in meinem Server. Zwar bereits unter Btrfs, aber jetzt hab ich mir ne zweite Platte (2TB) dazu gekauft und wollte diese dazu nutzen eine 300GB Partition auf dieser mit der auf der ersten Platte zu einem RAID1 Verbund zu machen.

Aus der Doku sehe ich zwar dass ein
Code:
mkfs.btrfs -m RAID1 -d RAID1 /dev/sda2 /dev/sdb2
dies bewirkt, aber immer wenn ich das als root eintippen will zucke ich zurück und frage mich, ob meine Daten das überleben werden. Ich hab zwar ein Backup, wollte aber nicht unbedingt den Server komplett neu einrichten. Kann mir einer sagen, ob ich da wirklich drum rum komme? Oder weiss das btrfs, dass mit diesem Kommando alle Files, die bereits auf /dev/sda2 existieren auf /dev/sdb2 dupliziert werden sollen?

CIAO Zerberus
 

spoensche

Moderator
Teammitglied
Zerberus schrieb:
Aus der Doku sehe ich zwar dass ein
Code:
mkfs.btrfs -m RAID1 -d RAID1 /dev/sda2 /dev/sdb2
dies bewirkt, aber immer wenn ich das als root eintippen will zucke ich zurück und frage mich, ob meine Daten das überleben werden. Kann mir einer sagen, ob ich da wirklich drum rum komme? Oder weiss das btrfs, dass mit diesem Kommando alle Files, die bereits auf /dev/sda2 existieren auf /dev/sdb2 dupliziert werden sollen?

Erstell dir doch ein Image der Festplatte. Wenn dann der schlimmste Fall eintreten sollte, brauchst du dann nur das Image zurückspielen. Btrfs weiss, dass es die Daten von /dev/sda2 auf /dev/sdb2 duplizieren soll, schließlich muss es quasi fast das selbe Prozedere durchführen, wenn eine Platte ausfällt und die neue Platte in den RAID- Verbund aufgenommen werden muss.
 
OP
Z

Zerberus

Member
Hi Spoensche,

erstmal ein Image anzulegen ist zwar Risiko bzw. Zeitminimierung für den Fall, dass das gar nicht so funktioniert, wie ich es erwarte, bringt mir auch keinen weiteren Erkenntnisgewinn. Ich denke wenn mir keiner einen definitiven Hinweis geben kann, dass ich erstmal mit kleineren Partitionen auf anderen Platten experimentiere, bevor ich mich an die Serverplatte ranwage.

Was mir aufgefallen ist: zum einen steht die Aussage, dass sich btrfs gut dafür eignet nachträglich hinzugefügte Devices in das Filesystem zu integrieren. Zum anderen habe ich die Aussage gefunden, dass sich RAID Levels nachträglich nicht mehr ändern lassen. Es muss im richtigen RAID Level bereits angelegt werden.

Deshalb fühle ich mich ein bisschen unsicher.

CIAO Zerberus
 

josef-wien

Ultimate Guru
Zerberus schrieb:
mkfs.btrfs -m RAID1 -d RAID1 /dev/sda2 /dev/sdb2
Ich teile Deine Bedenken. Nach meinem (durch keinerlei Wissen belasteten) Gefühl wird mit diesem Befehl ein neues RAID1 erzeugt und formatiert, d. h. alle bisherigen Daten sind weg. Ab Kernel 3.3 soll es möglich sein, bei btrfs (das mir auf einem Server reichlich mutig erscheint) eine "normale" Partition nachträglich in ein RAID umzuwandeln: https://btrfs.wiki.kernel.org/index.php/Balance_Filters

Und es gibt auf jeden Fall den Weg, wie bei mdadm zuerst ein "halbes" RAID anzulegen, die Daten dorthin zu kopieren, und dann die urspüngliche Partition dazuzuhängen: https://btrfs.wiki.kernel.org/index.php/UseCases#How_can_I_create_a_RAID-1_filesystem_in_.22degraded_mode.22.3F
 

spoensche

Moderator
Teammitglied
Ich habe es gerade getestet und muss meine erste Aussage revidieren. Die Dateien werden gelöscht. Ich bin dabei wie folgt vorgegangen:
Code:
qemu-img create -f raw disk1.img 5G
cp disk1.img disk2.img
sudo mkfs.btrfs disk1.img

# Testfiles anlegen
sudo mount disk1.img /mnt 
for i in $(seq 20);do sudo touch /mnt/test${i};done

sudo umount /mnt
sudo mkfs.btrfs -m raid1 -d raid1 -L raid_test disk1.img disk2.img

Die beiden Images sind jetzt als /dev/loop0 /dev/loop1 verfügbar, allerdings konnte ich sie mit dem Label nicht mounten. Ich musste erst die Bindung der Images zu den Loop Devices lösen und neu anlegen, damit das Mounten klappt.

Code:
sudo losetup -d /dev/loop0 /dev/loop1
sudo losetup /dev/loop0 disk1,img
sudo losetup /dev/loop1 disk2.img
sudo mount LABEL=raid_test /mnt

Ein ls -l /mnt brachte dann leider keine Dateien zum Vorschein
 
OP
Z

Zerberus

Member
Hi Leute,

ja, ich kann jetzt definitiv bestätigen, dass mit
Code:
umount /dev/sda5
mkfs.btrfs -d raid1 -m raid1 /dev/sda5 /dev/sdb1
der Inhalt der vorherigen Partition sda5 ohne vorherige Rückfrage auf 'Nichts' zurückgesetzt wird.

Gut dass ich mir die Mühe gemacht habe, auf einem extra Rechner ne alte 15GB Platte reinzuschrauben (ein anderer hätt sie möglicherweise weggeworfen ;) ) und eine nicht benutzte kleine freie Partition auf sda verwendet habe.

Jetzt steht noch der Kernel 3.3 aus. Ob der in der Lage sein wird, das zu können. Ab wann wird denn der unter SuSE verwendbar sein?

CIAO Zerberus

PS: @Josef: ich bin schon mutig, aber mein Server steht bei mir zuhause und da müssen schlimmstenfalls 4 Leute drunter leiden, falls ich zu mutig bin. Außerdem läuft bei mir nächstens ein Backup-Cron-Job. Die Daten krieg ich wieder. Im Schlimmsten Fall müsst ich den Server komplett neu aufsetzen. Für einen wirklich produktiven Server würde ich mir das auch überlegen, ob es btrfs sein muss.
 

josef-wien

Ultimate Guru
http://download.opensuse.org/repositories/Kernel:/stable/standard/
oder
http://download.opensuse.org/repositories/openSUSE:/Tumbleweed/standard/

Siehe auch: http://www.linupedia.org/opensuse/Zwei_Kernel_parallel_installieren
 
Oben