Содержание

NFS

Сервер

sudo apt-get install nfs-kernel-server

Настройка сервера делается в файле /etc/exports

Например:

/ubuntu  *(ro,sync,no_root_squash,no_subtree_check)
/common 192.168.0.1/24(rw,sync,no_subtree_check) 192.168.0.200(noaccess)

- доступ к директории /ubuntu получат доступ все на чтение
- доступ на чтение/запись к /common получит вся сеть 192.168.0.0/24 кроме 192.168.0.200

Для применения изменений первый раз перегружаем nfs, а затем достаточно команды:

sudo exportfs -r

Опции

http://winitpro.ru/index.php/2013/04/22/nfs-server-na-windows-server-2012/
https://linux.die.net/man/5/exports

Debug

Проверить поддерживаемые версии nfs сервером:

cat /proc/fs/nfsd/versions

Изменить режим логирования, в файле /etc/default/nfs-kernel-server изменить RPCMOUNTDOPTS на:

RPCMOUNTDOPTS="--manage-gids --debug all"

Сервер в контейнере LXC

Создать в гипервизоре proxmox профиль lxc-container-default-with-nfsd для apparmor:

cat > /etc/apparmor.d/lxc/lxc-default-with-nfsd << 'EOF'
# Do not load this file.  Rather, load /etc/apparmor.d/lxc-containers, which
# will source all profiles under /etc/apparmor.d/lxc
 
profile lxc-container-default-with-nfsd flags=(attach_disconnected,mediate_deleted) {
  #include <abstractions/lxc/container-base>
 
  # the container may never be allowed to mount devpts.  If it does, it
  # will remount the host's devpts.  We could allow it to do it with
  # the newinstance option (but, right now, we don't).
  deny mount fstype=devpts,
  mount fstype=nfsd,
  mount fstype=rpc_pipefs,
  mount fstype=cgroup -> /sys/fs/cgroup/**,
}
EOF

Перечитать профили apparmor:

apparmor_parser -r /etc/apparmor.d/lxc-containers

Активировать профиль lxc-container-default-with-nfsd (для контейнера 100 на гипервизоре a01):

echo 'lxc.apparmor.profile = lxc-container-default-with-nfsd' >> /etc/pve/nodes/a01/lxc/100.conf

Перегрузить контейнер:

lxc-stop -n 100
lxc-start -n 100

https://gist.github.com/rwenz3l/0907385f6a6690c34eb8e36fa73d8405

Клиент

sudo apt-get install nfs-common

Посмотреть шары на хосте:

showmount -e fs.domain.com

Подключение с помощью mount:

sudo mount example.domain.com:/ubuntu /local/ubuntu
sudo mount -t nfs -o rw,hard,intr 192.168.0.1:/common ~/net/disk1
sudo mount nfsserver:/share/soft/ISO /mnt -o nfsvers=3,udp

или fstab:

example.domain.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr
192.168.0.1:/common /home/user2/net/disk3 nfs defaults 0 0
nfsserver:/share/soft/ISO /mnt nfs nfsvers=3,udp

Подключаем NFS шару в Windows Server 2012 R2

Ошибки

rpc.nfsd[453]: error starting threads: errno 38 (Function not implemented)
При запуске сервера NFC в контейнере LXC
Решение: Сервер в контейнере LXC

clnt_create: RPC: Unknown host
При запуске showmount
Решение:

apt install netbase

clnt_create: RPC: Program not registered
Не запущен/Не доступен сервер nfs

Ссылки

http://startubuntu.ru/?p=104216
https://www.k-max.name/linux/network-file-system-nfs/