erstmal ein Hallo an alle. Ich benutze Wheezy mit Proxmox als Hypervisor für meine VM's welche ebenfalls unter KVM mit Wheezy laufen. Vor kurzem hab ich Bacula eingerichtet, da es mir mehrfach empfohlen wurde und es auch einen sehr guten Eindruck macht. Leider hab ich aber ein Problem, welches ich bisher nicht lösen konnte.
Die ersten Jobs die Bacula ausgeführt hat, sind zwar schön durchgelaufen, allerdings haben sie EWIG gebraucht. Ich begab mich also auf Fehlersuche. Nach vielem vielem lesen und testen der Übertragungsraten mit netcat kam ich dann zu dem Schluss, dass es nicht an der Übertragung liegen kann. Die VMs sind mit in einem privaten Netz mit dem Hypervisor auf dem der Bacula Director läuft verbunden, die Übertragungsraten sind mit dem paravitualisierten Netzwerkadapter nahezu bei der Geschwindigkeit von einem normalen Kopiervorgang zwischen zwei Paritionen.
Der Hypervisor hat nur ein RAID1, wesshalb ich zuerst vermutete, dass einfach die Platte nicht schneller ist. Dem war aber nicht so, ich schaffe bei einem Transfer per netcat durchaus Übertragungsraten von an die 100MB/s. Bacula kommt gerade mal auf 0,5-3MB/s.
Also hab ich mal das Attribut Spooling eingeschalten und siehe da:
Ohne Attribut Spooling
Code: Alles auswählen
JobId 17: Job write elapsed time = 00:13:24, Transfer rate = 1.585 M Bytes/second
Code: Alles auswählen
JobId 7: Job write elapsed time = 00:03:40, Transfer rate = 38.55 M Bytes/second
Also hab ich das MySQL Log sowie das Slow-Log eingeschalten und siehe da, Bacula braucht ewig für die Inserts in die batch Tabelle. Das sind gerade mal zwischen 3-20 queries pro Sekunde.
Ich meine die hier:
Code: Alles auswählen
INSERT INTO batch VALUES (203,7,'/home/syscp/webs/samberun/webalizer/haranni-ak11.de/','usage.png','P0C DDXP IGk B A A A ln BAA I BT5IXr BSBljB BTnHbX A A C','bfurdLgmHTESmxupdKe2Iw',0)
Die ganze Bacula Datenbank also den Catalog hab ich mit mysqldump gedumpt und dann wieder importiert, dafür braucht er gerade mal kanpp ne Minute, also daran kann es eigentlich nicht liegen. Es muss wirklich an den "insert into batch" inserts liegen.
So jetzt die große Frage, wieso ist das so langsam? Braucht MySQL für diese Inserts so lange oder schickt der Bacula-Director sie so langsam?
Nach den Inserts macht er ein:
Code: Alles auswählen
39 Query LOCK TABLES Path write, batch write, Path as p write
32588 39 Query INSERT INTO Path (Path) SELECT a.Path FROM (SELECT DISTINCT Path FROM batch) AS a WHERE NOT EXISTS (SELECT Path FROM Path AS p WHERE p.Path = a.Path)
32589 39 Query UNLOCK TABLES
32590 39 Query LOCK TABLES Filename write, batch write, Filename as f write
32591 39 Query INSERT INTO Filename (Name) SELECT a.Name FROM (SELECT DISTINCT Name FROM batch) AS a WHERE NOT EXISTS (SELECT Name FROM Filename AS f WHERE f.Name = a.Name)
32592 39 Query UNLOCK TABLES
32593 39 Query INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5, DeltaSeq) SELECT batch.FileIndex, batch.JobId, Path.PathId, Filename.FilenameId,batch.LStat, batch.MD5, batch.DeltaSeq FROM batch JOIN Path ON (batch.Path = Path.Path ) JOIN Filename ON (batch.Name = Filename.Name)
32594 140808 15:45:27 39 Query DROP TABLE batch
Hat jemand eine Idee, wie ich das weiter debuggen könnte? Ich will nicht das ganze Bacula-Ding auseinander nehmen um zu sehen, wie schnell er die MySQL Commands schickt oder die Datenbank.
Ich benutz Bacula und MySQL so wie es in den Repos ganz offiziell enthalten ist, nix selbst compiltes.
Danke euch für die Mühe!