5-Minute Storage Setup
★ The whole setup, at a glance
OviOS is a storage appliance: you do not install a server, install packages or edit configuration files. You boot it, answer a few questions in the OviOS shell, and your storage is online. Every command below is a guided prompt that asks for what it needs and checks your answers.
1. Log in
Console or SSH, then start the OviOS shell.
2. Network
One tool for bonds, VLANs and IP addresses.
3. Pool
Pick your disks and a layout. Done.
4. Share
SMB, NFS and iSCSI in a few commands each.
You only need the parts you use. Want just a Windows file share? Do steps 1–3 and the SMB part of step 4. Want only block storage for VMware? Do steps 1–3 and the iSCSI part.
1 Log in
Log in on the console or over SSH with the user ovios. The root user can also log in
on the console, but root login over SSH is disabled for safety. Then switch to root and start
the OviOS shell.
# from your workstation
ssh ovios@<node-ip>
# then switch to root and start the shell
su -
ovios-shell
From here on, every command is typed at the ovios-shell ➤ prompt. Press Tab to
complete commands and see what is available.
2 Set up the network
Three tools cover everything. Each one is a guided menu.
| To do this | Run |
|---|---|
| Combine NICs into a bonded interface (more bandwidth, redundancy) | bondadm |
| Create a VLAN | vlanadm |
| Set up interfaces and assign a static or dynamic (DHCP) IP address | netsetup |
A typical setup: create a bond with bondadm, then give it a static IP with
netsetup.
ovios-shell ➤ bondadm # create the bonded interface
ovios-shell ➤ netsetup # assign a static IP to it
More detail, including bond modes: Administrator Guide — Network Configuration.
3 Create a storage pool
A pool is all your disks working together as one big, protected block of storage. See which disks are free, then run the pool wizard.
ovios-shell ➤ listdsk --free # disks not used by any pool
ovios-shell ➤ pool create
The wizard asks for a pool name, then a layout, then the disks. Type the disk names shown by
listdsk (for example sdb sdc sdd, or /dev/disk/by-id/... paths); for a
mirror it asks for the disks pair by pair. Disks that are already in use are refused.
| Layout | Use it when |
|---|---|
| mirror | You want speed and simplicity. Every disk has a copy. Best for VMs and databases. |
| raidz1 / raidz2 / raidz3 | You want the most usable space and can survive 1, 2 or 3 failed disks. Best for file shares and backups. |
| stripe | Testing only. No redundancy. |
Want hot spares, a read cache or a log (SLOG) device? Add them any time with pool modify:
ovios-shell ➤ pool modify # add or remove spares, read cache (L2ARC) and log devices
Not sure which layout to pick? Choose mirror for performance or raidz2 for capacity with strong protection. More: Administrator Guide — Creating Storage Pools.
4a NAS: file sharing with SMB and NFS
First create a volume for each share. Volumes are named pool/name; you are asked for a size.
ovios-shell ➤ vol create data/smbvol
Volume size (e.g., 200g, 4T) (press Enter to cancel): 500g
ovios-shell ➤ vol create data/nfsvol
Volume size (e.g., 200g, 4T) (press Enter to cancel): 500g
The size is both a limit and a reservation: the space is set aside in the pool immediately, so a volume
can always grow to its full size. Change it later with vol resize.
SMB — for Windows, macOS and Linux clients
Turn SMB on (this also starts the service), create a user and share the volume.
ovios-shell ➤ options smb.enable 1 # enables and starts SMB
ovios-shell ➤ service smb status
Service smb is: Running
ovios-shell ➤ smb-user add
User name: smbuser
Home share dataset (e.g. pool/homes): data/smbvol
Target dataset: data/smbvol
Mount point: /ovios/data/smbvol
User home: /ovios/data/smbvol/smbuser
Initializing Samba password for 'smbuser'...
New SMB password:
Retype new SMB password:
Added user smbuser.
ovios-shell ➤ smb-export add data/smbvol smbuser
Exporting: data/smbvol
Path: /ovios/data/smbvol
Admin: smbuser (local)
Success: data/smbvol is now shared via SMB.
That is it — the share is ready for clients. Connect to
\\<node-ip>\data_smbvol from Windows, or smb://<node-ip>/data_smbvol from macOS.
Optional SMB settings, all available with options:
| Option | Default | What it does |
|---|---|---|
| smb.min.protocol | SMB3 | Oldest SMB version clients may use |
| smb.multichannel | on | Use several NICs for one connection |
| smb.signing.required | off | Require signed SMB packets |
| smb.port | none | Use a custom port |
| smb.secrets.restore | off | Stateless nodes: also keep SMB passwords and the Active Directory join across reboots. Unix users are always kept. Details |
| smb.debug.level | none | Troubleshooting log level |
Joining a Windows domain instead of using local users? Run smb-join. See the
Administrator Guide.
NFS — for Linux, Unix and VMware clients
ovios-shell ➤ options nfs.enable 1 # enables and starts NFS
ovios-shell ➤ nfs-export add data/nfsvol
Configuring export for: data/nfsvol
Make writable to all clients? (y/n): y
Use default options? (rw,no_root_squash,no_subtree_check) (y/n): y
Success: data/nfsvol exported via NFS.
Mount it from a client with
mount -t nfs <node-ip>:/ovios/data/nfsvol /mnt. NFS has more options (threads, port, NFS
versions, idmap) in the Options Guide.
The "writable to all clients" answer is the quickest way to get going on a trusted network. For production, answer n and restrict the export to your client addresses.
4b SAN: block storage with iSCSI
iSCSI presents a virtual disk (a LUN) over the network. You make a target, a LUN, and connect the two.
Step 1 — turn on iSCSI
ovios-shell ➤ options iscsi.enable 1 # enables and starts iSCSI
ovios-shell ➤ service iscsi status
Service iscsi is: Running
Step 2 — create a target
The target is the "door" clients connect to. Give it a short name; OviOS generates the full IQN.
ovios-shell ➤ target create
Enter a custom target name: (press Enter to cancel): tg-01
Creating Target iqn.2026-10.org.ovios:129xu9mqfb4e-tg-01 with TID 1...
Target tg-01 created successfully with IQN iqn.2026-10.org.ovios:129xu9mqfb4e-tg-01
Define an initiator for this target? [y/n] (Default: n):
ovios-shell ➤ target list
ID TARGET IQN
-- ----------
1 iqn.2026-10.org.ovios:129xu9mqfb4e-tg-01
Press Enter at the initiator question to let all initiators connect for now. You will lock it down in the last step.
Step 3 — create a LUN
Choose a size and a provisioning type. Thin LUNs use pool space only as data is written, and space freed by clients is returned to the pool (see thin LUNs and UNMAP). Thick LUNs reserve their full size up front.
ovios-shell ➤ lun create data/lun01
Detected LUN path from arguments: data/lun01
Enter size (e.g., 50g) (press Enter to cancel): 50g
✔ thin
LUN lun01 created with OviOS flags initialized.
Step 4 — map the LUN to the target
ovios-shell ➤ lun map data/lun01
? Select Target to map LUN to:
➡️ iqn.2026-10.org.ovios:129xu9mqfb4e-tg-01 (TID: 1)
Mapping LUN lun01 to target iqn.2026-10.org.ovios:129xu9mqfb4e-tg-01 (LUN ID: 1)...
The block device is now available over the network. Point your iSCSI initiator (VMware, Windows, Linux) at the node's IP address and log in to the target.
Step 5 — lock it down
| Command | What it does |
|---|---|
target bind / target unbind | Allow only specific initiators (by IQN or IP) on a target |
target chap | Require a username and password (CHAP) from the initiators logging in |
lun umap | Unmap a LUN from its target, which stops presenting it to clients |
Details: Administrator Guide — iSCSI Targets.
✓ You are done
That is the entire setup. A freshly booted or newly deployed OviOS system is now serving production storage:
- Network configured, with an optional bond or VLAN
- A redundant ZFS pool, with spares or cache if you added them
- SMB and/or NFS shares for files
- iSCSI LUNs for block storage
Run a health check any time:
ovios-shell ➤ ovios hc
★ Keep it that way
From OviOS 6.2, every configuration change you made above is saved automatically to a hidden dataset on each of your data pools. You do not need to run a backup command. To have a node restore that configuration when it boots:
- Running from USB, ISO or PXE (no install): boot with
ovios.autorestore=1on the kernel line. The node restores its latest configuration at every boot, so you can replace the USB stick or boot a newer image without redoing any of this. - Installed to disk: the configuration stays on the boot disk. If that disk ever fails,
boot OviOS once with
ovios.autorestore=1and the configuration comes back from the pools.
Check what is saved at any time:
ovios-shell ➤ sync-config persist-status
More, including SMB passwords (smb.secrets.restore) and the backup-archive alternative
(auto.restore.enable): Live OS & Stateless Operation.
Next steps: turn on the web dashboard, schedule replication to a second node, set up S3 object storage, and read the complete Administrator Guide.