NFS简介
NFS:网络文件系统(Network File system)。主要功能就是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端,可以通过挂在的方式将NFS服务端共享的数据目录挂在到NFS客户端本地系统中。NFS网络文件系统就像windows系统的网络共享。
一、安装NFS
$ sudo apt-get install nfs-kernel-server
二、配置NFS
1、创建需要共享的目录
$ sudo mkdir -p /home/dongao/workdir/nfs_root/rootfs
2、配置NFS共享目录
2.1 更改配置文件
$ sudo vi /etc/exports //打开 nfs 配置文件/etc/exports
输入下面一行,如图
/home/dongao/workdir/nfs_root/rootfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
配置项功能介绍:
- ro:共享目录只读;
- rw:共享目录可读可写
- sync:同步,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
- async:异步,将数据先保存在内存缓冲区中,必要时才写入磁盘,效率高,但有丢失数据的风险;
- wdelay(默认):如果有多个客户端要对同一个共享目录进行写操作,则将这些操作集中执行。对有很多小的IO写操作时,使用该选项可以有效的提高效率;
- no_wdelay:如果有多个客户端要对同一个共享目录进行写操作则立即写入。当设置了async选项时,no_wdelay选项无效,应与sync配合使用;
- root_squash(默认):将来访的root用户映射为匿名用户或用户组;
- no_root_squash:来访的root用户保持root帐号权限;
- all_squash:所有访问用户都映射为匿名用户或用户组;
- no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
- anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
- anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
- secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
- insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
- subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
- no_subtree_check(默认) :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
- hide:共享一个目录时,不共享该目录的子目录;
- no_hide:共享子目录;
2.2 重启NFS(每一次修改exports都要重启NFS)
$ sudo /etc/init.d/nfs-kernel-server restart
三、测试
1、本地测试
$ sudo mount -t nfs 192.168.0.108:/home/dongao/workdir/nfs_root/rootfs /mnt //将NFS共享目录 挂载到 /mnt 目录
ubuntu的IP地址为192.168.0.108,相当于将ubuntu的NFS共享目录挂载到/mnt目录。
2、ARM板测试
前提:ARM板和ubuntu能ping通!!!
用在嵌入式设备上挂载,要加上参数-o nolock,开发板上使用命令如:
$ sudo mount -t nfs -o nolock 192.168.0.108:/home/dongao/workdir/nfs_root/rootfs /mnt
将 ubuntu 的NFS共享目录挂载到开发板的 /mnt目录。