Ubuntu下使用NFS
NFS简介
网络文件系统(NFS)是一种分布式文件系统协议,最初由SUN公司在1984年发布。NFS使得客户端能够像访问本地文件一样,访问位于服务器上的文件。
使用NFS,特别是结合高速局域网时,可以获得以下优势:
- 降低本地工作站的磁盘消耗
- 在虚拟化场景下,让虚拟机迁移非常快捷
服务器端
安装
执行下面的命令安装NFS服务器:
1 |
sudo apt install nfs-kernel-server |
配置
修改配置文件 /etc/exports,设置通过NFS暴露(Export)的目录,该文件中每一行定义一个导出目录,其格式如下:
1 |
被导出的目录 客户端规格(选项) [客户端规格(选项) ... ] |
其中:
- 被导出目录:即服务器上暴露出来的文件目录,绝对路径
- 客户端规格:指定哪些客户端有资格访问该目录,支持以下方式来指定“规格”:
- 客户端IP地址,例如10.0.0.2
- 子网,例如10.0.0.0/255.0.0.0 或者10.0.0.0/8
- 客户端域名,例如la.gmem.cc
- 域名通配符,例如*.gmem.cc
- 所有主机,用*表示
- 选项,包括以下几种:
- 读写权限控制,支持取值ro、rw
- 用户映射:
取值 说明 all_squash 将所有远程访问者的uid、gid映射为匿名用户/组(nfsnobody) no_all_squash 禁止all_squash,默认值 root_squash 将uid、gid为0的远程用户映射为匿名用户/组(nfsnobody) no_root_squash 禁止root_squash anonuid=xxx
anongid=xxx明确设置远程匿名用户的uid、gid - secure,限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认),相反的选项是insecure
- sync,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
- async,将数据先保存在系统缓存中,必要时才写入磁盘
- wdelay,检查是否有相关的写操作,如果有则将这些写操作一起执行以提高效率(默认)
- no_wdelay,若有写操作则立即执行,应与sync配合使用
配置示例:
1 2 |
# 暴露一个目录,允许10.0.0.0/8网段的主机访问,所有访问者以alex的身份进行 /home/alex/Vmware/libvirt/images/default 10.0.0.0/8(rw,anonuid=1000,anongid=1000) |
启动
修改好配置文件后,执行下面的命令启动NFS服务器:
1 |
sudo service nfs-kernel-server restart |
命令
以下几个命令与NFS有关:
命令 | 说明 |
exportfs | 立即生效配置文件中的修改,不需要重启NFS服务。选项: -a 针对/etc/exports中所有导出项操作 -u 执行取消导出(unexport)操作 |
nfsstat | 查看NFS的运行状态 |
showmount | 显示NFS服务器的挂载信息。选项: -a 列出客户端IP或主机名,以及其挂载的本NFS服务器的目录 -e 显示NFS服务器的导出列表 |
客户端
安装
执行下面的命令安装必要的客户端组件:
1 |
sudo apt install nfs-common |
挂载
执行下面的命令,把NFS目录挂载到客户端的文件系统中:
1 2 3 4 |
# 创建挂载点 mkdir default # 挂载zircon.local上暴露的default目录 sudo mount zircon.local:/home/alex/imgs/default default |
或者修改fstab,在客户端启动时执行挂载:
1 |
zircon.local:/home/alex/imgs/default /home/alex/imgs/default rsize=8192,wsize=8192,timeo=14,intr |
Leave a Reply