Details
-
Bug
-
Resolution: Fixed
-
Minor
-
Lustre 2.12.0, Lustre 2.10.7
-
None
-
3
-
9223372036854775807
Description
Init script lustre installed in /etc/init.d/lustre when called with start argument does check if devices are already started, but it skips this test for ZFS.
When calling service lustre start on a system with some targets already started, the script will start the missing ones but will return a non-zero exit code.
If using systemd, it will see this non-zero exit code as an error and will stop and start all devices.
# mount -t lustre -l ostPOOL0/ost0 on /mnt/lustre/local/lustre-OST0000 type lustre (ro) ostPOOL0/ost1 on /mnt/lustre/local/lustre-OST0001 type lustre (ro) ostPOOL0/ost2 on /mnt/lustre/local/lustre-OST0002 type lustre (ro) # umount /mnt/lustre/local/lustre-OST0001 # service --skip-redirect lustre start; echo $? Mounting ostPOOL0/ost0 on /mnt/lustre/local/lustre-OST0000 mount.lustre: according to /etc/mtab ostPOOL0/ost0 is already mounted on /mnt/lustre/local/lustre-OST0000 Mounting ostPOOL0/ost1 on /mnt/lustre/local/lustre-OST0001 Mounting ostPOOL0/ost2 on /mnt/lustre/local/lustre-OST0002 mount.lustre: according to /etc/mtab ostPOOL0/ost2 is already mounted on /mnt/lustre/local/lustre-OST0002 2
I will propose a patch to enable mount and label checks for all backend types, including zfs.
With the patch:
# umount /mnt/lustre/local/lustre-OST0001 # service --skip-redirect lustre start; echo $? lustre-OST0000 is already mounted lustre-OST0002 is already mounted Mounting ostPOOL0/ost1 on /mnt/lustre/local/lustre-OST0001 0