Rollback Partition Preservation
implements blueprint partition-preservation Change-Id: I3c507356405ed3c656779ef583af6b7776f92a65
This commit is contained in:
parent
6393d57ef4
commit
a6735894bd
@ -36,6 +36,14 @@ Contents:
|
||||
|
||||
specs/6.1/*
|
||||
|
||||
7.0 approved specs:
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
:maxdepth: 1
|
||||
|
||||
specs/7.0/*
|
||||
|
||||
==================
|
||||
Indices and tables
|
||||
==================
|
||||
|
247
specs/7.0/partition-preservation.rst
Normal file
247
specs/7.0/partition-preservation.rst
Normal file
@ -0,0 +1,247 @@
|
||||
==================================================
|
||||
Support for partition preservation during rollback
|
||||
==================================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/rollback-partition-preservation
|
||||
|
||||
Support for partition preservation.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
:First:
|
||||
|
||||
Currently Fuel performs full re-provisioning while performing rollback which
|
||||
implies data deletion. For instance, it doesn't preserve virtual machine
|
||||
image files, compute node log files, database files. That said it loses
|
||||
valuable data during rollback.
|
||||
So operator has to manually backup valuable data before rollback.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
The idea is to preserve certain partitions on the nodes during rollback while
|
||||
fully reformat others. For instance, keep partition /var/lib/nova/instances
|
||||
intact but create filesystem on / (root) from the scratch.
|
||||
|
||||
Proposed features
|
||||
-----------------
|
||||
|
||||
* Allow keeping certain partitions with valuable data on the nodes during
|
||||
provision.
|
||||
|
||||
* Allow configuring a set of partitions to preserve using standard
|
||||
fuel CLI commands to download and modify disk.yaml.
|
||||
|
||||
Implementation model
|
||||
--------------------
|
||||
|
||||
General overview
|
||||
++++++++++++++++
|
||||
|
||||
On data preservation following use cases were identified:
|
||||
1) keep Ceph data
|
||||
2) keep Swift data
|
||||
3) keep Nova instances cache
|
||||
4) keep DB/logs/other custom partition types
|
||||
|
||||
Architectural design
|
||||
++++++++++++++++++++
|
||||
|
||||
First off, here's how partitioning in Fuel 6.x works right now. There are two
|
||||
components - VolumeManager (on nailgun's side) and Fuel agent (a process
|
||||
inside bootstrap OS). Fuel agent is quite straightforward - it just executes
|
||||
orders from VolumeManager. Fuel agent knows nothing about partitioning layout,
|
||||
it doesn't contain any business logic. So it is VolumeManager which contains
|
||||
that business logic.
|
||||
|
||||
The idea of Rollback Paritition Preservation is to keep data (vm images, logs,
|
||||
db files, etc) during reprovisioning. So in terms of partitioning instead of
|
||||
fully deleting partitions and creating a new partition table Fuel will
|
||||
preserve data on some specific partitions (not all) while it still will
|
||||
reformat others (like root partition).
|
||||
|
||||
Preserved partition must be located as separate mountpoints
|
||||
Mountpont should be added to the openstack.yaml
|
||||
in case when specific mountpoint doesn't exist
|
||||
|
||||
Workflow will be as following:
|
||||
|
||||
1) Add 'keep' or similar boolean flag to node disks settings
|
||||
in Nailgun API (i.e. disks.yaml):
|
||||
|
||||
``fuel node --node 1 --disk --download``
|
||||
::
|
||||
|
||||
cat node_1/disks.yaml
|
||||
|
||||
- extra:
|
||||
- disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001
|
||||
- disk/by-id/ata-QEMU_HARDDISK_QM00001
|
||||
id: disk/by-path/pci-0000:00:01.1-scsi-0:0:0:0
|
||||
name: sda
|
||||
size: 101836
|
||||
volumes:
|
||||
- name: os
|
||||
size: 101836
|
||||
keep: true
|
||||
|
||||
then upload modified disk.yaml
|
||||
|
||||
``fuel node --node 1 --disk --upload``
|
||||
2) Mcollective agent (erase_node.rb module in Mcollective) should
|
||||
be modified to disable erasing partitions with 'keep: True'
|
||||
when node is deleted from environment.
|
||||
3) Fuel agent should be modified to be able to preserve partition
|
||||
4) Fuel agent should save partition table if there is a partition
|
||||
with 'keep' flag set into true. On the Nailgun side all changes
|
||||
and operations of partition table should be not be accessible.
|
||||
5) Not preserved partition should be erased using new File System.
|
||||
|
||||
Delivery details
|
||||
++++++++++++++++
|
||||
|
||||
In context of this blueprint VolumeManager will be modified in order
|
||||
to handle new partition preservation parameter. Also, Fuel agent will
|
||||
be potentially changed, but those changes will be minor. In addition to
|
||||
VolumeManager and Fuel agent there will be small changes in nailgun in order
|
||||
to pass keep flag (disk.yam) to VolumeManager.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
The alternative approach would be copying valuable data back and
|
||||
forth before and after the rollback.
|
||||
But that would drastically increase time needed for rollback.
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
As this blueprint is all about adding new configurable behaviour to
|
||||
node reinstallation feature - it introduces parameter to disk.yaml
|
||||
to REST API which performs default value as False.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
This feature allows to speed up upgrade process of Compute and
|
||||
Storage nodes due to no need to move huge amount of data.
|
||||
This helps to minimize impact of upgrade procedure on end user
|
||||
workloads running in the cloud.
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
Partition preservation must be disabled when node is being
|
||||
decommissioned from environment. Otherwise, user data remaining on
|
||||
preserved partitions can pose a security risk.
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
This blueprint itself is about boosting speed of rollback
|
||||
and migration operations
|
||||
|
||||
Plugin impact
|
||||
-------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
This feature can affect services which use files from preserved
|
||||
partition. In this case puppet manifests should be modified
|
||||
and conform this feature
|
||||
All changes for this services should be described in
|
||||
corresponding specs.
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
:Primary Assignee: Ivan Ponomarev
|
||||
|
||||
:QA: Veronika Krayneva
|
||||
|
||||
:Documentation: Peter Zhurba, Dmitry Klenov
|
||||
|
||||
:Reviewer: Vladimir Kuklin, Vladimir Kozhukalov
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
1. Pass preserve partitions parameter from disk.yaml to Nailgun
|
||||
(VolumeManager)
|
||||
|
||||
2. Adapt VolumeManager to take partition preservation flag and
|
||||
generate appropriate partition layout for Fuel agent
|
||||
|
||||
3. Adapt fuel-agent/manager taking into account preserved partitions
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/mos-rollback
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
|
||||
Reinstall single compute on HW with partition preservation:
|
||||
|
||||
1) Enable partition preservation in disks settings (disks.yaml) of the
|
||||
compute
|
||||
2) Do reinstallation of the compute
|
||||
3) Run OSTF tests set
|
||||
4) Run Network check
|
||||
5) Check data on partitions
|
||||
6) Check availability preserved VM's
|
||||
|
||||
Reinstall single controller on HW with partition preservation
|
||||
|
||||
1) Enable partition preservation in disks settings (disks.yaml) of the
|
||||
controller
|
||||
2) Do reinstallation of the controller
|
||||
3) Run OSTF tests set
|
||||
4) Run Network check
|
||||
5) Check data on partitions
|
||||
6) Check services data that have been preserved
|
||||
Services should normally works using preserved data
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
Documentation should be improved with
|
||||
information about Partition Preservation options.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/mos-rollback
|
||||
https://blueprints.launchpad.net/fuel/+spec/rollback-partition-preservation
|
Loading…
Reference in New Issue
Block a user