5-Minute Storage Setup

From a freshly booted OviOS system to a production-ready storage node. No storage skills required.
OviOS Linux 6.2 About 5 minutes No installation needed
← Home ← Back to Docs

★ 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.protocolSMB3Oldest SMB version clients may use
smb.multichannelonUse several NICs for one connection
smb.signing.requiredoffRequire signed SMB packets
smb.portnoneUse a custom port
smb.secrets.restoreoffStateless nodes: also keep SMB passwords and the Active Directory join across reboots. Unix users are always kept. Details
smb.debug.levelnoneTroubleshooting 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 unbindAllow only specific initiators (by IQN or IP) on a target
target chapRequire a username and password (CHAP) from the initiators logging in
lun umapUnmap 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=1 on 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=1 and 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.