-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
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 <[email protected]> Closes #398 Closes #399 Signed-off-by: Brian Behlendorf <[email protected]>
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,7 +33,6 @@ install() { | |
inst_rules @udevruledir@/60-zvol.rules | ||
inst @sysconfdir@/zfs/zdev.conf | ||
inst @sysconfdir@/zfs/zpool.cache | ||
inst @sysconfdir@/hostid | ||
dracut_install @sbindir@/zfs | ||
dracut_install @sbindir@/zpool | ||
dracut_install @bindir@/zpool_layout | ||
|
@@ -43,4 +42,14 @@ install() { | |
dracut_install hostid | ||
inst_hook cmdline 95 "$moddir/parse-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 | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
behlendorf
Author
Contributor
|
||
inst_simple "$TMP" /etc/hostid | ||
rm "$TMP" | ||
} |
2 comments
on commit e8753fb
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, so you're using the hostid file from the output of the hostid command.
Clever! This is clearly better than my work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why aren't you writing to "$initdir/etc/hostid" directly but use mktemp?
This line breaks dracut on DEB systems with a dash system shell because its built-in printf does not implement the hex format.
Suppose AA=12; BB=34; CC=56; DD=78. This results in a literal "\x04\x03\x02\x01" in the /etc/hostid file.
The fix is to call the external /usr/bin/printf or to change the whack-bang to bash.