NFS介绍
NFS是Network File System的缩写,是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录,主要存储用户上传的图片附件等信息。
NFS服务部署
- 先通过Multipass 创建nfsserver 节点(关于Multipass 请点击查看相关内容)
#创建nfsserver 节点
% multipass launch --name nfsserver
#进入nfsserver 节点
% multipass shell nfsserver
#成功进入后,将会得到如下结果
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-109-generic aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri May 6 22:22:22 CST 2022
System load: 0.03
Usage of /: 27.2% of 4.68GB
Memory usage: 19%
Swap usage: 0%
Processes: 101
Users logged in: 0
IPv4 address for enp0s1: 192.168.64.12
IPv6 address for enp0s1: fd67:d40e:50d4:ad7b:5054:ff:fe81:c2b1
0 updates can be applied immediately.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
其中IP: 为容器可访问的IP地址。
- 开始安装服务端所需要的组件
% sudo apt-get install -y nfs-kernel-server
- 创建需要共享的目录(例如/nfsdata/share)
$ sudo mkdir -p /nfsdata/share
- 配置好目录权限
$ sudo chown nobody:nogroup /nfsdata/share
$ sudo chmod 755 /nfsdata/share
- 修改关键配置文件:/etc/exports
sudo vim /etc/exports
#添加可指定客户端访问权限,
# /nfsdata/share 192.168.100.*(rw,sync,no_subtree_check)
#代表允许前缀为192.168.100. 的IP 可访问NFS
#如允许任意IP访问,则加入如下语句
/nfsdata/share *(rw,sync,no_subtree_check)
#配置参数说明
rw:读书
ro:只读
root_squash: 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root用户
all_squash: 不论NFS客户端使用什么身份帐号访问,均映射为NFS服务器的匿名用户
async:优先将数据保存到内存,然后再写入硬盘,这样效率更高,但可能会丢失数据。
sync: 同时将数据写入到内存与硬盘,保证不丢失数据。
- 检查nfs服务的目录
#重新加载配置
$ sudo exportfs -ra
#查看共享的目录和允许访问的ip段
$ sudo showmount -e
#正常会输出如下结果
#Export list for nfsserver:
#/nfsdata/share *
- 重启nfs服务使以上配置生效
$ sudo systemctl restart nfs-kernel-server
安装客户端进行验证
- 先在服务端的/nfsdata/share 创建一个测试文件
sudo vim /nfsdata/share/test.txt
#输入Hello NFS!
- 在本机"终端"新打一个multipass client 节点,可以名为nfsclient
#创建nfsclient 节点
% multipass launch --name nfsclient
#进入nfsclient 节点
% multipass shell nfsclient
- 安装NFS 客户端
% sudo apt-get install -y nfs-common
- 开始进行挂载
#先创建一个待挂载目录
sudo mkdir /nfsdata
#进行对192.168.64.12 NFS服务端挂载
sudo mount -t nfs -o nolock,nfsvers=3 192.168.64.12:/nfsdata/share /nfsdata
- 验证
ls /nfsdata
#输出结果
#test.txt
#发现出现了之前在server创建的文件,代表挂载成功。
#同时查看一下 磁盘信息
df -h
#得到(192.168.64.12:/nfsdata/share)的挂载信息
Filesystem Size Used Avail Use% Mounted on
udev 453M 0 453M 0% /dev
tmpfs 97M 1.1M 96M 2% /run
/dev/sda1 4.7G 1.3G 3.4G 28% /
tmpfs 485M 0 485M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 485M 0 485M 0% /sys/fs/cgroup
/dev/loop0 58M 58M 0 100% /snap/core20/1408
/dev/loop1 38M 38M 0 100% /snap/snapd/15183
/dev/loop2 62M 62M 0 100% /snap/lxd/22761
/dev/sda15 98M 290K 98M 1% /boot/efi
tmpfs 97M 0 97M 0% /run/user/1000
192.168.64.12:/nfsdata/share 4.7G 1.3G 3.4G 28% /nfsdata