
This change provides mount options for all of the file system types we use. These mount options will ensure that the underlying file systems react with the best possible performance when building a test cloud. The main motivation behind this patch is to help resolve bug 1753790 which is causing sporatic failure when gating on RAX test instances that have a secondary data disks. We were providing no options when mounting a secondary disk which results in using the system defaults which may not be very optimal under general workloads. The options have been added to the bootstrap role and will be consistently applied whenever a given FS is used. > Part of this chagne is to modify the FS type for /var/lib/nova. We were using EXT4 and the recommended FS for VM workloads is XFS. > The mount options have largely been derived from the following posts, https://www.phoronix.com/scan.php?page=article&item=linux414-fs-compare&num=1 https://www.phoronix.com/scan.php?page=article&item=linux-415-fs&num=1 Change-Id: I75e00af687d46551e19178604b60665342cf2cae Closes-Bug: #1753790 Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
155 lines
4.7 KiB
YAML
155 lines
4.7 KiB
YAML
---
|
|
# Copyright 2015, Rackspace US, Inc.
|
|
#
|
|
# Licensed 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.
|
|
|
|
|
|
# Only execute the disk partitioning process if a partition labeled
|
|
# 'openstack-data{1,2}' is not present and that partition is not
|
|
# formatted as ext4. This is an attempt to achieve idempotency just
|
|
# in case these tasks are executed multiple times.
|
|
- name: Determine whether partitions labeled openstack-data{1,2} are present
|
|
shell: |
|
|
parted --script -l -m | egrep -q ':ext4:openstack-data[12]:;$'
|
|
register: data_disk_partitions
|
|
changed_when: false
|
|
failed_when: false
|
|
tags:
|
|
- check-data-disk-partitions
|
|
|
|
- name: Set bootstrap host data disk fact
|
|
set_fact:
|
|
bootstrap_host_data_disk_device_force: true
|
|
_bootstrap_host_data_disk_device: "{{ (bootstrap_host_data_disk_device | regex_replace('!','/')).strip() }}"
|
|
when:
|
|
- data_disk_partitions.rc == 1
|
|
|
|
- name: Dismount and remove fstab entries for anything on the data disk device
|
|
mount:
|
|
name: "{{ item.mount }}"
|
|
src: "{{ item.device }}"
|
|
fstype: ext4
|
|
state: absent
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
- item.device | search(bootstrap_host_data_disk_device)
|
|
with_items:
|
|
- "{{ ansible_mounts }}"
|
|
|
|
- name: Partition the whole data disk for our usage
|
|
command: "{{ item }}"
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
with_items:
|
|
- "parted --script /dev/{{ _bootstrap_host_data_disk_device }} mklabel gpt"
|
|
- "parted --align optimal --script /dev/{{ _bootstrap_host_data_disk_device }} mkpart openstack-data1 ext4 0% 40%"
|
|
- "parted --align optimal --script /dev/{{ _bootstrap_host_data_disk_device }} mkpart openstack-data2 {{ bootstrap_host_data_disk2_fs }} 40% 100%"
|
|
tags:
|
|
- create-data-disk-partitions
|
|
|
|
- name: Format the partition 1
|
|
filesystem:
|
|
fstype: ext4
|
|
dev: "/dev/{{ _bootstrap_host_data_disk_device }}1"
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
tags:
|
|
- format-data-partitions
|
|
|
|
- name: Format the partition 2
|
|
filesystem:
|
|
fstype: "{{ bootstrap_host_data_disk2_fs }}"
|
|
dev: "/dev/{{ _bootstrap_host_data_disk_device }}2"
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
- lxc_container_backing_store != 'lvm'
|
|
- lxc_container_backing_store != 'zfs'
|
|
tags:
|
|
- format-data-partitions
|
|
|
|
- name: Run the systemd mount role
|
|
include_role:
|
|
name: systemd_mount
|
|
private: true
|
|
vars:
|
|
systemd_mounts:
|
|
- what: "/dev/{{ _bootstrap_host_data_disk_device }}1"
|
|
where: "/openstack"
|
|
type: "ext4"
|
|
options: "{{ bootstrap_host_data_mount_options['ext4'] }}"
|
|
state: 'started'
|
|
enabled: true
|
|
tags:
|
|
- data-config
|
|
|
|
- name: Run the systemd mount role
|
|
include_role:
|
|
name: systemd_mount
|
|
private: true
|
|
vars:
|
|
systemd_mounts:
|
|
- what: "/dev/{{ _bootstrap_host_data_disk_device }}2"
|
|
where: "{{ bootstrap_host_data_disk2_path }}"
|
|
type: "{{ bootstrap_host_data_disk2_fs }}"
|
|
options: "{{ bootstrap_host_data_disk2_fs_mount_options }}"
|
|
state: 'started'
|
|
enabled: true
|
|
when:
|
|
- lxc_container_backing_store != 'lvm'
|
|
- lxc_container_backing_store != 'zfs'
|
|
tags:
|
|
- data-config
|
|
|
|
- name: Create the ZFS pool
|
|
command: zpool create osa-test-pool "/dev/{{ _bootstrap_host_data_disk_device }}2"
|
|
args:
|
|
creates: /osa-test-pool
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
- lxc_container_backing_store == 'zfs'
|
|
|
|
- name: Create the ZFS pool/lxc volume
|
|
shell: "(zfs list | grep lxc) || zfs create -o mountpoint=/var/lib/lxc osa-test-pool/lxc"
|
|
when:
|
|
- bootstrap_host_data_disk_device_force | bool
|
|
- lxc_container_backing_store == 'zfs'
|
|
tags:
|
|
- skip_ansible_lint
|
|
|
|
- name: Make LVM physical volume on the cinder device
|
|
shell: "pvcreate /dev/{{ _bootstrap_host_data_disk_device }}2 && touch /openstack/lxc.pvcreate"
|
|
args:
|
|
creates: "/openstack/lxc.pvcreate"
|
|
when:
|
|
- lxc_container_backing_store == 'lvm'
|
|
tags:
|
|
- skip_ansible_lint
|
|
- data-config
|
|
|
|
- name: Run pvscan
|
|
command: "pvscan"
|
|
changed_when: false
|
|
when:
|
|
- lxc_container_backing_store == 'lvm'
|
|
tags:
|
|
- cinder-lvm-pv
|
|
|
|
- name: Add cinder-volumes volume group
|
|
lvg:
|
|
vg: lxc
|
|
pvs: "/dev/{{ _bootstrap_host_data_disk_device }}2"
|
|
when:
|
|
- lxc_container_backing_store == 'lvm'
|
|
tags:
|
|
- data-config
|