简介:
NFS(Network File System)即网络文件系统。
是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
原理:
NFS通过网络来进行服务端和客户端之间的数据传输,传输数据需要相应的网络端口,NFS服务器端口是随机的,NFS服务器通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口,之后再利用这些端口(小于1024)来进行数据的传输。
pc(portmap)就是用来统一管理NFS端口的服务,端口是111。NFS服务端需要先启动rpc,再启动NFS,这样NFS才能够到RPC去注册端口信息。当rpc服务挂掉,nfs还存在的时候,需要先宕掉nfs,启动rpc,再启动nfs。顺序错误将导致服务不可用;
笔直的分割线:
NFS部署:
SUSE11系统环境下,server端是不需要portmap服务的。
服务端:
图一:在计算机打开YaST2,找到NFS服务器;
图二:启动Enable NFSv4和NFS Server,如果防火墙是开着的,打勾Open port in Firewall,其余的默认;
图三:如果上一步无法配置NFS防火墙端口,手动在YaST2打开firewall,选择allowed services,点击service to allow的选项,选择NFS Server项;
图四:继续图二的时候,弹出提示要安装nfs-kernel-server,点击install;
图五:安装源不可用;
#命令行安装nfs-kernel-server;
ctms-cluster:~ # df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rootvg-lv_root 119G 32G 81G 29% /
udev 7.8G 108K 7.8G 1% /dev
tmpfs 7.8G 76K 7.8G 1% /dev/shm
/dev/sda1 152M 36M 108M 26% /boot
/dev/mapper/rootvg-lv_home 60G 14G 43G 24% /home
/dev/mapper/rootvg-lv_tmp 9.9G 265M 9.1G 3% /tmp
/dev/mapper/rootvg-lv_var 9.9G 606M 8.8G 7% /var
/dev/sr0 3.2G 3.2G 0 100% /media/SLES-11-SP3-DVD-x86_6407031
ctms-cluster:~ # zypper ar file:///media/SLES-11-SP3-DVD-x86_6407031 jimmy
正在添加安装源 'jimmy' [完毕]
成功添加了安装源 'jimmy'
已启用: 是
自动刷新: 否
GPG check: 是
URI: file:/media/SLES-11-SP3-DVD-x86_6407031
ctms-cluster:~ # zypper lr
# | 别名 | 名称 | 已启用 | 刷新
--+--------------------------------------------------+--------------------------------------------------+--------+-----
1 | SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138 | SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138 | 是 | 否
2 | jimmy | jimmy | 是 | 否
ctms-cluster:~ # zypper in nfs-kernel-server
正在构建 'jimmy' 安装源缓存 [完毕]
正在加载安装源数据...
正在读取已安装的软件包...
正在解析软件包依赖性...
以下新的软件包将被安装:
nfs-kernel-server
1 new package to install.
总下载大小:111.0 KiB 。 操作完成后,额外的 247.0 KiB 空间将会被使用。
是否继续? [y/n/?] (y): y
正在接收 软件包 nfs-kernel-server-1.2.3-18.29.1.x86_64 (1/1), 111.0 KiB (解压后 247.0 KiB)
媒体源'file:/mnt'不包含需要的介质 #报错信息,得知zypper ar需要在/mnt目录下;
中止、重试、忽略? [a/r/i/?] (a): a
Failed to provide Package nfs-kernel-server-1.2.3-18.29.1. Do you want to retry retrieval?
[SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138|file:/mnt] 安装源 SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138 无法提供文件 ./suse/x86_64/nfs-kernel-server-1.2.3-18.29.1.x86_64.rpm
历史:
- 媒体源'file:/mnt'不包含需要的介质
- Can't provide ./suse/x86_64/nfs-kernel-server-1.2.3-18.29.1.x86_64.rpm
中止、重试、忽略? [a/r/i] (a): a
下列软件包在安装期间或安装后或移除时出现问题:
Installation aborted by user
请参见以上错误信息找到线索。
ctms-cluster:~ # cd /etc/zypp/repos.d/
ctms-cluster:/etc/zypp/repos.d # ls
jimmy.repo SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138.repo
ctms-cluster:/etc/zypp/repos.d # cat /etc/zypp/repos.d/jimmy.repo
[jimmy]
name=jimmy
enabled=1
autorefresh=0
baseurl=file:/media/SLES-11-SP3-DVD-x86_6407031 #验证之前zypper ar的地址,不符合安装要求;
type=yast2
ctms-cluster:/etc/zypp/repos.d # ll /dev/cdr
cdrom cdrw
ctms-cluster:/etc/zypp/repos.d # ll /dev/cdrom
ls: 初始化月份字符串出错
lrwxrwxrwx 1 root root 3 11�� 16 01:29 /dev/cdrom -> sr0
ctms-cluster:/etc/zypp/repos.d # mount -o loop /dev/cdrom /mnt/ #将镜像挂载到/mnt目录下;
ctms-cluster:/etc/zypp/repos.d # zypper ar file:///mnt/ haya #重新搭建zypper源haya,baseurl在本地/mnt目录下;
正在添加安装源 'haya' [完毕]
成功添加了安装源 'haya'
已启用: 是
自动刷新: 否
GPG check: 是
URI: file:/mnt/
ctms-cluster:/etc/zypp/repos.d # zypper in nfs-kernel-server
正在构建 'haya' 安装源缓存 [完毕]
正在加载安装源数据...
正在读取已安装的软件包...
正在解析软件包依赖性...
以下新的软件包将被安装:
nfs-kernel-server
1 new package to install.
总下载大小:111.0 KiB 。 操作完成后,额外的 247.0 KiB 空间将会被使用。
是否继续? [y/n/?] (y): y
正在接收 软件包 nfs-kernel-server-1.2.3-18.29.1.x86_64 (1/1), 111.0 KiB (解压后 247.0 KiB)
正在安装: nfs-kernel-server-1.2.3-18.29.1 [完毕]
ctms-cluster:/etc/zypp/repos.d #
图六:在图形界面再次打开NFS服务器,install成功;
#验证NFS服务器是否启动;
ctms-cluster:/etc/zypp/repos.d # netstat -an | grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 :::111 :::* LISTEN
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 :::111 :::*
unix 2 [ ACC ] STREAM LISTENING 124111 /tmp/orbit-root/linc-60e2-0-4be1700340adc
ctms-cluster:/etc/zypp/repos.d #
图七:在YaST2打开NFS图形界面;
#add directory是添加服务器端共享的文件夹;
#add host是添加客户端ip以及权限;
#host wild card是填写客户端ip;
#options是客户端使用共享文件夹权限,可以不填(表示默认)后期可修改;
图八:在客户端最后一行是默认权限,第二行是添加了w(write)权限;
#no_root_squash 表示root用户具有根目录的完全管理访问权限;
#* 表示可以访问的IP范围,这里是所有ip地址都可以访问,当然也可以写上ip来代替;
#no_all_squash 保留共享文件的UID和GID(默认);
客户端:
ctms-app1:~ # mkdir /share
ctms-app1:~ #
图九:左下角add,根据提示填,简单到爆;
图十:嗯,上一秒还很开心,下一秒就error,提示说无法在/etc/fstab/下挂载;
#命令行验证,最后一行是NFS的挂载,已经挂载成功;
ctms-app1:~ # cat /etc/fstab
/dev/rootvg/lv_swap swap swap defaults 0 0
/dev/rootvg/lv_root / ext3 acl,user_xattr 1 1
/dev/sda1 /boot ext3 acl,user_xattr 1 2
/dev/rootvg/lv_home /home ext3 acl,user_xattr 1 2
/dev/rootvg/lv_tmp /tmp ext3 acl,user_xattr 1 2
/dev/rootvg/lv_var /var ext3 acl,user_xattr 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
172.168.47.150:/share /share nfs4 defaults 0 0
ctms-app1:~ #
图十一:再打开一次NFS客户端,没有上次的error,如果再出现,手动挂载;
#命令行验证,在客户端创建文件夹;
ctms-app1:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root 69G 9.8G 56G 15% /
udev 24G 108K 24G 1% /dev
tmpfs 24G 76K 24G 1% /dev/shm
/dev/sda1 152M 36M 109M 25% /boot
/dev/mapper/rootvg-lv_home 15G 6.6G 7.6G 47% /home
/dev/mapper/rootvg-lv_tmp 9.9G 241M 9.2G 3% /tmp
/dev/mapper/rootvg-lv_var 7.9G 284M 7.2G 4% /var
/dev/sr0 3.2G 3.2G 0 100% /media/SLES-11-SP3-DVD-x86_6407031
172.168.47.150:/share 119G 32G 81G 29% /share
ctms-app1:~ # mkdir -p /share/jimmytest
ctms-app1:~ # ls /share/
jimmytest
ctms-app1:~ #
服务器端验证:
#共享目录显示客户端创建的文件夹“jimmytest”,说明共享目录/share可用;
ctms-cluster:~ # ls /share/
jimmytest
ctms-cluster:~ #
在pc端阅读效果更佳~