Enable direct-io on LVM loop devices
This enables direct-io on the loop devices that we create for LVM backing stores. The goal here is to reduce the buffer cache overhead involved with loop mounting a very large file on a filesystem, as well as potentially providing a little more block-device-like behavior for things that expect them. We are hoping this will address some of the very long LVM calls that cinder does, which randomly take a very long time, causing timeouts. The loop direct-io support was added in kernel 4.4.0, which was xenial, but the losetup binary does not have the required flag. Thus, this patch checks the "losetup -h" output for the flag before deciding to enable it. Change-Id: Idc69cf3598d6ed6646c0145733c90ad0b1b60883
This commit is contained in:
parent
8fc227f63f
commit
93a94f503b
9
lib/lvm
9
lib/lvm
@ -99,8 +99,15 @@ function _create_lvm_volume_group {
|
||||
if ! sudo vgs $vg; then
|
||||
# Only create if the file doesn't already exists
|
||||
[[ -f $backing_file ]] || truncate -s $size $backing_file
|
||||
|
||||
local directio=""
|
||||
# Check to see if we can do direct-io
|
||||
if losetup -h | grep -q direct-io; then
|
||||
directio="--direct-io=on"
|
||||
fi
|
||||
|
||||
local vg_dev
|
||||
vg_dev=`sudo losetup -f --show $backing_file`
|
||||
vg_dev=$(sudo losetup -f --show $directio $backing_file)
|
||||
|
||||
# Only create volume group if it doesn't already exist
|
||||
if ! sudo vgs $vg; then
|
||||
|
Loading…
Reference in New Issue
Block a user