ASM Cluster Filesystem - General Purpose vs. Oracle Home File System
von Sebastian Solbach ORACLE Deutschland B.V. & Co.KG
Mit Oracle 11.2 führte Oracle ein allgemeines Cluster Filesystem auf Basis von ASM ein - das ASM Cluster Filesystem kurz ACFS.
Es steht als Standard Posix konformes Filesystem für jegliche Applikation zur Verfügung,
und ist deshalbt nicht nur im Zusammenhang mit Real Application Clusters interessant.
Da geplant ist, das "reine ACFS" ohne Zusatzfunktionen, wie Read/Write Snapshots, erweiterte Sicherheit und Filesystemverschlüsselung, kostenfrei zur Verfügung zu stellen,
ist ACFS eine eine echte Alternative zu anderen teuren Clusterfilesystemen - auch wenn keine Oracle Datenbank auf dem System
installiert ist. In der Lizenzierung wird dieses Filesystem auch als "Oracle Cloud Filesystem" ausgewiesen. Dahinter verbirgt
sich technisch das ACFS, lizenzrechtlich beinhaltet das Cloud Filesystem aber alle notwendigen Bestandteile, um mit ACFS zu arbeiten:
Die Grid Infrastruktur, das Automatic Storage Management sowie die ASM dynamic Volumes (ADVM).
Anlegen des ACFS Filesystems
Create ACFS Command: /sbin/mkfs -t acfs /dev/asm/acfs2-64 Register Mount Point Command: /sbin/acfsutil registry -a -f /dev/asm/acfs2-64 /mnt/acfs2Das Anlegen eines "General Purpose File System" besteht aus dem Formatieren des Volumes mit ACFS Informationen und der anschließenden Registrierung des ACFS in der ACFS Registry. Die ACFS Registry kann man zum Beispiel mit der betriebssystemeigenen Konfiguration in der Datei /etc/fstab verglichen werden, da in der Registry festgehalten wird, welches Filesystem automatisch mit welchen Optionen auf den jeweiligen Knoten des Clusters gemountet wird. Die Verwendung der betriebssystemeigenen Registry (fstab) hierfür ist nicht möglich, da diese Informationen abgearbeitet werden, lange bevor die Clusterware gestartet ist. Ein Mount über die fstab beim Betriebssystemstart würde deswegen fehlschlagen. Außerdem funktioniert die fstab nicht clusterübergreifend, was die ACFS eigene Registry in der Oracle Clusterware eben erlaubt. Ein Mounten des Filesystems nur auf bestimmten Knoten bzw. mit unterschiedlichen Mountpoints ist ebenfalls möglich, wenn man diese Informationen dem Registry Command mitgibt. # acfsutil registry -a -f -n node1 /dev/asm/acfs1-64 /mnt/acfs1Der Befehl mountet das Filesystem dann automatisch nur auf dem Knoten "node1". Anmerkung: Die ACFS Registry ist zwar auch bei einer Oracle Restart Umgebung vorhanden, allerdings unterstützt Oracle Restart nicht das automatische Mounten der ACFS Filesysteme. Die MOS Note 886407.1: "ACFS/ADVM is NOT started automatically after node reboot or after CRS is restarted in non-RAC environment" bietet aber einen passablen Workaround an. Anlegen eines "Database Home File Systems" Create ACFS Command: /sbin/mkfs -t acfs /dev/asm/acfs1-64 Following commands should be run as privileged user : /opt/11.2.0.2/grid/bin/srvctl add filesystem -d /dev/asm/acfs1-64 -g FRA -v ACFS1 -m /mnt/acfs1 -u oracle /opt/11.2.0.2/grid/bin/srvctl start filesystem -d /dev/asm/acfs1-64 chown oracle:oinstall /mnt/acfs1 chmod 775 /mnt/acfs1Die Formatierung des "Database Home File Systems" unterscheidet sich nicht von der eines "General Purpose File System". Der Unterschied liegt in der Verwaltung des Filesystems. Denn das "Database Home File System" wird in der Clusterware als eigene "Filesystem Resource" registriert, und der Status kann über die Clusterware eigenen Verwaltungswerkzeugen (crsctl bzw. srvctl) abgefragt und gemountet (srvctl) werden. Normalerweise darf ein Filesystem nur von einem Benutzer mit "root" Rechten gemountet werden. Damit dies aber in Zukunft auch der normale "Home" Benutzer ausführen darf, wird der Filesystemressource über das Flag -u die ausführenden Benutzer mitgegeben, wie in diesem Falle der Benutzer "oracle". Damit kann "oracle" nun das Filesystem über den Befehl srvctl start filesystem bzw. srvctl stop filesystem mounten bzw. unmounten. Hiermit ist es auch möglich ein Filesystem nur auf bestimmten Knoten zu mounten, da die Clusterware sich den Status merkt. Somit wird das Filesystem immer nur dort gemountet, wo es als letztes auch aktiv war. Dies ist notwendig, da das Filesystem nicht in der ACFS Registry auftaucht, wo die Informationen für ein "General Purpose Filesystem" stehen. Anmerkung: Ein Filesystem, welches in der Clusterware registriert wurde, darf nicht zusätzlich in der ACFS Registry erscheinen. Verwendungszwecke Diese unterschiedliche Art der Verwaltung/Registrierung gibt auch die verschiedenen Verwendungszwecke vor. Wenn innerhalb der Clusterware die Notwendigkeit besteht, eine Abhängigkeit zwischen dem Filesystem und einer anderen Clusterwareressource zu definieren, so muss für das Filesystem ebenfalls eine Clusterwareressource vorhanden sein. Am leichtesten versteht man dies mit Hilfe der Datenbank. Hat man zum Beispiel das Wallet für eine Funktion der Datenbank (Transparent Data Encryption oder Netzwerkverschlüsselung) auf ACFS abgelegt, so kann die Datenbank erst gestartet werden, wenn das Filesystem gemountet ist. Zu diesem Zweck bietet der Befehl srvctl modify database die Möglichkeit, diese Abhängigkeit zu definieren. $ srvctl modify database -h Modifies the configuration for the database. Usage: srvctl modify database -dDer srvctl Befehl trägt dazu in die START_DEPENDENCIES und STOP_DEPENDENCIES die Abhängigkeit zum ACFS ein, so dass die Datenbank nur dann startet, wenn das Filesystem gemountet wurde. Diese Abhängigkeiten können natürlich über den Befehl crsctl für eigene Clusterressourcen (nicht ora.* Ressourcen) eingetragen werden, wenn diese auf das ACFS angewiesen sind. Bei einem "General Purpose File System" gibt es keine automatische Möglichkeit, diese Abhängigkeiten zu hinterlegen. Weitere Unterschiede und Gemeinsamkeiten Die unterschiedliche Art der Filesysteme ist im ACFS selber nicht erkennbar. So ist die Ausgabe von acfsutil info fs für beide Filesysteme gleich. # acfsutil info fs /mnt/acfs2 ACFS Version: 11.2.0.2.0 flags: MountPoint,Available mount time: Thu May 16 15:32:26 2013 volumes: 1 total size: 536870912 total free: 423358464 primary volume: /dev/asm/acfs2-64 label: flags: Primary,Available,ADVM on-disk version: 39.0 allocation unit: 4096 major, minor: 252, 32770 size: 536870912 free: 423358464 ADVM diskgroup FRA ADVM resize increment: 268435456 ADVM redundancy: mirror ADVM stripe columns: 4 ADVM stripe width: 131072 number of snapshots: 0 snapshot space usage: 0 /mnt/acfs1 ACFS Version: 11.2.0.2.0 flags: MountPoint,Available mount time: Thu May 16 15:53:25 2013 volumes: 1 total size: 536870912 total free: 419172352 primary volume: /dev/asm/acfs1-64 label: flags: Primary,Available,ADVM on-disk version: 39.0 allocation unit: 4096 major, minor: 252, 32769 size: 536870912 free: 419172352 ADVM diskgroup FRA ADVM resize increment: 268435456 ADVM redundancy: mirror ADVM stripe columns: 4 ADVM stripe width: 131072 number of snapshots: 0 snapshot space usage: 0Möchte man nachträglich wissen, wie das Filesystem angelegt wurde, so ist dies über die ACFS Registry bzw. den Befehl crsctl möglich. # acfsutil registry -l Device : /dev/asm/acfs2-64 : Mount Point : /mnt/acfs2 : Options : none : Nodes : all : Disk Group : FRA : Volume : ACFS2 # crsctl stat res -w "TYPE = ora.acfs.type" -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.fra.acfs1.acfs ONLINE ONLINE bumucsvm1 ONLINE ONLINE bumucsvm2 ONLINE ONLINE bumucsvm3 Wechsel zwischen den Varianten Hat man versehentlich die falsche Option im ASMCA gewählt, kann die Art der Registrierung durch ein paar einfache Kommandos gewechselt werden. Es ist also nicht notwendig das Filesystem zu löschen oder neu anzulegen! Hier die Variante von "General Purpose" nach "Oracle Home": # acfsutil registry -d /mnt/acfs2 acfsutil registry: successfully removed ACFS mount point /mnt/acfs2 from Oracle Registry # srvctl add filesystem -d /dev/asm/acfs2-64 -g FRA -v ACFS2 -m /mnt/acfs2 -u oracle # srvctl start filesystem -d /dev/asm/acfs2-64Zwischen den Schritten ist bei dieser Umwandlung kein Unmount notwendig. Der Start wird lediglich zum Anzeigen des richtigen Status in der Clusterware benötigt. Damit der Unmount auch bei der Änderung zur General Purpose Variante nicht notwendig ist, wird mit der Option Force (-f) beim Befehl srvctl verwendet: # srvctl remove filesystem -d /dev/asm/acfs2-64 -f # acfsutil registry -a -f /dev/asm/acfs2-64 /mnt/acfs2 acfsutil registry: mount point /mnt/acfs2 successfully added to Oracle Registry Fazit Der Unterschied zwischen "General Purpose File System" und "Oracle Home File System" liegt also in der Art der Registrierung und ob Cluster Abhängigkeiten auf das Filesystem benötigt werden oder nicht, wie eben für eine Datenbank, die erst starten darf, wenn das ACFS Filesystem gemountet ist. Ob das Filesystem für Oracle Software bzw. ein Oracle Home verwendet wird, ist eher zweitrangig. Nützliche Links und Referenzen
|