Skip to content

Commit 46b784f

Browse files
authored
Merge release v0.1.10
Release v0.1.10
2 parents 9e48c89 + e067e1c commit 46b784f

3 files changed

Lines changed: 38 additions & 26 deletions

File tree

docs/guides/initial-setup/readme.md

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,37 @@ Instructions for the initial setup of a Rabbit are included in this document.
1010
## LVM Configuration on Rabbit
1111

1212
??? "LVM Details"
13-
Running LVM commands (lvcreate/lvremove) on a Rabbit to create logical volumes is problematic if those commands run within a container. Rabbit Storage Orchestration code contained in the `nnf-node-manager` Kubernetes pod executes LVM commands from within the container. The problem is that the LVM create/remove commands wait for a UDEV confirmation cookie that is set when UDEV rules run within the host OS. These cookies are not synchronized with the containers where the LVM commands execute.
13+
Running LVM commands (`lvcreate`/`lvremove`) inside of a container is problematic. Rabbit Storage Orchestration code contained in the `nnf-node-manager` Kubernetes pod executes LVM commands from within the container. The problem is that the `lvcreate`/`lvremove` commands wait for a UDEV confirmation cookie that is set when UDEV rules run within the host OS. These cookies are not synchronized with the containers where the LVM commands execute.
1414

15-
3 options to solve this problem are:
15+
4 options to solve this problem are:
1616

17-
1. Disable UDEV sync at the host operating system level
18-
2. Disable UDEV sync using the `–noudevsync` command option for each LVM command
19-
3. Clear the UDEV cookie using the `dmsetup udevcomplete_all` command after the lvcreate/lvremove command.
17+
1. Disable UDEV for LVM
18+
2. Disable UDEV sync at the host operating system level
19+
3. Disable UDEV sync using the `–noudevsync` command option for each LVM command
20+
4. Clear the UDEV cookie using the `dmsetup udevcomplete_all` command after the lvcreate/lvremove command.
2021

21-
Taking these in reverse order using option 3 above which allows UDEV settings within the host OS to remain unchanged from the default, one would need to start the `dmsetup` command on a separate thread because the LVM create/remove command waits for the UDEV cookie. This opens too many error paths, so it was rejected.
22+
Taking these in reverse order, using option 4 allows UDEV settings within the host OS to remain unchanged from the default. One would need to start the `dmsetup` command on a separate thread because the LVM create/remove command waits for the UDEV cookie. This opens too many error paths, so it was rejected.
2223

23-
Option 2 allows UDEV settings within the host OS to remain unchanged from the default, but the use of UDEV within production Rabbit systems is viewed as unnecessary because the host OS is PXE-booted onto the node vs loaded from an device that is discovered by UDEV.
24+
Option 3 allows UDEV settings within the host OS to remain unchanged from the default, but the use of UDEV within production Rabbit systems is viewed as unnecessary. This is because the host OS is PXE-booted onto the node vs loaded from a device that is discovered by UDEV.
2425

25-
Option 1 above is what we chose to implement because it is the simplest. The following sections discuss this setting.
26+
Option 2 above is our preferred way to disable UDEV syncing if disabling UDEV for LVM is not desired.
27+
28+
If UDEV sync is disabled as described in options 2 and 3, then LVM must also be run with the option to verify UDEV operations. This adds extra checks to verify that the UDEV devices appear as LVM expects. For some LV types (like RAID configurations), the UDEV device takes longer to appear in `/dev`. Without the UDEV confirmation cookie, LVM won't wait long enough to find the device unless the LVM UDEV checks are done.
29+
30+
Option 1 above is the overall preferred method for managing LVM devices on Rabbit nodes. LVM will handle device files without input from UDEV.
2631
</details>
2732

28-
In order for LVM commands to run within the container environment on a Rabbit, the following change is required to the `/etc/lvm/lvm.conf` file on Rabbit.
33+
In order for LVM commands to run within the container environment on a Rabbit, one of the following changes is required to the `/etc/lvm/lvm.conf` file on Rabbit.
34+
35+
Option 1 as described above:
36+
```bash
37+
sed -i 's/udev_rules = 1/udev_rules = 0/g' /etc/lvm/lvm.conf
38+
```
2939

40+
Option 2 as described above:
3041
```bash
3142
sed -i 's/udev_sync = 1/udev_sync = 0/g' /etc/lvm/lvm.conf
43+
sed -i 's/verify_udev_operations = 0/verify_udev_operations = 1/g' /etc/lvm/lvm.conf
3244
```
3345

3446
### ZFS

