Software Setup
This page covers the software that ships on a Mango BoostX™ NRT appliance, how to verify it came up, how to manage the configuration service, how to set the network address, and how to confirm the SSDs are exported.
Before proceeding, ensure the drive, cabling, and management prerequisites in Hardware Setup are complete.
Software Components
The appliance software is pre-installed on the card, so there is nothing to install before using it. Configuration you change is kept across reboots.
| Component | Role |
|---|---|
mango-jbof | systemd service that configures the appliance at boot |
mango-ctl | CLI for managing the appliance. The nvmf subcommand controls the NVMe-oF target |
mango-smi | Device and sensor summary |
| NVMe-oF target daemon | The target itself, started manually by mango-ctl nvmf start or automatically by mango-jbof |
The host side needs only a standard NVMe-oF initiator; see Initiator Setup for the packages it requires.
Verifying the Installation
Confirm the card is present and get its device node name. The node name is the argument the diagnostic commands take.
(target) ~# mango-smi list
400000000.mb-nrt
Confirm the NVMe SSDs are visible. The Kernel module field shows which driver currently owns each drive: nvme while the kernel holds it, uio_pci_generic once the target has attached it.
(target) ~# mango-ctl dev show nvme
Confirm the configuration service is running.
(target) ~# systemctl status mango-jbof
Service Management
mango-jbof is enabled by default and restarts itself on failure.
(target) ~# systemctl status mango-jbof # current state
(target) ~# systemctl restart mango-jbof # apply an edited policy file
(target) ~# journalctl -u mango-jbof -f # follow the service log
Its own log is written to /var/log/mango at INFO level, rotated at 10 MB with 5 files kept.
Stopping or restarting the service can take up to 90 seconds, because tearing down an active NVMe-oF target is allowed that much time to finish. The command has not hung — wait for it to return. Interrupting it with Ctrl-C leaves the target half torn down.
Network Configuration
The appliance address is set in the network block of the policy file, /etc/mango-cli/mango_jbof_config.yaml, and applied by the configuration service. It is not configured with ifconfig or ip, because the service re-applies the address from the policy file every time it starts.
network:
mode: "static" # "dhcp" | "static"
interfaces:
- name: "eth0"
address: "200.1.1.100/24" # CIDR or "dhcp"
Apply an edited address by restarting the service:
(target) ~# systemctl restart mango-jbof
The address configured here becomes the NVMe-oF listener address, which is what initiators connect to.
Do not use dhcp unless a DHCP server is actually present on that network. The service re-applies the address every time it starts, so on a network without a DHCP server the appliance loses its address on each restart and on every boot — which looks like a unit that fails intermittently. On a fixed-address network, use mode: "static" with an explicit CIDR per interface.
The remaining blocks of the policy file control which SSDs are exported and how they are grouped. See Automatic Configuration.
Verifying the Export
nvmf show reports whether the appliance is serving. Every subsystem must have a listener, and warnings: must read none.
(target) ~# mango-ctl nvmf show
NVMe-oF target (group 0): running (RDMA) subsystems 3 capacity 10.9 TB
warnings: none
Exported
NQN LISTENER NAMESPACES
nqn.2022-02.io.mangoboost:subsys0 200.1.1.100:4420 Nvme0n1 (nsid 1, 3.2 TB, 0000:04:00.0)
nqn.2022-02.io.mangoboost:subsys1 200.1.1.100:4420 Nvme1n1 (nsid 1, 3.8 TB, 0000:05:00.0)
nqn.2022-02.io.mangoboost:subsys2 200.1.1.100:4420 Nvme2n1 (nsid 1, 3.8 TB, 0000:06:00.0)
Attached, not exported
(none)
Not attached
(none)
After a reboot there is a normal interval during which the appliance answers but has not finished exporting, and subsystems 0 is reported while the SSDs are still being discovered and configured. Confirm the export is complete before connecting from a host rather than waiting a fixed amount of time.
(target) ~# mango-ctl nvmf show --status
For the meaning of each section of this output and the rest of the diagnostic commands, see Monitoring and Diagnostics.
Functional Test
Connect from a host to confirm the data path end to end. The procedure, the queue sizing rules, and a fio example are in Initiator Setup.