Wasp
Insektenspray-Gegner
Hallo Forum,
habe mich den halben Tag (und Nacht) durchs Internet gewühlt. Was ich suche, ist die Möglichkeit Partitionen/Platten ohne(!) striping, also schlicht konkateniert zu einer virtuellen Partition zusammen zu fügen. Sinn dahinter ist es, daß wenn eine Platte/Partition aus dem Array ausfällt, die Daten der anderen Partitionen noch brauchbar sind (sein sollen). Desweiteren wäre es nett, wenn man diese virtuelle Partition nachträglich (quasi dynamisch) erweitern könnte.
Da bei gvinum(8) und gconcat(8) das Dateisystem bei Erweiterung mittels growfs(8) vergrößert werden muß, mit dem ich allerdings z.Z. nicht einmal eine 100 GB große Partition vergrößert bekomme, deren Ende hinter "der" 200 GB grenze liegt, habe ich zunächst mein Glück mit ZFS/zpool versucht, auch wenn mehrere Quellen davon sprechen, daß ZFS nur striping können soll. (Eines vorweg: teste noch mit ZFS 14, aber zumindest bis ZFS 28, seh ich keine Erweiterungen, die ich bräuchte.)
Jetzt zwei Testdaten raufgeschrieben, um danach das dritte Gerät hinzuzufügen.
Soweit funktioniert auch alles wie gewünscht, leider läßt sich das gerät nicht wieder entfernen.
Offline (inactive) bringen geht leider auch nicht:
Dann folgt halt simulierter Ausfall des "mittleren" gerätes.
Interessanter Weise sind die Daten trotz angeblichem striping noch vorhanden und lesbar, auch wenn das cat(1) in einem ununterbrechbaren Zustand landet:
Das töten von cat(8) auch mittels -9 zeigt leider keine Wirkung. Habe daraufhin versucht mittels zpool scrub test die Daten zu reparieren (=wegschmeissen), aber endet leider auch im uninterruptible state. Gleiche Schicksale ereilt andere Befehle das ZFS betreffend: zpool status -v als auch zpool scrub -s test.
Frage(n):
Besten Dank im Voraus
Wasp
PS: Das Problem mit growfs(8), habe ich schon mal selbst versucht zu patchen (uint32->uint64), allerdings bisher ohne Erfolg. Ohne die Blöcke bisher ausgerechnet zu haben, so kommt mir die Grenze von 200 GB allerdings etwas weit vorne vor, hätte sie bei 2 TB erwartet -- bis zu 200 GB konnte ich das Dateisystem noch ohne Probleme vergrößern.
habe mich den halben Tag (und Nacht) durchs Internet gewühlt. Was ich suche, ist die Möglichkeit Partitionen/Platten ohne(!) striping, also schlicht konkateniert zu einer virtuellen Partition zusammen zu fügen. Sinn dahinter ist es, daß wenn eine Platte/Partition aus dem Array ausfällt, die Daten der anderen Partitionen noch brauchbar sind (sein sollen). Desweiteren wäre es nett, wenn man diese virtuelle Partition nachträglich (quasi dynamisch) erweitern könnte.
Da bei gvinum(8) und gconcat(8) das Dateisystem bei Erweiterung mittels growfs(8) vergrößert werden muß, mit dem ich allerdings z.Z. nicht einmal eine 100 GB große Partition vergrößert bekomme, deren Ende hinter "der" 200 GB grenze liegt, habe ich zunächst mein Glück mit ZFS/zpool versucht, auch wenn mehrere Quellen davon sprechen, daß ZFS nur striping können soll. (Eines vorweg: teste noch mit ZFS 14, aber zumindest bis ZFS 28, seh ich keine Erweiterungen, die ich bräuchte.)
Code:
# mdconfig -a -t swap -s 100m
md0
# mdconfig -a -t swap -s 100m
md1
# mdconfig -a -t swap -s 100m
md2
# zpool create test /dev/md0 /dev/md1
# zpool status
pool: test
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
errors: No known data errors
Code:
# vim meinedatei
# echo "Zweite Datei mit Inhalt." > meinezweitedatei
# cat meinedatei
Das ist einen Datei mit Text zum Test.
Es gibt sogar eine zweite Zeile.
# zpool add test /dev/md2
# zpool status
pool: test
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
md2 ONLINE 0 0 0
errors: No known data errors
Code:
# zpool remove test /dev/md2
cannot remove /dev/md2: only inactive hot spares or cache devices can be removed
Code:
# zpool offline test /dev/md2
cannot offline /dev/md2: no valid replicas
Code:
# mdconfig -d -u 1 -o force
1# zpool status -v
pool: test
state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
see: http://www.sun.com/msg/ZFS-8000-HC
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test UNAVAIL 0 0 0 insufficient replicas
md0 ONLINE 0 0 0
md1 REMOVED 0 0 0
md2 ONLINE 0 0 0
config:
NAME STATE READ WRITE CKSUM
test UNAVAIL 0 0 0 insufficient replicas
md0 ONLINE 0 0 0
md1 REMOVED 0 0 0
md2 ONLINE 0 0 0
errors: No known data errors
Code:
# lg /test/
meinedatei meinezweitedatei
# cat meinedatei
Das ist einen Datei mit Text zum Test.
Es gibt sogar eine zweite Zeile.
^C^C
Frage(n):
- Bekomme ich den zpool, natürlich ohne die Daten von md1, also nur mit md0 und md2 wieder ans Leben?
- Bekomme ich meinen gewünschten Effekt mit ZFS irgendwie hin?
- Kann ich die Daten beim Ausfall eines Teils des Volumens bei gvinum oder gconcat retten/behalten?
- Gibt es noch andere, vorzugsweise Boardmittel neben zpool, gvinum und gconcat die ich noch nicht gefunden habe, mit denen ich mein Effekt erreichen könnte?
Besten Dank im Voraus
Wasp
PS: Das Problem mit growfs(8), habe ich schon mal selbst versucht zu patchen (uint32->uint64), allerdings bisher ohne Erfolg. Ohne die Blöcke bisher ausgerechnet zu haben, so kommt mir die Grenze von 200 GB allerdings etwas weit vorne vor, hätte sie bei 2 TB erwartet -- bis zu 200 GB konnte ich das Dateisystem noch ohne Probleme vergrößern.