Skip to content

Commit 14b15af

Browse files
committed
Merge branch 'main' into release-v0.1.28
Signed-off-by: Anthony Floeder <anthony.floeder@hpe.com>
2 parents 438db03 + 0ed2f9c commit 14b15af

4 files changed

Lines changed: 148 additions & 57 deletions

File tree

docs/guides/ha-cluster/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ NNF software supports provisioning of Red Hat GFS2 (Global File System 2) storag
2020
- [Installation](#installation)
2121
- [STONITH Configuration](#stonith-configuration)
2222
- [Configuration Options](#configuration-options)
23+
- [NNF Software Configuration](#nnf-software-configuration)
2324
- [Verifying Configuration](#verifying-configuration)
2425
- [Request/Response Protocol](#requestresponse-protocol)
2526
- [Request File Format](#request-file-format)

docs/guides/storage-profiles/readme.md

Lines changed: 78 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ kubectl get nnfstorageprofiles -n nnf-system
4848

4949
Example output:
5050

51-
```
51+
```text
5252
NAME DEFAULT AGE
5353
default true 14d
5454
high-perf false 7d
@@ -199,6 +199,9 @@ data:
199199
userCommands:
200200
postSetup:
201201
- chown $USERID:$GROUPID $MOUNT_PATH
202+
# Optional: run diagnostics after block device teardown (Rabbit only)
203+
# postTeardown:
204+
# - /usr/bin/dlm-diagnostics.sh $VG_NAME
202205

203206
capacityScalingFactor: "1.0"
204207
allocationPadding: 300MiB
@@ -338,7 +341,7 @@ Target layout options control how Lustre targets (MGT, MDT, OST) are distributed
338341
Each target type (mgtOptions, mdtOptions, mgtMdtOptions, ostOptions) supports:
339342
340343
| Option | Description |
341-
|--------|-------------|
344+
| -------- | ------------- |
342345
| `count` | Static number of targets to create |
343346
| `scale` | Dynamic value (1-10) that the WLM uses to determine target count |
344347
| `colocateComputes` | If true, targets are placed on Rabbits connected to job's compute nodes |
@@ -349,30 +352,35 @@ Each target type (mgtOptions, mdtOptions, mgtMdtOptions, ostOptions) supports:
349352
### Understanding colocateComputes
350353

351354
When `colocateComputes: true`:
355+
352356
- Storage is restricted to Rabbit nodes with physical connections to the job's compute nodes
353357
- This typically means Rabbits in the same chassis as the compute nodes
354358
- Best for minimizing network hops and maximizing bandwidth
355359

356360
When `colocateComputes: false`:
361+
357362
- Storage can be placed on any available Rabbit node
358363
- Useful for separating metadata targets from data targets
359364
- Required for `create_persistent` directives since they may not have compute nodes
360365

361366
### Scale vs Count
362367

363368
**Scale** is useful when you want storage to automatically adjust based on job size:
369+
364370
- Value of 1: Minimum targets needed to satisfy capacity
365371
- Value of 10: Maximum targets, potentially one per Rabbit connected to the job
366372
- The WLM interprets scale values based on allocation size, compute count, and Rabbit count
367373

368374
**Count** is useful when you need precise control:
375+
369376
- Specific number of targets regardless of job size
370377
- Consistent performance characteristics across different jobs
371378
- Useful for single-shared-file workloads with low metadata requirements
372379

373380
### Example Layouts
374381

375382
**High-performance scaled to job size:**
383+
376384
```yaml
377385
ostOptions:
378386
scale: 10
@@ -383,6 +391,7 @@ mdtOptions:
383391
```
384392

385393
**Static Configuration:**
394+
386395
```yaml
387396
ostOptions:
388397
count: 4
@@ -461,7 +470,7 @@ There are two categories of user commands with different execution contexts:
461470
The user commands in `blockDeviceCommands` and `fileSystemCommands` are run when storage is being activated/deactivated and mounted/unmounted for use:
462471

463472
| Location | Workflow Phase | Description |
464-
|----------|----------------|-------------|
473+
| ---------- | ---------------- | ------------- |
465474
| Rabbit | DataIn | Storage is activated and mounted for data staging into the allocation |
466475
| Rabbit | DataOut | Storage is activated and mounted for data staging out of the allocation |
467476
| Rabbit | PreRun | Storage is activated and mounted for access in a user container |
@@ -470,6 +479,7 @@ The user commands in `blockDeviceCommands` and `fileSystemCommands` are run when
470479
| Compute | PostRun | Storage is unmounted and deactivated after the user's application completes |
471480

472481
These commands are useful for operations that need to happen each time storage is accessed, such as:
482+
473483
- Setting up environment-specific configurations
474484
- Running health checks before/after use
475485
- Synchronizing data or caches
@@ -537,13 +547,15 @@ xfsStorage:
537547
The `userCommands` section at the storage level (e.g., `xfsStorage.userCommands`) contains commands that run during the **setup and teardown phases** of the workflow. These run on the Rabbit nodes when storage is first provisioned and when it is finally destroyed.
538548

539549
| Command | Phase | Description |
540-
|---------|-------|-------------|
550+
| --------- | ------- | ------------- |
541551
| `postSetup` | Setup | Runs after storage is fully provisioned and the file system is mounted on the Rabbit |
542552
| `preTeardown` | Teardown | Runs before storage is destroyed, while the file system is still mounted |
553+
| `postTeardown` | Teardown | Runs after storage is destroyed — file system and block devices are already removed. Runs on the Rabbit only |
543554
| `postActivate` | Setup | Runs after the file system is activated during initial setup |
544555
| `preDeactivate` | Teardown | Runs before the file system is deactivated during final teardown |
545556

546557
These commands are useful for one-time operations such as:
558+
547559
- Setting ownership and permissions on newly created storage
548560
- Initializing directory structures
549561
- Cleaning up or archiving data before destruction
@@ -560,6 +572,11 @@ xfsStorage:
560572
# Run once before storage is torn down (file system still mounted)
561573
preTeardown:
562574
- echo "Final cleanup of $MOUNT_PATH"
575+
576+
# Run once after storage is destroyed (file system and block devices already removed)
577+
# Runs on the Rabbit only. $MOUNT_PATH is NOT available — use block device variables.
578+
postTeardown:
579+
- echo "Post-teardown check for $VG_NAME"
563580
564581
# Run once after file system is activated during setup
565582
postActivate:
@@ -616,6 +633,8 @@ lustreStorage:
616633
- lfs setstripe -E 64K -L mdt -E -1 -c -1 $MOUNT_PATH
617634
rabbitPreTeardown:
618635
- lfs getstripe $MOUNT_PATH
636+
rabbitPostTeardown:
637+
- echo "Lustre teardown complete"
619638
620639
# Commands run on MGT after all targets are up
621640
preMountMGTCommands:
@@ -632,7 +651,7 @@ Storage profile commands can use variables that are expanded at runtime. Variabl
632651
Available in all commands:
633652

634653
| Variable | Description |
635-
|----------|-------------|
654+
| ---------- | ------------- |
636655
| `$JOBID` | Job ID from the Workflow |
637656
| `$USERID` | User ID of the job submitter |
638657
| `$GROUPID` | Group ID of the job submitter |
@@ -644,13 +663,13 @@ Available in all commands:
644663
#### Physical Volume Commands
645664

646665
| Variable | Description |
647-
|----------|-------------|
666+
| ---------- | ------------- |
648667
| `$DEVICE` | Path to allocated device (e.g., `/dev/nvme0n1`) |
649668

650669
#### Volume Group Commands
651670

652671
| Variable | Description |
653-
|----------|-------------|
672+
| ---------- | ------------- |
654673
| `$VG_NAME` | Volume group name (controlled by Rabbit software) |
655674
| `$DEVICE_LIST` | Space-separated list of devices |
656675
| `$DEVICE_NUM` | Count of devices |
@@ -661,7 +680,7 @@ Available in all commands:
661680
#### Logical Volume Commands
662681

663682
| Variable | Description |
664-
|----------|-------------|
683+
| ---------- | ------------- |
665684
| `$VG_NAME` | Volume group name |
666685
| `$LV_NAME` | Logical volume name |
667686
| `$DEVICE_NUM` | Count of devices |
@@ -676,13 +695,13 @@ Available in all commands:
676695
#### XFS/Raw mkfs
677696

678697
| Variable | Description |
679-
|----------|-------------|
698+
| ---------- | ------------- |
680699
| `$DEVICE` | Path to the logical volume device |
681700

682701
#### GFS2 mkfs
683702

684703
| Variable | Description |
685-
|----------|-------------|
704+
| ---------- | ------------- |
686705
| `$DEVICE` | Path to the logical volume device |
687706
| `$CLUSTER_NAME` | Cluster name (controlled by Rabbit software) |
688707
| `$LOCK_SPACE` | Lock space key (controlled by Rabbit software) |
@@ -691,7 +710,7 @@ Available in all commands:
691710
#### Mount/Unmount
692711

693712
| Variable | Description |
694-
|----------|-------------|
713+
| ---------- | ------------- |
695714
| `$DEVICE` | Device path to mount |
696715
| `$MOUNT_PATH` | Path to mount on |
697716

@@ -700,7 +719,7 @@ Available in all commands:
700719
#### zpool create
701720

702721
| Variable | Description |
703-
|----------|-------------|
722+
| ---------- | ------------- |
704723
| `$POOL_NAME` | Pool name (controlled by Rabbit software) |
705724
| `$DEVICE_LIST` | Space-separated list of devices |
706725
| `$DEVICE_NUM` | Count of devices |
@@ -709,7 +728,7 @@ Available in all commands:
709728
#### zpool replace
710729

711730
| Variable | Description |
712-
|----------|-------------|
731+
| ---------- | ------------- |
713732
| `$POOL_NAME` | Pool name |
714733
| `$DEVICE_LIST` | List of devices |
715734
| `$DEVICE_NUM`, `$DEVICE_NUM-1`, `$DEVICE_NUM-2` | Device counts |
@@ -719,7 +738,7 @@ Available in all commands:
719738
#### Lustre mkfs
720739

721740
| Variable | Description |
722-
|----------|-------------|
741+
| ---------- | ------------- |
723742
| `$FS_NAME` | Lustre fsname picked by NNF software |
724743
| `$MGS_NID` | NID of the MGS |
725744
| `$ZVOL_NAME` | ZFS volume name (`pool/dataset`) |
@@ -730,7 +749,7 @@ Available in all commands:
730749
#### Lustre Client
731750

732751
| Variable | Description |
733-
|----------|-------------|
752+
| ---------- | ------------- |
734753
| `$MGS_NID` | NID of the MGS |
735754
| `$FS_NAME` | File system name |
736755
| `$MOUNT_PATH` | Client mount path |
@@ -745,7 +764,7 @@ Available in all commands:
745764
For system storage allocations:
746765

747766
| Variable | Description |
748-
|----------|-------------|
767+
| ---------- | ------------- |
749768
| `$COMPUTE_HOSTNAME` | Hostname of the compute node using the allocation |
750769

751770
### User Command Variables
@@ -757,7 +776,7 @@ Different variables are available depending on which user command hook is being
757776
The following variables are available to `blockDeviceCommands.rabbitCommands.userCommands` and `blockDeviceCommands.computeCommands.userCommands` (preActivate, postActivate, preDeactivate, postDeactivate):
758777

759778
| Variable | Description |
760-
|----------|-------------|
779+
| ---------- | ------------- |
761780
| `$JOBID` | Job ID from the Workflow |
762781
| `$USERID` | User ID of the job submitter |
763782
| `$GROUPID` | Group ID of the job submitter |
@@ -769,7 +788,7 @@ The following variables are available to `blockDeviceCommands.rabbitCommands.use
769788
The following variables are available to `fileSystemCommands.rabbitCommands.userCommands` and `fileSystemCommands.computeCommands.userCommands` (preMount, postMount, preUnmount, postUnmount):
770789

771790
| Variable | Description |
772-
|----------|-------------|
791+
| ---------- | ------------- |
773792
| `$JOBID` | Job ID from the Workflow |
774793
| `$USERID` | User ID of the job submitter |
775794
| `$GROUPID` | Group ID of the job submitter |
@@ -781,18 +800,34 @@ The following variables are available to `fileSystemCommands.rabbitCommands.user
781800
The following variables are available to `userCommands` at the storage level (postSetup, preTeardown, postActivate, preDeactivate):
782801

783802
| Variable | Description |
784-
|----------|-------------|
803+
| ---------- | ------------- |
785804
| `$JOBID` | Job ID from the Workflow |
786805
| `$USERID` | User ID of the job submitter |
787806
| `$GROUPID` | Group ID of the job submitter |
788807
| `$MOUNT_PATH` | Path where the file system is mounted |
789808

809+
For `postTeardown`, the file system and block devices have already been destroyed, so `$MOUNT_PATH` is **not** available. Instead, the following block device and workflow variables are available:
810+
811+
| Variable | Description |
812+
| ---------- | ------------- |
813+
| `$VG_NAME` | Volume group name |
814+
| `$LV_NAME` | Logical volume name |
815+
| `$LV_INDEX` | Allocation index |
816+
| `$LV_SIZE` | Logical volume size |
817+
| `$DEVICE_NUM` | Number of physical devices |
818+
| `$DEVICE_LIST` | Space-separated list of device paths |
819+
| `$JOBID` | Job ID from the Workflow |
820+
| `$USERID` | User ID of the job submitter |
821+
| `$GROUPID` | Group ID of the job submitter |
822+
| `$ALLOCATION_COUNT` | Number of allocations on this Rabbit |
823+
| `$HOST_COUNT` | Total host count (computes + Rabbit) |
824+
790825
#### Lustre Target User Commands
791826

792827
The following variables are available to Lustre target commands (mgtCommandlines, mdtCommandlines, mgtMdtCommandlines, ostCommandlines) for postActivate and preDeactivate:
793828

794829
| Variable | Description |
795-
|----------|-------------|
830+
| ---------- | ------------- |
796831
| `$JOBID` | Job ID from the Workflow |
797832
| `$MOUNT_PATH` | Path where the target is mounted |
798833
| `$FS_NAME` | Lustre file system name |
@@ -805,7 +840,7 @@ The following variables are available to `clientCommandLines` user commands:
805840
**For rabbitPreMount, rabbitPostMount, rabbitPreUnmount, rabbitPostUnmount, computePreMount, computePostMount, computePreUnmount, computePostUnmount:**
806841

807842
| Variable | Description |
808-
|----------|-------------|
843+
| ---------- | ------------- |
809844
| `$JOBID` | Job ID from the Workflow |
810845
| `$USERID` | User ID of the job submitter |
811846
| `$GROUPID` | Group ID of the job submitter |
@@ -816,7 +851,7 @@ The following variables are available to `clientCommandLines` user commands:
816851
**For rabbitPostSetup and rabbitPreTeardown:**
817852

818853
| Variable | Description |
819-
|----------|-------------|
854+
| ---------- | ------------- |
820855
| `$JOBID` | Job ID from the Workflow |
821856
| `$USERID` | User ID of the job submitter |
822857
| `$GROUPID` | Group ID of the job submitter |
@@ -829,12 +864,27 @@ The following variables are available to `clientCommandLines` user commands:
829864
| `$NUM_OSTS` | Number of OSTs |
830865
| `$NUM_NNFNODES` | Number of NNF nodes |
831866

867+
**For rabbitPostTeardown:**
868+
869+
Runs on the Rabbit after the Lustre file system and zpool are destroyed. `$MOUNT_PATH` and Lustre-specific variables are **not** available. The following variables are available:
870+
871+
| Variable | Description |
872+
| ---------- | ------------- |
873+
| `$POOL_NAME` | Zpool name |
874+
| `$DEVICE_NUM` | Number of physical devices |
875+
| `$DEVICE_LIST` | Space-separated list of device paths |
876+
| `$JOBID` | Job ID from the Workflow |
877+
| `$USERID` | User ID of the job submitter |
878+
| `$GROUPID` | Group ID of the job submitter |
879+
| `$ALLOCATION_COUNT` | Number of allocations on this Rabbit |
880+
| `$HOST_COUNT` | Total host count (computes + Rabbit) |
881+
832882
#### Lustre preMountMGTCommands
833883

834884
The following variables are available to `preMountMGTCommands`:
835885

836886
| Variable | Description |
837-
|----------|-------------|
887+
| ---------- | ------------- |
838888
| `$JOBID` | Job ID from the Workflow |
839889
| `$FS_NAME` | Lustre file system name |
840890

@@ -844,8 +894,7 @@ The `variableOverride` fields in a storage profile allow overriding the default
844894

845895
When a variable is overridden, the NNF software uses the new value internally when manipulating block devices and file systems; not just for expanding `$VARIABLE` references in command lines. For example, overriding `$LV_NAME` changes the actual logical volume name that the NNF software uses to perform checks and run internal commands.
846896

847-
Variables are expanded recursively so that variable values can reference other variables. This allows building values based on job, workflow, and directive identifiers in a similar way to what the NNF software does internally.
848-
897+
Variables are expanded recursively so that variable values can reference other variables. This allows building values based on job, workflow, and directive identifiers in a similar way to what the NNF software does internally.
849898

850899
#### Overridable Variables by File System Type
851900

@@ -861,7 +910,7 @@ xfsStorage:
861910
```
862911

863912
| Variable | Default | Description |
864-
|----------|---------|-------------|
913+
| ---------- | --------- | ------------- |
865914
| `$JOBID` | From workflow | Job ID from the workflow |
866915
| `$USERID` | From workflow | User ID of the job submitter |
867916
| `$GROUPID` | From workflow | Group ID of the job submitter |
@@ -892,7 +941,7 @@ lustreStorage:
892941
**Target-level variables (mgtOptions, mdtOptions, mgtMdtOptions, ostOptions):**
893942

894943
| Variable | Default | Description |
895-
|----------|---------|-------------|
944+
| ---------- | --------- | ------------- |
896945
| `$JOBID` | From workflow | Job ID from the workflow |
897946
| `$USERID` | From workflow | User ID of the job submitter |
898947
| `$GROUPID` | From workflow | Group ID of the job submitter |
@@ -909,7 +958,7 @@ lustreStorage:
909958
**Client-level variables (clientOptions):**
910959

911960
| Variable | Default | Description |
912-
|----------|---------|-------------|
961+
| ---------- | --------- | ------------- |
913962
| `$JOBID` | From workflow | Job ID from the workflow |
914963
| `$USERID` | From workflow | User ID of the job submitter |
915964
| `$GROUPID` | From workflow | Group ID of the job submitter |
@@ -1059,4 +1108,4 @@ When a workflow references a storage profile, the NNF software creates a "pinned
10591108
- The exact configuration is preserved for the workflow's lifetime
10601109
- Profiles marked as `pinned: true` cannot also be `default: true`
10611110

1062-
**Note:** Do not manually set `pinned: true` on profiles you create.
1111+
**Note:** Do not manually set `pinned: true` on profiles you create.

docs/repo-guides/release-nnf-sw/readme-manual-steps.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ other components.
2424
- [NearNodeFlash/lustre-fs-operator](https://github.com/NearNodeFlash/lustre-fs-operator)
2525
- [NearNodeFlash/nnf-mfu](https://github.com/NearNodeFlash/nnf-mfu)
2626
- [NearNodeFlash/nnf-ec](https://github.com/NearNodeFlash/nnf-ec)
27+
- [NearNodeFlash/nnf-storedversions-maint](https://github.com/NearNodeFlash/nnf-storedversions-maint)
2728
- [NearNodeFlash/nnf-sos](https://github.com/NearNodeFlash/nnf-sos)
2829
- [NearNodeFlash/nnf-dm](https://github.com/NearNodeFlash/nnf-dm)
2930
- [NearNodeFlash/nnf-integration-test](https://github.com/NearNodeFlash/nnf-integration-test)

0 commit comments

Comments
 (0)