I needed to check the integrity of the file systems on several xen domU guests while the guests were shutdown, ie. I needed to do it from the dom0.

I use LVM logical volumes for the block devices for the guests disks named $host-disk0. These are stored in a volume group named vg_guests. I use kpartx to access the partitions on the block device.

Each guest disk has a small physical partition for /boot; the rest of the disk is allocated to a 2nd partition which is used as an LVM volume group named vg_$host.

Here's a script I knocked up to do the job:

for host in host1 host2 host3 ; do
    # create devices from the LVs
    kpartx -av /dev/mapper/vg_guests-$host--disk*
    # Activate the VGs for the host
    for vg in $(vgs --noheadings | grep $host | awk '{print $1}' ) ; do
        echo Activating $vg
        vgchange -ay $vg
    # check the file systems
    for p in $(/dev/mapper/vg_$host* | grep -v swap); do
        e2fsck -p $p
    # Deactivate the VGs
    for vg in $(vgs --noheadings | grep $host | awk '{print $1}' ) ; do
        echo De-activating $vg
        vgchange -an $vg
    # Remove the devices
    kpartx -dv /dev/mapper/vg_guests-$host--disk0
I've wondered for a while how to type Unicode characters in Linux but I've never really *needed* to do it so I've never spent much time investigating. It turns out it's pretty straight-forward: simply hold down Ctrl+Shift+U and enter the character number. For example:

  • the Trademark Symbol is character U+2122: ™
  • small letter c with a cedilla accent is U+00E7: ç