Univention Bugzilla – Bug 23359
sysvol Replikation
Last modified: 2011-12-13 15:48:56 CET
Das sysvol Share muss zwischen den S4 Systemen synchronisiert werden.
Das Paket univention-samba4 installiert jetzt einen cron-Job, dessen aufruf-Häufigkeit über die UCR-Variable "samba4/sysvol/sync/cron" festgelegt wird (Voreinstellung alle 5 Minuten). Dabei wir samba4/sysvol/sync/jitter als jitter-Wert verwendet (Voreinstellung: 60 Sekunden). Der Cron-Job ruft auf allen univention-samba4-Systemen das Skript /usr/share/univention-samba4/scripts/sysvol-sync.sh auf. Falls in samba4/sysvol/sync/host ein host definiert ist, wird per rsync das Sysvol von dem host in das lokale sysvol synchronisiert (ohne dabei lokal neuere Dateien zu überschreiben). Danach kopiert das Skript ebenfalls per rsync das lokale sysvol zu dem samba4/sysvol/sync/host in ein temporäres Verzeichnis, für das DC Slave Hosts Schreibzugriff haben. Wenn das Skript danach wieder auf dem samba4/sysvol/sync/host ausgeführt wird, dann werden dort als erstes die von anderen Samba4-DCs exportierten sysvol-Daten aus den temporären Verzeichnissen in das aktive lokale sysvol gemerged. Als Voreinstellung wird samba4/sysvol/sync/host auf den Systemnamen gesetzt, der den Service 'S4 Connector' registriert hat, der Wert kann aber angepasst werden (in der Tat können dort mehrere Hostnamen eingetragen werden, aber das ist vermutlich nicht sinnvoll).
Folgende Fehlermeldung steht seht häufig in /var/log/univention/sysvol-sync.log: ERROR(<type 'exceptions.TypeError'>): uncaught exception - (61, 'No data available') File "/usr/lib/python2.6/dist-packages/samba/netcmd/__init__.py", line 135, in _run return self.run(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/samba/netcmd/ntacl.py", line 105, in run acl = getntacl(lp, file, xattr_backend, eadb_file) File "/usr/lib/python2.6/dist-packages/samba/ntacls.py", line 59, in getntacl xattr.XATTR_NTACL_NAME
Kann es sein, dass das System nicht direkt gejoined worden war? Nach den Join sollte folgendes Kommando ohne traceback funktionieren: samba-tool acl nt get --as-sddl /var/lib/samba/sysvol Ich habe sysvol-sync.sh jetzt so angepasst, dass es die entsprechenden Kommandos nicht ausführt, wenn samba4/sysvol/sync/host gesetzt ist, was im Joinscript geschieht.
(In reply to comment #3) > Kann es sein, dass das System nicht direkt gejoined worden war? Nach den Join > sollte folgendes Kommando ohne traceback funktionieren: Das kann sein. Der Traceback tritt jetzt auch nicht mehr auf, allerdings tauchen die Dateien von den Slaves und Backups jetzt nicht mehr im sysvol des Masters auf. Auf den Slaves und Backups sind aber die Dateien vom Master synchronisiert worden. In /var/log/univention/sysvol-sync.log sind keine Hinweise.
Die fehlerhafte Erkennung des Join-Status aus der letzten Anpassung wurde entfernt, statt dessen wird jetzt der cron-Job erst dann aktiviert, wenn die UCR-Variable samba4/sysvol/sync/cron gesetzt ist. Diese Variable wird jetzt im Joinscript gesetzt statt schon im postinst.
Funktioniert.
*** Bug 20920 has been marked as a duplicate of this bug. ***
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"