[pve-devel] [PATCH pve-manager 2/2] Mask the SysV scripts and enable our systemd service.

Wolfgang Link w.link at proxmox.com
Mon Dec 19 17:25:26 CET 2016


This is important to control the exact start-up of ceph at boot.
We have the ceph.conf in the pmxcfs to pvecluster must startup first.
The ceph.sevice is a link to the old SysV scrips and can end in a race-condition for the osd's
---
 PVE/API2/Ceph.pm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/PVE/API2/Ceph.pm b/PVE/API2/Ceph.pm
index 96ae9e2..0ba1373 100644
--- a/PVE/API2/Ceph.pm
+++ b/PVE/API2/Ceph.pm
@@ -845,6 +845,16 @@ __PACKAGE__->register_method ({
 
 	my $systemd_managed = PVE::CephTools::systemd_managed();
 
+	if ($systemd_managed) {
+	    #to disable old SysV init scripts.
+	    eval { PVE::Tools::run_command(['/bin/systemctl', 'mask', 'ceph.service']); };
+	    die "Can't mask ceph.service\n" if $@;
+
+	    #to ensure we have the correct startup order.
+	    eval { PVE::Tools::run_command(['/bin/systemctl', 'enable', 'pve-ceph-disk.service']); };
+	    warn "Enable pve-ceph-disk.service manualy"if $@;
+	}
+
 	foreach my $section (keys %$cfg) {
 	    next if $section eq 'global';
 	    my $d = $cfg->{$section};
@@ -941,6 +951,12 @@ __PACKAGE__->register_method ({
 	    PVE::CephTools::write_ceph_config($cfg);
 
 	    PVE::CephTools::ceph_service_cmd('start', $monsection);
+
+	    if ($systemd_managed) {
+		#to ensure we have the correct startup order.
+		eval { PVE::Tools::run_command(['/bin/systemctl', 'enable', 'ceph-mon@$monid.service']); };
+		warn "Enable ceph-mon@$monid.service manualy"if $@;
+	    }
 	};
 
 	return $rpcenv->fork_worker('cephcreatemon', $monsection, $authuser, $worker);
-- 
2.1.4





More information about the pve-devel mailing list