NFS文件系统
(1).nfs文件系统简介
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。
在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
(2).nfs文件系统功能
使用cifs方式的多用户挂载,不论所否使用共享资源,共享目录都挂载着的,这样很占用内存。
想要达到使用共享资源时,共享目录自动挂载,而在不使用共享资源时,共享目录便会自动卸载。
而 cifs是无法做到的,此任务可以由nfs文件系统实现
(3)主要参数说明
1) exportfs命令
一般格式: exportfs + 参数
具体参数详解:
-a # 全部挂载(或卸载)/etc/exports文件内的设定。
-r # 重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
-u # 卸载某一目录。
-v # 在export时将共享的目录显示在屏幕上。
2)关于NFS共享的常用参数
ro # 只读访问
rw # 读写访问
sync # 所有数据在请求时写入共享
async # NFS在写入数据前可以相应请求
secure # NFS通过1024以下的安全TCP/IP端口发送
insecure # NFS通过1024以上的端口发送
wdelay # 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay # 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide # 在NFS共享目录中不共享其子目录
no_hide # 共享NFS目录的子目录
subtree_check # 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check # 和上面相对,不检查父目录权限
all_squash # 共享文件的UID和GID映射匿名用户
no_all_squash # 保留共享文件的UID和GID(默认)
root_squash # root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash # root用户具有根目录的完全管理访问权限
anonuid=xxx # 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx # 指定NFS服务器/etc/passwd文件中匿名用户的GID
1.nfs文件系统共享
在服务端:
##1.安装nfs服务
[root@service ~]# yum install -y nfs-utils
##2.打开nfs服务
[root@service ~]# systemctl start nfs-server
[root@service ~]# ll /westos/
total 0
##3.创建目录
[root@service ~]# mkdir /westos
[root@service ~]# touch /westos/file{1..5}
[root@service ~]# ll /westos/
4.nfs方式共享目录
[root@service ~]# vim /etc/exports
###############
/westos *(sync,ro) ##共享目录为本地真实存在的任何目录均可;sync表示实时同步数据
##无需重启nfs服务,只需要刷新配置即可
[root@service ~]# exportfs -rv
exporting *:/westos
在客户端:
##1.还原环境:先卸载原有的挂载
[root@client ~]# df
[root@client ~]# umount /mnt
##2.识别共享
[root@client ~]# showmount -e 172.25.254.134
Export list for 172.25.254.134:
/westos *
##3.普通挂载
[root@client ~]# mount 172.25.254.134:/westos /mnt
[root@client ~]# df
##可查看到共享目录中的文件
[root@client ~]# cd /mnt
[root@client mnt]# ls
file1 file2 file3 file4 file5
##1.还原环境;先卸载原有的挂载
[root@client ~]# df
[root@client ~]# umount /mnt
##2.安装autofs服务
[root@client ~]# yum install -y autofs
[root@client ~]# ls -ld /net
ls: cannot access /net: No such file or directory
##3.开启服务
[root@client ~]# systemctl start autofs.service
[root@client ~]# ls -ld /net
drwxr-xr-x. 2 root root 0 Nov 28 00:39 /net
##4.进入默认挂载目录
[root@client ~]# cd /net
[root@client net]# ls
[root@client net]# cd 172.25.254.134
[root@client 172.25.254.134]# ls
westos
[root@client 172.25.254.134]# cd westos/
[root@client westos]# ls
file1 file2 file3 file4 file5
[root@client westos]# pwd
/net/172.25.254.134/westos
##发现共享目录自动挂载;/net/172.25.254.134/westos为系统默认挂载点
[root@client westos]# df
##5.退出挂载目录
[root@client westos]# cd
##默认300秒之后会自动卸载
[root@client ~]# df
这样便实现了samba共享资源在使用时自动挂载,不使用时自动卸载。
3.更改自动卸载等待时间
[root@client ~]# vim /etc/sysconfig/autofs
################
TIMEOUT=5 ##设定自动卸载等待时间
##重启autofs服务
[root@client ~]# systemctl restart autofs.service
测试:
[root@client ~]# df
[root@client ~]# cd /net/172.25.254.134/westos/
[root@client westos]# df
##退出挂载目录,等待5s共享目录自动卸载
[root@client westos]# cd
[root@client ~]# df
(1)设定挂载点
##1.设定最终挂载点
[root@client ~]# vim /etc/auto.master
################
/mnt /etc/auto.pub
最终挂载点的上层目录 主策略文件
##默认此文件不存在
[root@client ~]# ls -l /etc/auto.pub
ls: cannot access /etc/auto.pub: No such file or directory
##2.编写主策略文件
[root@client ~]# vim /etc/auto.pub
################
linux -ro 172.25.254.134:/westos
[root@client ~]# ll /etc/auto.pub
-rw-r--r--. 1 root root 44 Nov 28 01:26 /etc/auto.pub
##3.重启autofs服务
[root@client ~]# systemctl restart autofs.service
测试:
##进入自行设定的挂载目录
[root@client ~]# cd /mnt
[root@client mnt]# ls
[root@client mnt]# cd linux
[root@client linux]# ls
file1 file2 file3 file4 file5
##发现共享目录自动挂载;并且挂载点更改为/mnt/linux
[root@client linux]# df
##退出挂载目录
[root@client linux]# cd
##等待5s,发现共享目录自动卸载
[root@client ~]# df
1.更改挂载版本
@1.默认挂载版本为4
##进入挂载目录
[root@client ~]# cd /mnt/linux
[root@client linux]# ls
file1 file2 file3 file4 file5
##自动挂载
[root@client linux]# df
##查看挂载版本信息
[root@client linux]# mount
@2.更改挂载版本
[root@client linux]# cd
##更改挂载版本
[root@client ~]# vim /etc/auto.pub
################
linux -ro,vers=3 172.25.254.134:/westos
[root@client ~]# cd /mnt/linux
[root@client linux]# mount
@1.发现客户端只能访问共享文件但无法删除文件
[root@client linux]# pwd
/mnt/linux
[root@client linux]# ls
file1 file2 file3 file4 file5
##删除文件失败;文件系统只读
[root@client linux]# rm -rf file1
rm: cannot remove ‘file1’: Read-only file system
[root@client linux]# cd
@2.因为服务端是以只读的方式共享的
[root@service ~]# cat /etc/exports
/westos *(sync,ro)
##并且客户端挂载参数设定的为只读
[root@client ~]# cat /etc/auto.pub
linux -ro,vers=3 172.25.254.134:/westos
##1.更改共享方式
[root@service ~]# vim /etc/exports
#################
/westos *(sync,rw)
##2.刷新
[root@service ~]# exportfs -rv
exporting *:/westos
##3.更改挂载权限
[root@client ~]# vim /etc/auto.pub
################
linux -rw,vers=3 172.25.254.134:/westos
[root@client ~]# cd /mnt/linux
[root@client linux]# ls
file1 file2 file3 file4 file5
##删除失败;操作不被允许,说明与共享权限无关,与文件本身的权限有关
[root@client linux]# rm -rf file1
rm: cannot remove ‘file1’: Permission denied
##查看文件权限
[root@service ~]# ll /westos/
total 0
-rw-r--r--. 1 root root 0 Nov 28 12:55 file1
-rw-r--r--. 1 root root 0 Nov 28 12:55 file2
-rw-r--r--. 1 root root 0 Nov 28 12:55 file3
-rw-r--r--. 1 root root 0 Nov 28 12:55 file4
-rw-r--r--. 1 root root 0 Nov 28 12:55 file5
[root@service ~]# ll -d /westos
drwxr-xr-x. 2 root root 66 Nov 28 12:55 /westos
##4.更改目录权限;
[root@service ~]# chmod 777 /westos
[root@service ~]# ll -d /westos
drwxrwxrwx. 2 root root 66 Nov 28 12:55 /westos
[root@client linux]# pwd
/mnt/linux
##删除文件成功
[root@client linux]# rm -rf file1
[root@client linux]# ls
file2 file3 file4 file5
(1).更改挂载用户身份为超级用户
@默认挂载用户身份为匿名用户
[root@client linux]# pwd
/mnt/linux
[root@client linux]# ls
file2 file3 file4 file5
##建立文件
[root@client linux]# touch file6
[root@client linux]# ls
file2 file3 file4 file5 file6
[root@service ~]# ll /westos/
total 0
-rw-r--r--. 1 root root 0 Nov 28 13:07 file2
-rw-r--r--. 1 root root 0 Nov 28 13:07 file3
-rw-r--r--. 1 root root 0 Nov 28 12:55 file4
-rw-r--r--. 1 root root 0 Nov 28 12:55 file5
-rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 28 13:15 file6
##1.指定挂载用户身份
[root@service ~]# vim /etc/exports
#################
/westos *(sync,rw,no_root_squash)
##2.刷新
[root@service ~]# exportfs -rv
exporting *:/westos
测试:
[root@client linux]# pwd
/mnt/linux
##建立文件
[root@client linux]# touch file7
[root@client linux]# ls
file2 file3 file4 file5 file6 file7
##查看文件所有人
[root@service ~]# ll /westos/
total 0
-rw-r--r--. 1 root root 0 Nov 28 13:07 file2
-rw-r--r--. 1 root root 0 Nov 28 13:07 file3
-rw-r--r--. 1 root root 0 Nov 28 12:55 file4
-rw-r--r--. 1 root root 0 Nov 28 12:55 file5
-rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 28 13:15 file6
-rw-r--r--. 1 root root 0 Nov 28 13:18 file7
##1.查看客户端存在的用户的uid和gid
[root@client ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@client ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos)
##2.指定挂载用户和用户组身份
[root@service ~]# vim /etc/exports
#################
/westos *(sync,rw,anonuid=1000,anongid=1000) ##student的用户uid和gid为1000;即指定挂载用户和用户组均为student
##3.刷新
[root@service ~]# exportfs -rv
exporting *:/westos
测试:
[root@client ~]# cd /mnt/linux
[root@client linux]# ls
file2 file3 file4 file5 file6 file7
##建立文件
[root@client linux]# touch file8
[root@client linux]# ls
file2 file3 file4 file5 file6 file7 file8
##查看文件的所有人和所有组
[root@service ~]# ll /westos/
total 0
-rw-r--r--. 1 root root 0 Nov 28 13:07 file2
-rw-r--r--. 1 root root 0 Nov 28 13:07 file3
-rw-r--r--. 1 root root 0 Nov 28 12:55 file4
-rw-r--r--. 1 root root 0 Nov 28 12:55 file5
-rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 28 13:15 file6
-rw-r--r--. 1 root root 0 Nov 28 13:18 file7
-rw-r--r--. 1 student student 0 Nov 28 19:43 file8
##1.指定挂载用户和用户组身份
[root@service ~]# vim /etc/exports
#################
/westos *(sync,rw,anonuid=1000,anongid=1001) ##student的uid为1000,westos的gid为1001;即指定挂载用户身份为student,组身份为westos
##2.刷新
[root@service ~]# exportfs -rv
exporting *:/westos
测试:
[root@client linux]# pwd
/mnt/linux
[root@client linux]# ls
file2 file3 file4 file5 file6 file7 file8
[root@client linux]# touch file9
[root@client linux]# ls
file2 file3 file4 file5 file6 file7 file8 file9
[root@service ~]# ll /westos/
total 0
-rw-r--r--. 1 root root 0 Nov 28 13:07 file2
-rw-r--r--. 1 root root 0 Nov 28 13:07 file3
-rw-r--r--. 1 root root 0 Nov 28 12:55 file4
-rw-r--r--. 1 root root 0 Nov 28 12:55 file5
-rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 28 13:15 file6
-rw-r--r--. 1 root root 0 Nov 28 13:18 file7
-rw-r--r--. 1 student student 0 Nov 28 19:43 file8
-rw-r--r--. 1 student westos 0 Nov 28 19:45 file9