วันพฤหัสบดีที่ 1 ตุลาคม พ.ศ. 2563

[Ubuntu] & [Linux Container]
NFS Kernel Server ต้น ๆ กับ การ Mount NFS ใน Container

[Ubuntu] NFS Kernel Server


คำสั่งที่ใช้ติดตั้ง NFS Server

sudo apt install nfs-kernel-server

sudo mkdir -p /mnt/nfs_share
sudo chown -R nobody:nogroup /mnt/nfs_share
sudo chmod 777 /mnt/nfs_share

sudo cp /etc/exports /etc/exports.bak
sudo nano /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)
#

# ----- EXAMPLE -----
/mnt/nfs_share  10.1.4.18(rw,sync,no_subtree_check)
/mnt/nfs_share  10.1.4.19(rw,sync,no_subtree_check)

/mnt/nfs_share  172.168.0.10(rw,sync,no_subtree_check)
sudo exportfs -a
sudo systemctl restart nfs-kernel-server



คำสั่งใช้ติดตั้ง NFS Client

sudo apt install nfs-common
sudo showmount -e 10.1.4.20

sudo mkdir -p /mnt/nfs_client
sudo mount 10.1.4.20:/mnt/nfs_share /mnt/nfs_client

# un mount
# sudo umount /mnt/nfs_client

# config when restart will auto mount
nano /etc/fstab
# ----- EXAMPLE -----
10.1.4.20:/mnt/nfs_share /mnt/nfs_client nfs defaults 0 0

เสร็จแล้วทดสอบ Restart Container แล้วลองเข้าไปดูที่ Path ที่เราแชร์ไว้



Reference: Install NFS Server and Client
VITUX - Install NFS Server and Client on Ubuntu
Tecmint - How to Install and Configure an NFS Server on Ubuntu 18.04

How to Unmount A Busy Device
Which Ports Need to Open in Firewall to Use NFS

PSU.AC.TH - ติดตั้ง NFS Server บน Ubuntu 16.04 Server
วิธีติดตั้ง NFS (Network File System) บน RHEL/CentOS/Fedora and Debian/Ubuntu



[Linux Container] การ Mount NFS ใน Container

เมื่อทำการ Mount ไปใน Container ไม่สามารถ Mount ได้
ได้ Error มาแบบนี้ตอนที่สั่ง mount
root@ubuntu:/mnt# mount 10.1.4.20:/mnt/nfs_share /mnt/nfs_client/
mount.nfs: Operation not permitted
root@ubuntu:~# mount 10.1.4.20:/mnt/nfs_share /mnt/nfs_client -v
mount.nfs: timeout set for Thu Oct  1 15:44:56 2020
mount.nfs: trying text-based options 'vers=4.2,addr=10.1.4.20,clientaddr=172.168.0.10'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=10.1.4.20'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.1.4.20 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.1.4.20 prog 100005 vers 3 prot UDP port 47102
mount.nfs: mount(2): Operation not permitted
mount.nfs: Operation not permitted
คือตัว "AppArmor" ทำการ block ไว้ไม่ให้เราสามารถทำการ mount ใน container ได้
ให้เราทำการ config เพิ่มไปยัง container แล้ว lxc restart container จากนั้นลอง mount อีกครั้ง
# lxc launch ubuntu:18.04 ubuntu --config raw.apparmor="mount fstype=nfs,"

lxc config set container-name raw.apparmor "mount fstype=nfs,"
lxc config set container-name security.privileged true

Thank: Solution - https://github.com/lxc/lxd/issues/1826

ไม่มีความคิดเห็น:

แสดงความคิดเห็น