unable to boot from the second disk of a RAID1 array - error 21

Bug #360832 reported by Mathias Gug on 2009-04-14
4
Affects Status Importance Assigned to Milestone
grub (Ubuntu)
High
Unassigned

Bug Description

Binary package hint: grub

Running on jaunty RC with a system installed on a RAID1 array. Starting the system with only the second drive plugged in gives a grub error 21. Moving the second disk to be the primary drive will make the system boot correctly from the degraded array.

Related branches

Mathias Gug (mathiaz) on 2009-04-14
Changed in grub (Ubuntu):
importance: Undecided → High
Mathias Gug (mathiaz) on 2009-04-14
Changed in grub (Ubuntu):
milestone: none → ubuntu-9.04

I have performed a new installation into a kvm of today's Jaunty amd64 server.

2 disks, 2 GB apiece, qcow2.

Both are partitioned into a single raid partition, raid1 together,
serving / on ext3. No separate /boot, or swap partition. Note that I
needed 256MB of memory for this to work.

I was then able to boot degraded in each of the following four cases:

kvm -hda server1.img
kvm -hdb server1.img
kvm -hda server2.img
kvm -hdb server2.img

That's using each of my disks, in each of the first and second disk position.

In all 4 cases, grub found a bootloader, started the kernel and
initramfs noticed that a disk was missing.

I have not yet been able to reproduce the problem, Mathias. There
must be something with the way in which libvirt calls kvm that's
introducing this problem...

:-Dustin

Dustin Kirkland  (kirkland) wrote :

<soren> mathiaz, kirkland: Mind you, IIRC, libvirt always tells kvm to use extboot.
<soren> I don't think extboot knows how to fall back if it fails to boot from something.

Mathias Gug (mathiaz) wrote :

Here is the kvm command line that fails with an grub error 21:

/usr/bin/kvm -M pc -m 128 -smp 1 -monitor pty -boot c -drive file=/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root2.qcow2,if=virtio,index=1,boot=on -drive file=/home/mathiaz/vm/isos/9.04-20090414/jaunty-server-amd64.iso,if=ide,media=cdrom,index=2 -net nic,macaddr=52:54:00:a2:34:e9,vlan=0,model=virtio -net tap,fd=10,script=,vlan=0 -usb -vnc 0.0.0.0:0

Mathias Gug (mathiaz) wrote :

And the associated libvirt file:

<domain type='kvm'>
        <name>jaunty-server-amd64-raid1</name>
        <uuid>1c3d9419-3c1d-493b-9ce7-c4a3cf6d1409</uuid>
        <memory>131072</memory>
        <vcpu>1</vcpu>
        <features>
                <acpi/>
        </features>
        <os>
                <type>hvm</type>
                <boot dev='hd' />

        </os>
        <clock offset='utc'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>reboot</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>

                <!-- <disk type='file' device='disk'><source file='/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root1.qcow2'/><target dev='hda' bus='virtio'/></disk> -->
<disk type='file' device='disk'><source file='/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root2.qcow2'/><target dev='hdb' bus='virtio'/></disk>
                <disk type='file' device='cdrom'><source file='/home/mathiaz/vm/isos/9.04-20090414/jaunty-server-amd64.iso'/><target dev='hdc'/><readonly/></disk>
                <interface type='network'>
                        <mac address='52:54:00:a2:34:e9'/>
                        <source network='default' />
                        <model type='virtio'/>
                </interface>
                <graphics type='vnc' listen='0.0.0.0'/>
        </devices>
</domain>

Mathias Gug (mathiaz) wrote :

Here is the kvm command line that can boot successfully from the second device:

usr/bin/kvm -M pc -m 128 -smp 1 -monitor pty -boot c -drive file=/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root2.qcow2,if=virtio,index=0,boot=on -drive file=/home/mathiaz/vm/isos/9.04-20090414/jaunty-server-amd64.iso,if=ide,media=cdrom,index=2 -net nic,macaddr=52:54:00:a2:34:e9,vlan=0,model=virtio -net tap,fd=10,script=,vlan=0 -usb -vnc 0.0.0.0:0

And its associated libvirt file:

<domain type='kvm'>
        <name>jaunty-server-amd64-raid1</name>
        <uuid>1c3d9419-3c1d-493b-9ce7-c4a3cf6d1409</uuid>
        <memory>131072</memory>
        <vcpu>1</vcpu>
        <features>
                <acpi/>
        </features>
        <os>
                <type>hvm</type>
                <boot dev='hd' />

        </os>
        <clock offset='utc'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>reboot</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>

                <!-- <disk type='file' device='disk'><source file='/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root1.qcow2'/><target dev='hda' bus='virtio'/></disk> -->
<disk type='file' device='disk'><source file='/home/mathiaz/vm/tests_isos/jaunty-server-amd64-raid1/vm//root2.qcow2'/><target dev='hda' bus='virtio'/></disk>
                <disk type='file' device='cdrom'><source file='/home/mathiaz/vm/isos/9.04-20090414/jaunty-server-amd64.iso'/><target dev='hdc'/><readonly/></disk>
                <interface type='network'>
                        <mac address='52:54:00:a2:34:e9'/>
                        <source network='default' />
                        <model type='virtio'/>
                </interface>
                <graphics type='vnc' listen='0.0.0.0'/>
        </devices>
</domain>

The only difference with between the two libvirt file is the dev attribute in the device target defintion.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers