Ryan Steele wrote:
Recently, I've been trying to set up LVM clients with FAI 3.2.4 for
Ubuntu, using Peter Gervai's well-placed LVM hooks. However, I keep
hitting the situation where sfdisk cannot read the partition table,
and mke2fs cannot create a filesystem, because it thinks the device is
in use. It's reproducible every time if I FAI-install the client more
than once. E.g., the first time I FAI-install the LVM-enabled host,
it works. But then, if I try it again (with the exact same
disk_config), sfdisk and mke2fs drop me to an emergency shell. I
would guess it's because it's unable to get the kernel to re-read the
partition table without a reboot, but I'm really not sure how FAI can
get around that situation, as there is currently no method for having
FAI "pick up where it left off" right after writing the partition table.
Has anybody else encountered this? It really makes FAI unusable.
Here's the output from FAI when this happens (from fai.log).
/dev/sda2 was my LVM volume:
Calling task_install
Calling task_partition
Partitioning local harddisks
setup_harddisks version 0.43fai
Probing disks: /dev/sda
Disks found: sda
Using config file: /var/lib/fai/config/disk_config/COSTELLO
Mapping disk name disk1 to sda
Creating partition table: LC_ALL=C sfdisk -q /dev/sda <
/tmp/fai/partition.sda
BLKRRPART: Device or resource busy
BLKRRPART: Device or resource busy
The command to re-read the partition table failed
Reboot your system now, before using mkfs
Creating file systems:
mke2fs -q -c -j /dev/sda1
mke2fs -q /dev/sda2
/dev/sda2 is apparently in use by the system; will not make a
filesystem here!
MKE2FS ERROR:
setup_harddisks version 0.43fai
Probing disks: /dev/sda
Disks found: sda
Using config file: /var/lib/fai/config/disk_config/COSTELLO
Mapping disk name disk1 to sda
Creating partition table: LC_ALL=C sfdisk -q /dev/sda <
/tmp/fai/partition.sda
Creating file systems:
mke2fs -q -c -j /dev/sda1
mke2fs -q /dev/sda2
Save log files via ssh to [EMAIL PROTECTED]:costello/install-20080929_142911
It may be worth noting that, from the emergency shell, 'lsof | grep sda'
returns nothing, and swapoff and umount have no effect (because nothing
on /dev/sda* is mounted). I've run partprobe, which hasn't helped, and
'sfdisk -R' and 'sfdisk -R -f' returns "BLKRRPART: Device or resource
busy ". I've also tried adding '--no-reread' to setup_harddisk's sfdisk
options to no avail. I have no idea why it thinks that device is in
use. All that really should have happened with them since boot is their
creation by udev.
On a whim, I used dd and /dev/zero to overwrite the partition table so
FAI would have something 'fresh' to start with, but I end up with
similar results - an emergency shell after mke2fs. I'm at a bit of a
loss as to what's going on here, but this only started after I began
installing LVM devices. For completeness here's what I added to get LVM
support:
1. class SW_RAID.var
[EMAIL PROTECTED]:/srv/fai/config# cat /srv/fai/config/class/SW_RAID.var
SW_RAID_CONFIG="
"
LVM_VG_CONFIG="
sys[]=/dev/sda2
"
LVM_LV_CONFIG="
sys/root[-n root ]=1G:/:ext3:
sys/home[-n home ]=2G:/home:ext3:
sys/swap[-n swap ]=1G:/swap:swap:
sys/srv[-n srv ]=1G:/srv:ext3:
sys/var[-n var ]=1G:/var:ext3:
sys/varlog[-n varlog]=1G:/var/log:ext3:
"
2. Added "dm_mod" to the list of kernelmodules in 20-hwdetect.source
3. disk_config for the client
[EMAIL PROTECTED]:/srv/fai/config# cat /srv/fai/config/disk_config/COSTELLO
# <type> <mountpoint> <size in mb> [mount options] [;extra options]
disk_config disk1
primary /boot 1000 rw,errors=remount-ro ; boot -c -j ext3
primary - 1024- rw
4. Last but not least, hooks/mountdisks.SW_RAID and
hooks/mountdisks.SW_RAID.source, as described on Peter Gervai's faiwiki
page.