docs/guides/system-storage/readme.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ System storage is created through the `NnfSystemStorage` resource. By default, s
2424
| `ComputesPattern` | No | Empty | A list of integers [0-15] | If `ComputesTarget` is `pattern`, then the storage is made available on compute nodes with the indexes specified in this list. |
2525
| `Capacity` | Yes | `1073741824` | Integer | Number of bytes to allocate per Rabbit |
2626
| `Type` | Yes | `raw` | `raw`, `xfs`, `gfs2` | Type of file system to create on the Rabbit storage |
27-
| `StorageProfile` | Yes | None | `ObjectReference` to an `NnfStorageProfile`. This storage profile must be marked as `pinned` |
28-
| `MakeClientMounts` | Yes | `false` | Create `ClientMount` resources to mount the storage on the compute nodes. If this is `false`, then the devices are made available to the compute nodes without mounting the file system |
29-
| `ClientMountPath` | No | None | Path to mount the file system on the compute nodes |
27+
| `StorageProfile` | Yes | None | `ObjectReference` to an `NnfStorageProfile` | This storage profile must be marked as `pinned` |
28+
| `MakeClientMounts` | Yes | `false` | Bool | Create `ClientMount` resources to mount the storage on the compute nodes. If this is `false`, then the devices are made available to the compute nodes without mounting the file system |
29+
| `ClientMountPath` | No | None | Path | Path to mount the file system on the compute nodes |
3030

3131
`NnfSystemResources` can be created in any namespace.
3232

@@ -62,7 +62,7 @@ spec:
6262
clientMountPath: "/mnt/nnf/gfs2"
6363
storageProfile:
6464
name: gfs2-systemstorage
65-
namespace: systemstorage
65+
namespace: default
6666
kind: NnfStorageProfile
6767
```
6868
@@ -80,8 +80,8 @@ The following example resources show how to create two system storages to use fo
8080
apiVersion: nnf.cray.hpe.com/v1alpha1
8181
kind: NnfStorageProfile
8282
metadata:
83-
name: lvmlockd_even
84-
namespace: systemstorage
83+
name: lvmlockd-even
84+
namespace: default
8585
data:
8686
xfsStorage:
8787
capacityScalingFactor: "1.0"
@@ -100,14 +100,14 @@ data:
100100
vgChange:
101101
lockStart: --lock-start $VG_NAME
102102
lockStop: --lock-stop $VG_NAME
103-
vgCreate: --shared --addtag lvmlockd_even $VG_NAME $DEVICE_LIST
103+
vgCreate: --shared --addtag lvmlockd-even $VG_NAME $DEVICE_LIST
104104
vgRemove: $VG_NAME
105105
---
106106
apiVersion: nnf.cray.hpe.com/v1alpha1
107107
kind: NnfStorageProfile
108108
metadata:
109-
name: lvmlockd_odd
110-
namespace: systemstorage
109+
name: lvmlockd-odd
110+
namespace: default
111111
data:
112112
xfsStorage:
113113
capacityScalingFactor: "1.0"
@@ -126,7 +126,7 @@ data:
126126
vgChange:
127127
lockStart: --lock-start $VG_NAME
128128
lockStop: --lock-stop $VG_NAME
129-
vgCreate: --shared --addtag lvmlockd_odd $VG_NAME $DEVICE_LIST
129+
vgCreate: --shared --addtag lvmlockd-odd $VG_NAME $DEVICE_LIST
130130
vgRemove: $VG_NAME
131131
```
132132

@@ -136,29 +136,29 @@ Note that the `NnfStorageProfile` resources are marked as `default: false` and `
136136
apiVersion: nnf.cray.hpe.com/v1alpha1
137137
kind: NnfSystemStorage
138138
metadata:
139-
name: lvmlockd_even
139+
name: lvmlockd-even
140140
namespace: systemstorage
141141
spec:
142142
type: "raw"
143143
computesTarget: "even"
144144
makeClientMounts: false
145145
storageProfile:
146-
name: lvmlockd_even
147-
namespace: systemstorage
146+
name: lvmlockd-even
147+
namespace: default
148148
kind: NnfStorageProfile
149149
---
150150
apiVersion: nnf.cray.hpe.com/v1alpha1
151151
kind: NnfSystemStorage
152152
metadata:
153-
name: lvmlockd_odd
153+
name: lvmlockd-odd
154154
namespace: systemstorage
155155
spec:
156156
type: "raw"
157157
computesTarget: "odd"
158158
makeClientMounts: false
159159
storageProfile:
160-
name: lvmlockd_odd
161-
namespace: systemstorage
160+
name: lvmlockd-odd
161+
namespace: default
162162
kind: NnfStorageProfile
163163
```
164164

0 commit comments

Comments
 (0)