mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 10:01:01 +03:00
Synchronize initramfs and system hostid
Relying on an /etc/hostid file which is installed in the system image breaks diskless systems which share an image. Certain cluster infrastructure such as MPI relies on all nodes having a unique hostid. However, we still must be careful to ensure the hostid is syncronized between the initramfs and system images when using zfs root filesystems. To accompish this the automatically created /etc/hostid file has been removed from the spl rpm packaging. The /etc/hostid file is now dynamically created for your initramfs as part of the dracut install process. This avoids the need to install it in the actual system images. This change also resolves the spl_hostid parameter handling for dracut. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #398 Closes #399 Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
6ebd8ef103
commit
e8753fb4f0
@ -33,7 +33,6 @@ install() {
|
|||||||
inst_rules @udevruledir@/60-zvol.rules
|
inst_rules @udevruledir@/60-zvol.rules
|
||||||
inst @sysconfdir@/zfs/zdev.conf
|
inst @sysconfdir@/zfs/zdev.conf
|
||||||
inst @sysconfdir@/zfs/zpool.cache
|
inst @sysconfdir@/zfs/zpool.cache
|
||||||
inst @sysconfdir@/hostid
|
|
||||||
dracut_install @sbindir@/zfs
|
dracut_install @sbindir@/zfs
|
||||||
dracut_install @sbindir@/zpool
|
dracut_install @sbindir@/zpool
|
||||||
dracut_install @bindir@/zpool_layout
|
dracut_install @bindir@/zpool_layout
|
||||||
@ -43,4 +42,14 @@ install() {
|
|||||||
dracut_install hostid
|
dracut_install hostid
|
||||||
inst_hook cmdline 95 "$moddir/parse-zfs.sh"
|
inst_hook cmdline 95 "$moddir/parse-zfs.sh"
|
||||||
inst_hook mount 98 "$moddir/mount-zfs.sh"
|
inst_hook mount 98 "$moddir/mount-zfs.sh"
|
||||||
|
|
||||||
|
# Synchronize initramfs and system hostid
|
||||||
|
TMP=`mktemp`
|
||||||
|
AA=`hostid | cut -b 1,2`
|
||||||
|
BB=`hostid | cut -b 3,4`
|
||||||
|
CC=`hostid | cut -b 5,6`
|
||||||
|
DD=`hostid | cut -b 7,8`
|
||||||
|
printf "\x$DD\x$CC\x$BB\x$AA" >$TMP
|
||||||
|
inst_simple "$TMP" /etc/hostid
|
||||||
|
rm "$TMP"
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,13 @@
|
|||||||
spl_hostid=`getarg spl_hostid=`
|
spl_hostid=`getarg spl_hostid=`
|
||||||
if [ "${spl_hostid}" != "" ] ; then
|
if [ "${spl_hostid}" != "" ] ; then
|
||||||
info "ZFS: Using hostid from command line: ${spl_hostid}"
|
info "ZFS: Using hostid from command line: ${spl_hostid}"
|
||||||
echo "${spl_hostid}" > /etc/hostid
|
AA=`echo ${spl_hostid} | cut -b 1,2`
|
||||||
|
BB=`echo ${spl_hostid} | cut -b 3,4`
|
||||||
|
CC=`echo ${spl_hostid} | cut -b 5,6`
|
||||||
|
DD=`echo ${spl_hostid} | cut -b 7,8`
|
||||||
|
printf "\x$DD\x$CC\x$BB\x$AA" >/etc/hostid
|
||||||
elif [ -f /etc/hostid ] ; then
|
elif [ -f /etc/hostid ] ; then
|
||||||
info "ZFS: Using hostid from /etc/hostid: `cat /etc/hostid`"
|
info "ZFS: Using hostid from /etc/hostid: `hostid`"
|
||||||
else
|
else
|
||||||
warn "ZFS: No hostid found on kernel command line or /etc/hostid. "
|
warn "ZFS: No hostid found on kernel command line or /etc/hostid. "
|
||||||
warn "ZFS: Pools may not import correctly."
|
warn "ZFS: Pools may not import correctly."
|
||||||
|
Loading…
Reference in New Issue
Block a user