Results 1 to 3 of 3

Thread: apt-get dist-upgrade keeps corrupting my file system

  1. #1

    QEMU keeps corrupting my file system

    My Kali Linux runs as a QEMU guest on an Arch Linux host. It uses VirtIO, Video QXL and Spice. qemu-guest-agent.service and spice-vdagentd.service are up and running.

    After
    # apt-get update
    # apt-get dist-upgrade
    # shutdown -r now

    I get a corrupted file system on /dev/vda2 (the root partition) on a regular basis, which I was able to repair with fsck in the initram until recently. At the moment I can still boot and ssh into the machine. Before I start to repair GDM3, which starts and runs without an error message but doesn't show up at the display for the time being, I would like to figure out why my Kali Guest is messing up it's root partition repeatedly.

    Could someone give my a helping hand where and how to investigate the problem?

    This is the libvirt xml configuration of my VM:

    Code:
    <domain type="kvm">
      <name>retracted</name>
      <uuid>retracted</uuid>
      <metadata>
        <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
          <libosinfo:os id="http://debian.org/debian/testing"/>
        </libosinfo:libosinfo>
      </metadata>
      <memory unit="KiB">4194304</memory>
      <currentMemory unit="KiB">4194304</currentMemory>
      <vcpu placement="static">4</vcpu>
      <os>
        <type arch="x86_64" machine="pc-q35-4.1">hvm</type>
        <loader readonly="yes" type="pflash">/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
        <nvram>/var/lib/libvirt/qemu/nvram/retracted_VARS.fd</nvram>
        <bootmenu enable="no"/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <vmport state="off"/>
      </features>
      <cpu mode="host-model" check="partial"/>
      <clock offset="utc">
        <timer name="rtc" tickpolicy="catchup"/>
        <timer name="pit" tickpolicy="delay"/>
        <timer name="hpet" present="no"/>
      </clock>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>destroy</on_crash>
      <pm>
        <suspend-to-mem enabled="no"/>
        <suspend-to-disk enabled="no"/>
      </pm>
      <devices>
        <emulator>/usr/bin/qemu-system-x86_64</emulator>
        <disk type="file" device="disk">
          <driver name="qemu" type="qcow2"/>
          <source file="/home/libvirt/retracted.qcow2"/>
          <target dev="vda" bus="virtio"/>
          <boot order="1"/>
          <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
        </disk>
        <controller type="usb" index="0" model="qemu-xhci" ports="15">
          <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
        </controller>
        <controller type="sata" index="0">
          <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
        </controller>
        <controller type="pci" index="0" model="pcie-root"/>
        <controller type="pci" index="1" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="1" port="0x10"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
        </controller>
        <controller type="pci" index="2" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="2" port="0x11"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
        </controller>
        <controller type="pci" index="3" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="3" port="0x12"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
        </controller>
        <controller type="pci" index="4" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="4" port="0x13"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
        </controller>
        <controller type="pci" index="5" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="5" port="0x14"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
        </controller>
        <controller type="pci" index="6" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="6" port="0x15"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
        </controller>
        <controller type="pci" index="7" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="7" port="0x16"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
        </controller>
        <controller type="virtio-serial" index="0">
          <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
        </controller>
        <interface type="network">
          <mac address="52:54:00:26:7a:48"/>
          <source network="default"/>
          <model type="virtio"/>
          <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
        </interface>
        <serial type="pty">
          <target type="isa-serial" port="0">
            <model name="isa-serial"/>
          </target>
        </serial>
        <console type="pty">
          <target type="serial" port="0"/>
        </console>
        <channel type="unix">
          <target type="virtio" name="org.qemu.guest_agent.0"/>
          <address type="virtio-serial" controller="0" bus="0" port="1"/>
        </channel>
        <channel type="spicevmc">
          <target type="virtio" name="com.redhat.spice.0"/>
          <address type="virtio-serial" controller="0" bus="0" port="2"/>
        </channel>
        <input type="tablet" bus="usb">
          <address type="usb" bus="0" port="1"/>
        </input>
        <input type="mouse" bus="ps2"/>
        <input type="keyboard" bus="ps2"/>
        <graphics type="spice">
          <listen type="none"/>
          <image compression="off"/>
          <gl enable="yes"/>
        </graphics>
        <sound model="ich9">
          <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
        </sound>
        <video>
          <model type="qxl" ram="131072" vram="131072" vgamem="65536" heads="1" primary="yes"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
        </video>
        <redirdev bus="usb" type="spicevmc">
          <address type="usb" bus="0" port="2"/>
        </redirdev>
        <redirdev bus="usb" type="spicevmc">
          <address type="usb" bus="0" port="3"/>
        </redirdev>
        <memballoon model="virtio">
          <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
        </memballoon>
        <rng model="virtio">
          <backend model="random">/dev/urandom</backend>
          <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
        </rng>
      </devices>
    </domain>
    Last edited by enrico.fermi; 2020-04-18 at 09:27.

  2. #2
    Oh well, it wasn't so stupid to attach the QEMU-.xml file after all, since this seems to be a QEMU bug:

    https://bugs.launchpad.net/qemu/+bug/1847793

    I'll come back to report to this community in case I find a way to fix the problem. According to the above bugreport downgrading QEMU to 4.0.0 might fix it.

  3. #3

    qemu-nbd and ddrescue

    Ok, so I couldn't reproduce how I managed to corrupt the .qcow2 image, maybe QEMU 4.1.x wrecked it (see my second post) or I did a qemu-img resize without being careful at some point.

    However I would like to share with you how I repaired it. This might be helpful for others in the community who encounter similiar problems in a similiar setting.

    Code:
    qemu-img check retracted.qcow2
    mv retracted.qcow2 retracted_corrupted.qcow2
    qemu-nbd --connect=/dev/nbd0 retracted_corrupted.qcow2
    ddrescue /dev/nbd0 retracted.raw
    qemu-nbd --disconnect /dev/nbd0
    qemu-img convert -O qcow2 retracted.raw retracted.qcow2
    qemu-img check retracted.qcow2
    In case I haven't been complying with the forum rules entirely, I like to thank the forum admin(s) for being patient with me and forwarding my posts.

    Stay home. Stay safe.

Similar Threads

  1. Replies: 1
    Last Post: 2022-08-01, 01:31
  2. Replies: 1
    Last Post: 2020-07-25, 05:28

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •