← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1818847] [NEW] Fix QEMU cache mode used for image conversion and Nova instances

 

Public bug reported:

Nova uses QEMU's disk image cache modes in two main areas:

(1) When decicding what cache mode to use for the target disk image when
    converting (using `qemu-img convert`) images from one format to 
    another (qcow2 <-> raw).

    See unprivileged_convert_image() in nova/privsep/qemu.py.

(2) When configuring cache modes for running guests (Nova instances).
    Nova tells libvirt what cache mode to use, and libvirt will in turn
    configure block devices via QEMU (using its '-drive' command-line
    option).

    See disk_cachemode() in nova/virt/libvirt/driver.py.  (And also for
    "volume drivers" like SMBFS and Virtuozzo Storage also use
    'writethrough' -- refer smbfs.py and vzstorage.py.)

In both cases Nova uses QEMU's a combination of cache modes 'none' and
'writethrough'.  But that is incorrect, because of our misunderstanding
of how cache modes work.  E.g. Nova's libvirt driver currently assumes
(refer disk_cachemode()) that 'writethrough' and 'none' cache modes have
the same behaviour with respect to host crash safety, which is not at
all true.

Fix these wrong assumptions.

(Also consult the QEMU Block Layer developers to double-check the
behaviour of cache modes and where they are applicable.)

** Affects: nova
     Importance: Undecided
         Status: New

** Summary changed:

- Fix  QEMU cache mode for image conversion and  Nova instances
+ Fix  QEMU cache mode used for image conversion and  Nova instances

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1818847

Title:
  Fix  QEMU cache mode used for image conversion and  Nova instances

Status in OpenStack Compute (nova):
  New

Bug description:
  Nova uses QEMU's disk image cache modes in two main areas:

  (1) When decicding what cache mode to use for the target disk image when
      converting (using `qemu-img convert`) images from one format to 
      another (qcow2 <-> raw).

      See unprivileged_convert_image() in nova/privsep/qemu.py.

  (2) When configuring cache modes for running guests (Nova instances).
      Nova tells libvirt what cache mode to use, and libvirt will in turn
      configure block devices via QEMU (using its '-drive' command-line
      option).

      See disk_cachemode() in nova/virt/libvirt/driver.py.  (And also for
      "volume drivers" like SMBFS and Virtuozzo Storage also use
      'writethrough' -- refer smbfs.py and vzstorage.py.)

  In both cases Nova uses QEMU's a combination of cache modes 'none' and
  'writethrough'.  But that is incorrect, because of our misunderstanding
  of how cache modes work.  E.g. Nova's libvirt driver currently assumes
  (refer disk_cachemode()) that 'writethrough' and 'none' cache modes have
  the same behaviour with respect to host crash safety, which is not at
  all true.

  Fix these wrong assumptions.

  (Also consult the QEMU Block Layer developers to double-check the
  behaviour of cache modes and where they are applicable.)

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1818847/+subscriptions


Follow ups