Folgende Gegebenheiten:
Dicke Solaris Kiste als Veritas Cluster aufgesetzt, mit gesharten Volumes und obendrauf ein Oracle RAC. Speicherplatz liegt im SAN verteilt auf zwei Standorten. Das bedeutet die Platten werden “hostbased gemirrort”. Aber natürlich so, das je ein Spiegel je Standort (enclosure) existiert. VxVm kann das eigentlich automatisch. So sieht beispielsweise eine Erweiterung eines Veritas Filesystems aus:
- Bei gesharten Disks bitte nur auf dem Master arbeiten:
#vxdctl -c mode
mode: enabled: cluster active – MASTER
master: hugo1
#vxresize -F <fs-type> -g <diskgroup> <volume> <size> mirror=enclr
#vxresize -F vxfs -g hugolinedg myvol +2g mirror=enclr
erweitert das Veritas-Filesystem myvol in der Diskgroup hugolinedg um 2 GB, und zwar so, dass beide Spiegel auf die Standorte verteilt sind. Funktioniert mit UFS genau so. Aber nur vxfs kann man im laufenden Betrieb auch verkleinern. Beim erweitern wird das Volume in ein Layerd-Volume umgewandelt.
Sollte das Volume vor der Erweiterung nicht fehlerfrei über beide Standorte gespiegelt sein, so ergibt die Erweiterung natürlich auch nix anständiges. Heraus kommt ein Volume mit einem einzigen Plex der nur Subvolumes enthält. Diese Subvolumes sind nur ihrerseits Volumes mit einzelnen Plexen und Subdisks. Liegen die Subdisks nun auf nur einem Standort und wir haben vielleicht auch nicht mehr genug Platz frei um das ganze Volume nocheinmal einwandfrei zu spiegeln, sieht es schlecht aus. vxassist mag dann natürlich nicht mehr sauber ein Enclosure abhängen, wenn wir einen Spiegel removen. Übrig bleibt dann ein Volume mit nur einem Spiegel, aber mit Subdisks auf beiden Enclosures und kein Platzt mehr auf dem freien Enclosure um einen kompletten Spiegel neu aufzubauen.
Veritas sei Dank, kann man in dieser Situation natürlich noch alles von Hand gerade ziehen. Das bedeutet, wir legen uns eine neue Subdisk auf dem richtigen Enclosure von Hand an und moven dann die Subdisk auf dem falschen Enclosure auf die neue Subdisk:
- freien Platz fest stellen:
#vxdg -g <diskgroup> free
#vxmake -g <diskgroup> sd <subdisk-name> disk=<diskname> len=<länge> offset=<offset des freien Bereichs>
#vxsd -g <diskgroup> -o rm mv <oldsd> <newsd>
-o rm sorgt in diesem Fall dafür, das die alte Subdisk gelöscht wird. Eventuell ist noch ein “-f” nötig, weil es sich um ein Subvolume handelt.
Nun haben wir wieder einen sauberen Spiegel auf nur einem Standort und können diesen einfach wieder spiegeln und mit einem Log versehen:
#vxassist -g <diskgroup> <volume> mirror=enclr
#vxassist -g <diskgroup> addlog <volume>
Möglich ist aber auch folgendes:
- Subdisk anlegen (s.o.)
- Plex anlegen und mit Subdisk versehen
#vxmake -g <diskgroup> plex <plex-name> sd=<subdisk-name>
- Plex an Volume attachen, dh Spiegel aufbauen
#vxplex -g <diskgroup> att <volume> <plex-name>
Als hervorragende Einführung in Veritas Volume Manager und Veritas Cluster kann ich folgendes deutschsprachiges Buch empfehlen:
Veritas Storage Foundation: High End-Computing für UNIX Design und Implementation von Hochverfügbarkeitslösungen mit VxVM und VCS von Volker Herminghaus und Albrecht Scriba. Erschienen im Springer Verlag Berlin. ISBN 978-3540346104.
Ausserdem sind auch die Original Dokumentationen von Symantec, die man dort nach entsprechend komplizierter Suche und in immer wieder neuen Anordnungen auf der Webseite runterladen kann, zu empfehlen. (Link spare ich mir, weil er sich zu oft geändert hat)