mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Add script to ensure cgroups are not co-mounted in rhel7/lxc. If required, script will unmount co-mounted cgroups and remount them seperately
This commit is contained in:
parent
f3b5a6ebc7
commit
4f3de024de
@ -309,6 +309,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
|
||||
private String _ovsPvlanVmPath;
|
||||
private String _routerProxyPath;
|
||||
private String _ovsTunnelPath;
|
||||
private String _setupCgroupPath;
|
||||
private String _host;
|
||||
private String _dcId;
|
||||
private String _pod;
|
||||
@ -706,6 +707,17 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
|
||||
_hypervisorType = HypervisorType.KVM;
|
||||
}
|
||||
|
||||
//Verify that cpu,cpuacct cgroups are not co-mounted
|
||||
if(HypervisorType.LXC.equals(getHypervisorType())){
|
||||
_setupCgroupPath = Script.findScript(kvmScriptsDir, "setup-cgroups.sh");
|
||||
if (_setupCgroupPath == null) {
|
||||
throw new ConfigurationException("Unable to find the setup-cgroups.sh");
|
||||
}
|
||||
if(!checkCgroups()){
|
||||
throw new ConfigurationException("cpu,cpuacct cgroups are co-mounted");
|
||||
}
|
||||
}
|
||||
|
||||
_hypervisorURI = (String)params.get("hypervisor.uri");
|
||||
if (_hypervisorURI == null) {
|
||||
_hypervisorURI = LibvirtConnection.getHypervisorURI(_hypervisorType.toString());
|
||||
@ -5218,4 +5230,15 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
|
||||
return _hypervisorType;
|
||||
}
|
||||
|
||||
private boolean checkCgroups(){
|
||||
final Script command = new Script(_setupCgroupPath, 5 * 1000, s_logger);
|
||||
String result;
|
||||
result = command.execute();
|
||||
if (result != null) {
|
||||
s_logger.debug("cgroup check failed:" + result);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
56
scripts/vm/hypervisor/kvm/setup-cgroups.sh
Executable file
56
scripts/vm/hypervisor/kvm/setup-cgroups.sh
Executable file
@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
|
||||
# Script to fix cgroups co-mounted issue
|
||||
# Applies to RHEL7 versions only
|
||||
# Detect if cpu,cpuacct cgroups are co-mounted
|
||||
# If co-mounted, unmount and mount them seperately
|
||||
|
||||
#set -x
|
||||
|
||||
#Check distribution version for RHEL
|
||||
if [ -f '/etc/redhat-release' ];
|
||||
then
|
||||
#Check RHEL version for 7
|
||||
if grep 'Red Hat Enterprise Linux Server release 7' /etc/redhat-release > /dev/null
|
||||
then
|
||||
# Check if cgroups if co-mounted
|
||||
if [ -d '/sys/fs/cgroup/cpu,cpuacct' ];
|
||||
then
|
||||
# cgroups co-mounted. Requires remount
|
||||
umount /sys/fs/cgroup/cpu,cpuacct
|
||||
rm /sys/fs/cgroup/cpu
|
||||
rm /sys/fs/cgroup/cpuacct
|
||||
rm -rf /sys/fs/cgroup/cpu,cpuacct
|
||||
mkdir -p /sys/fs/cgroup/cpu
|
||||
mkdir -p /sys/fs/cgroup/cpuacct
|
||||
mount -t cgroup -o cpu cpu "/sys/fs/cgroup/cpu"
|
||||
mount -t cgroup -o cpuacct cpuacct "/sys/fs/cgroup/cpuacct"
|
||||
# Verify that cgroups are not co-mounted
|
||||
if [ -d '/sys/fs/cgroup/cpu,cpuacct' ];
|
||||
then
|
||||
echo "cgroups still co-mounted"
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Loading…
x
Reference in New Issue
Block a user