Skip to main content

NFS

Tips#

  • 允许本地访问远程文件
  • 使用 C/S 结构在 *nix 之间分享文件
  • 两个机器之间不需要允许相同的操作系统
  • 可使用 NSF 指定中心存储解决方案
  • 用户不需要关系文件的物理位置
  • 不需要手动刷新来显示文件
  • 新版本的 NFS 也支持 ACL
  • 可用过防火墙和 Kerberos 来保证安全
  • 默认 2049 端口
  • 使用 Kerberos 可使用密码进行验证
  • showmount
    • -e 显示本地共享
    • -e <server-ip or hostname> 显示远程共享
    • -d 例举所有子目录
  • exportfs
    • -v 例举共享的文件和选项
    • -a 导出所有 /etc/exports 中的共享配置
    • -u 取消共享 /etc/exports 中的配置
    • -r 在修改 /etc/exports 后刷新服务共享列表
  • AlpineLinux Setting up a nfs-server
  • /etc/exports
  • http://kodi.wiki/view/NFS
  • ArchLinux NFS/简体中文
  • NFS 本身没有授权访问机制, 基本只能限制 IP, 和 Kerberos 配合是可以的
  • https://help.ubuntu.com/community/NFSv4Howto
  • cifs 相比 NFS 有授权
  • SMB vs NFS authentication
  • NFS 如果感觉有问题,可以尝试使用 v3 版本 -o v3
# 安装apk add nfs-utils# 开机前启动服务rc-update add nfsrc-update add nfsmount# 立即启动服务rc-service nfs startrc-service nfsmount start
# 共享该目录sudo mkdir -p /share# 赋予当前用户共享目录权限sudo chown $USER /share

# Linux# ========echo '/nfsshare 192.168.0.101(rw,sync,no_root_squash)' | sudo tee /etc/exports


# 如果想让客户端非 root 访问服务端 root 信息, 则可以# all_squash,anonuid=0,anongid=0# 使所有用户都作为匿名用户,而匿名用户则默认为 root# 也可以指定为特定的用户,例如 id asterisk
# macOS# ==========echo '/share -network 192.168.0.0 -mask 255.255.0.0' | sudo tee /etc/exportsnfsd enablenfsd startnfsd statusnfsd checkexport
# 如果修改了 exports 文件nfsd updateshowmount -e# 查看共享目录showmount -e 192.168.34.120
mount -t nfs 192.168.0.100:/share /mnt/nfsshareumount 192.168.0.100:/share
# 关闭 nfsnfsd stopnfsd disable
# 如果 mac 下 mount 出现 Operation not permitted, 则添加 -o resvportmount -t nfs -o resvport 192.168.1.1:/ ~/mnt/alpine/

mount.nfs: access denied by server while mounting -o v3

nfsstat -m

nfs://vers=4,10.0.10.26/srv

nfs-utils#

  • /proc/fs/nfsd
  • /proc/fs/nfs
  • /etc/exports
    • 共享目录定义
  • /usr/sbin/exportfs
    • 管理共享的目录 - /var/lib/nfs/etab
    • -a 导出所有 - 将 /etc/exports 同步到 /var/lib/nfs/etab - 更新内核的导出表
    • -u 移除一个导出 -au 移除所有导出
    • -f 移除所有
  • /sbin/rpc.statd
    • 从其它主机监听重启通知
    • 当本地系统重启,管理被通知的主机列表
  • /usr/sbin/sm-notify
    • 发送重启通知到 NFS 端
  • /sbin/mount.nfs
  • /sbin/umount.nfs
  • /sbin/umount.nfs4
  • /sbin/mount.nfs4
  • /usr/sbin/showmount
    • 查看挂载信息

/sbin/nfsdcld /sbin/nfsdcltrack nfs-utils edge main x86_64

/usr/sbin/showmount nfs-utils edge main x86_64 /usr/sbin/rpc.nfsd nfs-utils edge main x86_64 /usr/sbin/nfsidmap nfs-utils edge main x86_64 /usr/sbin/start-statd nfs-utils edge main x86_64 /usr/sbin/mountstats nfs-utils edge main x86_64 /usr/sbin/rpc.svcgssd nfs-utils edge main x86_64 /usr/sbin/blkmapd nfs-utils edge main x86_64 /usr/sbin/nfsiostat nfs-utils edge main x86_64 /usr/sbin/rpc.idmapd nfs-utils edge main x86_64 /usr/sbin/rpc.gssd nfs-utils edge main x86_64 /usr/sbin/nfsstat nfs-utils edge main x86_64 /usr/sbin/rpc.mountd nfs-utils edge main x86_64 nfs-utils edge main x86_64 /usr/sbin/rpcdebug nfs-utils edge main x86_64

/usr/sbin/nfsconf nfs-utils edge main x86_64 /var/lib/nfs/rmtab nfs-utils edge main x86_64 /var/lib/nfs/etab nfs-utils edge main x86_64 /var/lib/nfs/state

CacheFS#

How can I cache NFS shares on a local disk? https://askubuntu.com/a/4578/267103

FS-Cache & CacheFS: Caching for Network File Systems http://www.linux-mag.com/id/7378/

https://en.wikipedia.org/wiki/CacheFS https://pkgs.alpinelinux.org/package/v3.7/community/x86_64/cachefilesd

CacheFiles /var/fscache CacheFS block 级别

FS-Cache 接口

netfs nfs,afs,isofs

/proc/fs/fscache/stats

/proc/fs/fscache/histogram

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/netfs-api.txt

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/fscache.txt

Ports#

program vers proto   port 100000    2   tcp    111  portmapper,rpcbind 100000    2   udp    111  portmapper 100005    1   udp    950  mountd 100005    3   udp    950  mountd 100005    1   tcp    884  mountd 100005    3   tcp    884  mountd 100003    2   udp   2049  nfs 100003    3   udp   2049  nfs 100003    2   tcp   2049  nfs 100003    3   tcp   2049  nfs 100024    1   udp    644  status 100024    1   tcp    918  status 100021    0   udp    630  nlockmgr 100021    1   udp    630  nlockmgr 100021    3   udp    630  nlockmgr 100021    4   udp    630  nlockmgr 100021    0   tcp    917  nlockmgr 100021    1   tcp    917  nlockmgr 100021    3   tcp    917  nlockmgr 100021    4   tcp    917  nlockmgr