Files
bikinibottom/Turing Pi/nfs-server.md
2025-07-26 11:37:15 +02:00

9.8 KiB

NFS Server

Structure

NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTS
sdb8:1603.6T0disk
└─ hdds-datas253:007.3T0lvm/export/media
/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107
sdc8:3203.6T0disk
└─ hdds-datas253:007.3T0lvm/export/media
/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107
```bash apt install -y lvm2 ```

Disks

fdisk -l
Disk /dev/sdb: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000VN006-3CW1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdc: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000VN006-3CW1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/mapper/hdds-datas: 7.28 TiB, 8001566015488 bytes, 15628058624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

LVM

Physical Volumes (partitions)

pvcreate /dev/sdb
pvcreate /dev/sdc

Volume Group

vgcreate hdds /dev/sdb /dev/sdc

Logical Volume(s)

lvcreate --extents 100%FREE -n datas hdds
pvdisplay 
--- Physical volume ---
PV Name               /dev/sdb
VG Name               hdds
PV Size               <3.64 TiB / not usable <3.84 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              953861
Free PE               0
Allocated PE          953861
PV UUID               zHiPKx-t2BO-15r3-xPfQ-DPlB-7K40-YxIdM1

--- Physical volume ---
PV Name               /dev/sdc
VG Name               hdds
PV Size               <3.64 TiB / not usable <3.84 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              953861
Free PE               0
Allocated PE          953861
PV UUID               bGAdMs-JsRy-6r3M-0zWt-CYQJ-GPsB-KCnCo6
vgdisplay
--- Volume group ---
VG Name               hdds
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  6
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                2
Act PV                2
VG Size               <7.28 TiB
PE Size               4.00 MiB
Total PE              1907722
Alloc PE / Size       1907722 / <7.28 TiB
Free  PE / Size       0 / 0
VG UUID               DPZPo2-OwJt-R1wG-wJRB-HD38-JeVl-5ZFfnI
lvdisplay
--- Logical volume ---
LV Path                /dev/hdds/datas
LV Name                data
VG Name                hdds
LV UUID                qgdjwr-9Aau-p4mj-rksl-IeBB-SjD1-z6hede
LV Write Access        read/write
LV Creation host, time polito, 2023-08-01 10:10:14 +0200
LV Status              available
# open                 0
LV Size                <7.28 TiB
Current LE             1907722
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:0

Format LV

sudo mkfs.ext4 /dev/hdds/datas

NFS

# mkdir -p /mnt/data/cloud
# mkdir -p /mnt/data/gitea
# mkdir -p /mnt/data/jellystack
# mkdir -p /mnt/data/media

sudo vim /etc/exports
# /etc/exports: the access control list for filesystems which may be exported to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
# /export 192.168.1.0/24(rw,no_root_squash,no_subtree_check)
/export/cloud      192.168.1.0/24(rw,sync,no_root_squash,subtree_check,insecure)
/export/gitea      192.168.1.0/24(rw,sync,no_root_squash,subtree_check,insecure)
/export/jellystack 192.168.1.0/24(rw,sync,no_root_squash,subtree_check,insecure)
/export/media      192.168.1.0/24(rw,sync,no_root_squash,subtree_check,insecure)
sudo systemctl restart nfs-server
Get LVM's UUID
sudo blkid -s UUID -o value /dev/mapper/hdds-datas
Mount LVM
sudo vim /etc/fstab
# LVM
UUID=0c390345-ca52-45fd-9097-6e931d651a8f       /       ext4    defaults,x-systemd.growfs       0       1
# LVM
/dev/hdds/datas         /mnt/data               ext4    defaults,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# NFS exports
/mnt/data/cloud         /srv/nfs4/cloud         none    bind,nofail     0 0
/mnt/data/media         /srv/nfs4/media         none    bind,nofail     0 0
/mnt/data/ebooks        /srv/nfs4/ebooks        none    bind,nofail     0 0
/mnt/data/git           /srv/nfs4/git           none    bind,nofail     0 0
/mnt/data/photos        /srv/nfs4/photos        none    bind,nofail     0 0
/mnt/data/downloads     /srv/nfs4/downloads     none    bind,nofail     0 0
/opt/backups            /srv/nfs4/backups       none    bind,nofail     0 0

PS : Check the content of /var/lib/nfs/etab to show NFS shares list and all the applied permission details

cat /var/lib/nfs/etab
/srv/nfs4           192.168.1.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/cloud     192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/media     192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/ebooks    192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/git       192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/photos    192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/downloads 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,no_root_squash,no_all_squash)
/srv/nfs4/backups   192.168.1.0/24(ro,sync,no_subtree_check)

Client(s)

sudo apt install nfs-common -y

sudo mkdir -p /nfs/jellystack
sudo mkdir -p /nfs/cloud
sudo mkdir -p /nfs/gitea
sudo mkdir -p /nfs/media

sudo vim /etc/fstab
krabs:/srv/nfs4/cloud   /nfs/media  nfs  _netdev,x-systemd.automount,noauto,nofail,noatime,nolock,tcp,bg,actimeo=1800   0      0
krabs:/srv/nfs4/git     /nfs/git    nfs  _netdev,x-systemd.automount,noauto,nofail,noatime,nolock,tcp,bg,actimeo=1800   0      0
krabs:/srv/nfs4/media   /nfs/media  nfs  _netdev,x-systemd.automount,noauto,nofail,noatime,nolock,tcp,bg,actimeo=1800   0      0
krabs:/srv/nfs4/ebooks  /nfs/ebooks nfs  _netdev,x-systemd.automount,noauto,nofail,noatime,nolock,tcp,bg,actimeo=1800   0      0
sudo mount /nfs/cloud
sudo mount /nfs/gitea
sudo mount /nfs/jellystack
sudo mount /nfs/media

sudo systemctl daemon-reload