Skip to main content

Connecting a NAS to Linux via iSCSI

If your vCloud server and NAS storage are on separate machines, the most reliable way to connect them is iSCSI.

iSCSI allows the NAS to present a disk over the network, and Linux sees it as a local block device (like /dev/sdb). This is ideal for video storage because it usually performs better than SMB/NFS for large sequential writes.


Architecture

+-------------------+        iSCSI        +-------------------+
|   vCloud Server   | <-----------------> |        NAS        |
| Ubuntu Server     |                     | Synology/TrueNAS  |
| 192.168.1.10      |                     | 192.168.1.20      |
+-------------------+                     +-------------------+

Step 1 — Prepare the NAS

Example:

You Synologyneed DSMto

1.configure Installthe iSCSI Manager

    Open Package Center

    Install SAN Manager (or iSCSI Manager depending on DSM version)

    2. Create a Storage PoolNAS and Volume

    If not already created:

      Storage Manager → Create Pool

      Create Volume

      3. Createcreate an iSCSI LUN

      LUN.
        To do

        SANthis, Manager → LUN

        Click Create

        Choose:

          Thick Provisioning (recommended)

          Size: for example 10 TB

          Finish creation

          4. Create an iSCSI Target

            SAN Manager → iSCSI Target

            Create target

            Name: vcloud-storage

            Enable CHAP authentication (recommended)

            Example:

              Username: vcloud

              Password: StrongPassword123

              5. Map the LUNrefer to the Target

              user

              Duringmanual creationfor oryour afterward:NAS server.

                Select the LUN

                Map it to vcloud-storage


                Step 2 — Install iSCSI Client on Ubuntu

                On the vCloud server:

                sudo apt update
                sudo apt install open-iscsi -y
                

                Enable the service:

                sudo systemctl enable --now iscsid
                

                Step 3 — Discover the NAS Target

                Replace 192.168.1.20 with your NAS IP.

                sudo iscsiadm -m discovery -t sendtargets -p 192.168.1.20
                

                You should see something like:

                192.168.1.20:3260,1 iqn.2026-07.local.synology:vcloud-storage
                

                Step 4 — Configure Authentication (if CHAP is enabled)

                Edit the node configuration:

                sudo nano /etc/iscsi/iscsid.conf
                

                Find and set:

                node.session.auth.authmethod = CHAP
                node.session.auth.username = vcloud
                node.session.auth.password = StrongPassword123
                

                Save the file.

                Restart the service:

                sudo systemctl restart iscsid
                

                Step 5 — Log In to the iSCSI Target

                sudo iscsiadm -m node --login
                

                Expected output:

                Login to [iface: default, target: iqn.2026-07.local.synology:vcloud-storage, portal: 192.168.1.20,3260] successful.
                

                Step 6 — Verify the New Disk

                List disks:

                lsblk
                

                Example:

                sda    1.8T
                ├─sda1
                └─sda2
                sdb   10.0T
                

                The iSCSI disk is usually sdb.


                Step 7 — Create a Filesystem

                ⚠️ This will erase the iSCSI disk.

                sudo mkfs.ext4 /dev/sdb
                

                For very large storage (8–20 TB+), XFS is also a good choice:

                sudo mkfs.xfs /dev/sdb
                

                Step 8 — Create a Mount Point

                sudo mkdir -p /mnt/vcloud-storage
                

                Step 9 — Mount the Disk

                sudo mount /dev/sdb /mnt/vcloud-storage
                

                Check:

                df -h
                

                Example:

                /dev/sdb        9.8T   24K  9.3T   1% /mnt/vcloud-storage
                

                Step 10 — Make the Mount Persistent

                Get the UUID:

                sudo blkid /dev/sdb
                

                Example:

                /dev/sdb: UUID="a1b2c3d4-e5f6-7890-abcd-1234567890ef"
                

                Edit /etc/fstab:

                sudo nano /etc/fstab
                

                Add:

                UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ef /mnt/vcloud-storage ext4 _netdev,nofail 0 2
                

                If using XFS:

                UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ef /mnt/vcloud-storage xfs _netdev,nofail 0 2
                

                Test:

                sudo umount /mnt/vcloud-storage
                sudo mount -a
                

                If there are no errors, the configuration is correct.


                Step 11 — Ensure iSCSI Reconnects After Reboot

                Enable automatic login:

                sudo iscsiadm -m node --op update -n node.startup -v automatic
                

                Check:

                sudo iscsiadm -m node
                

                Step 12 — Give vCloud Access

                Assume vCloud runs as user vcloudai.

                sudo chown -R vcloudai:vcloudai /mnt/vcloud-storage
                

                Or, if running in Docker:

                sudo chmod -R 775 /mnt/vcloud-storage
                

                Step 13 — Use the Storage in Docker Compose

                Example:

                services:
                  vms-ai:
                    image: vcloudaiorg/vcloudai-vms-ai:latest
                    volumes:
                      - /mnt/vcloud-storage:/storage
                

                Then restart:

                docker compose up -d
                

                Recommended Network Settings

                For video surveillance storage:

                On both NAS and server

                Enable:

                  Jumbo Frames (MTU 9000) if your switch supports it

                  1 Gbps minimum

                  10 Gbps preferred for many cameras

                  Example:


                  Useful Commands

                  Check iSCSI sessions

                  sudo iscsiadm -m session
                  

                  Log out

                  sudo iscsiadm -m node --logout
                  

                  Rediscover targets

                  sudo iscsiadm -m discovery -t sendtargets -p 192.168.1.20
                  

                  Performance Recommendation for vCloud

                  For a surveillance system:

                  Component Recommendation Filesystem XFS Network 10GbE LUN type Thick Provision Mount options _netdev,nofail NAS RAID RAID6 or RAID10 Separate network Dedicated storage VLAN if possible

                  This setup gives you a single large storage volume on the Linux server while keeping the actual disks inside the NAS, and it works very well with vCloud and Docker-based deployments.