NFS服务

NFS共享存储服务知识点.png

预备知识

1.准备两台机器

nfs01 172.16.1.31(服务端) 需要安装 rpcbind(c6 c7)
web01 172.16.1.7(客户端)需要安装 nfs-utils

image

2.NFS应用场景

存放用户上传的附件(zip)图片(头像 文章中的图片)

nfs环境部署

1.安装软件(服务端和客户端)

[root@web01 ~]# yum -y install rpcbind nfs-utils
[root@nfs01 ~]# yum -y install rpcbind nfs-utils

2.检查是否安装成功(服务端和客户端)

[root@web01 ~]# rpm -qa rpcbind nfs-utils
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64
[root@nfs01 ~]# rpm -qa rpcbind nfs-utils
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64

3.nfs01(服务端)启动rpc服务

root@nfs01 ~]# systemctl start rpcbind

4.nfs01(服务端)查看注册信息

[root@nfs01 ~]# rpcinfo -p 
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

并没有nfs 信息 原因是nfs还没有启动

5.启动nfs 并再次查看注册信息

[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# rpcinfo -p 
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  38164  status
    100024    1   tcp  34281  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  39263  nlockmgr
    100021    3   udp  39263  nlockmgr
    100021    4   udp  39263  nlockmgr
    100021    1   tcp  33987  nlockmgr
    100021    3   tcp  33987  nlockmgr
    100021    4   tcp  33987  nlockmgr

(服务端nfs01)配置文件中配置nfs

[root@nfs01 ~]# vim /etc/exports
#share /upload
/upload  172.16.1.0/24(rw)
"/etc/exports" 2L, 42C written   

/upload含义是你要共享的目录为/upload
172.16.1.0/24 含义:你要共享给172.16.1.0/24网段
(含义):对这个目录有读写权限

(服务端nfs01)创建共享目录

[root@nfs01 ~]# mkdir -p /upload
[root@nfs01 ~]# chown nfsnobody.nfsnobody  /upload
[root@nfs01 ~]# ll -d /upload
drwxr-xr-x 2 nfsnobody nfsnobody 6 May 22 15:55 /upload

(服务端nfs01)重启nfs服务

[root@nfs01 ~]# systemctl reload   nfs 

(服务端nfs01)检查挂载信息

[root@nfs01 ~]#  showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.0/24

含义就和上面的一样。
/upload ===共享目录
172.16.1.0/24 ===网段

(服务端nfs01)检查磁盘挂载信息

[root@nfs01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  1.8G   17G  10% /
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.7M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda1      1014M  138M  877M  14% /boot
tmpfs            98M     0   98M   0% /run/user/0

(服务端nfs01)挂载到本地/mnt下测试

[root@nfs01 ~]# mount -t nfs 172.16.1.31:/upload /mnt/
[root@nfs01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             18G  1.8G   17G  10% /
devtmpfs             476M     0  476M   0% /dev
tmpfs                487M     0  487M   0% /dev/shm
tmpfs                487M  7.7M  479M   2% /run
tmpfs                487M     0  487M   0% /sys/fs/cgroup
/dev/sda1           1014M  138M  877M  14% /boot
tmpfs                 98M     0   98M   0% /run/user/0
172.16.1.31:/upload   18G  1.8G   17G  10% /mnt

(服务端nfs01)挂载后进行测试

[root@nfs01 ~]# touch /mnt/oldboy.txt
[root@nfs01 ~]# ll /mnt
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:37 oldboy.txt
[root@nfs01 ~]# ll /upload
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:37 oldboy.txt

到这里表示本地测试成功了,这就表示nfs服务配置都是正确的,接下来就去web01上进行挂载测试

(web01客户端)启动nfs服务

[root@web01 ~]# systemctl start nfs

(web01客户端)挂载/upload目录

[root@web01 ~]# mkdir /video
[root@web01 ~]# mount -t nfs 172.16.1.31:/upload  /video

(web01客户端)检查挂载信息

[root@web01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             18G  1.7G   17G  10% /
devtmpfs             476M     0  476M   0% /dev
tmpfs                487M     0  487M   0% /dev/shm
tmpfs                487M  7.7M  479M   2% /run
tmpfs                487M     0  487M   0% /sys/fs/cgroup
/dev/sda1           1014M  138M  877M  14% /boot
tmpfs                 98M     0   98M   0% /run/user/0
172.16.1.31:/upload   18G  1.8G   17G  10% /video

可以看到已经挂载上了,接下来进行测试

(web01客户端)在共享目录创建文件并检查

[root@web01 ~]# touch /video/oldboy{0..3}.txt
[root@web01 ~]# ll /video
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy0.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy2.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy3.txt

(nfs01服务端)进行检查

[root@nfs01 ~]# ll /upload
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy0.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy2.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:44 oldboy3.txt

远程目录已经成功挂载

nfs不使用默认的用户压缩(映射)

(nfs01服务端)编写配置文件

[root@nfs01 ~]# vim /etc/exports
#share /upload
/nfs       172.16.1.0/24(rw,all_squash,anonuid=888,anongid=888)

/nfs==共享目录
172.16.1.0/24==共享的网段
rw==客户端对共享目录的有读写权限
all_squash==对所有用户进行压缩
anonuid=888==映射用户的uid
anongid=888==映射用户的gid
这个表示你访问共享目录是以一个什么身份去访问
如果不指定默认会使用nfsnobody虚拟用户。

(nfs01服务和端web01客户端)创建用户

[root@web01 ~]# groupadd -g 888  www
[root@web01 ~]# useradd -u 888 -g www -s /sbin/nologin -M www
[root@web01 ~]# id www
uid=888(www) gid=888(www) groups=888(www)

示例只演示了web01上的创建用户nfs01上使用同样的命令

(nfs01服务端)创建共享目录

[root@nfs01 ~]# mkdir /nfs
[root@nfs01 ~]# chown www.www /nfs
[root@nfs01 ~]# ll -d /nfs
drwxr-xr-x 2 www www 6 May 22 21:14 /nfs

(web01客户端)创建共享目录

[root@web01 ~]# mkdir /nfs

(web01客户端)进行挂载后检查

[root@web01 ~]# mount -t nfs 172.16.1.31:/nfs  /nfs
You have new mail in /var/spool/mail/root
[root@web01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             18G  1.7G   17G  10% /
devtmpfs             476M     0  476M   0% /dev
tmpfs                487M     0  487M   0% /dev/shm
tmpfs                487M  7.7M  479M   2% /run
tmpfs                487M     0  487M   0% /sys/fs/cgroup
/dev/sda1           1014M  138M  877M  14% /boot
tmpfs                 98M     0   98M   0% /run/user/0
172.16.1.31:/upload   18G  1.8G   17G  10% /video
172.16.1.31:/nfs      18G  1.8G   17G  10% /nfs
[root@web01 ~]# touch /nfs/oldboy.txt
[root@web01 ~]# ll /nfs/oldboy.txt
-rw-r--r-- 1 www www 0 May 22 21:17 /nfs/oldboy.txt

(nfs01服务端)检查

[root@nfs01 ~]# ll /nfs
total 0
-rw-r--r-- 1 www www 0 May 22 21:17 oldboy.txt

对排除有帮助的两个配置文件

服务端nfs配置参数

[root@nfs01 ~]# cat /var/lib/nfs/etab
/nfs    172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=888,anongid=888,sec=sys,rw,secure,root_squash,all_squash)
/upload 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

客户端挂载信息

[root@nfs01 ~]# tail -n1 /proc/mounts
172.16.1.31:/upload /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,

1.实现开机自动挂载

方法1 通过/etc/fstab开机自动挂载

[root@web01 ~]# echo "172.16.1.31:/nfs /nfs  nfs defaults 0 0" >>/etc/fstab  

注意:当将远程挂载设备写入/etc/fstab 文件后 ,一定要执行mount -a

[root@web01 ~]# mount -a
[root@web01 ~]# df -h
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda3          18G  1.7G   17G  10% /
devtmpfs          476M     0  476M   0% /dev
tmpfs             487M     0  487M   0% /dev/shm
tmpfs             487M  7.7M  479M   2% /run
tmpfs             487M     0  487M   0% /sys/fs/cgroup
/dev/sda1        1014M  138M  877M  14% /boot
tmpfs              98M     0   98M   0% /run/user/0
172.16.1.31:/nfs   18G  1.8G   17G  10% /mnt

如何编写错误会有以下提示

[root@web01 ~]# mount ‐a  mount.nfs: access denied by server while mounting 172.16.1.31:/nfs

强制卸载

[root@web01 ~]# umount ‐lf /nfs

方法2 写入开机自启命令文件/etc/rc.local

第一次使用加上执行权限;chmod +x /etc/rc.d/rc.local

开机自动故障的前提是服务端的nfs和rpcbind必须加入开机自启动。

1.扩展:无需重启 NFS 服务平滑加载配置文件

[root@nfs01 r]# cat /etc/exports  /data/r 172.16.1.0/24(ro)  /data/p 172.16.1.0/24(ro)  /data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)    [root@nfs01 r]# exportfs ‐rv  exporting 172.16.1.0/24:/data/w  exporting 172.16.1.0/24:/data/p  exporting 172.16.1.0/24:/data/r

2.扩展:nfs 客户端挂载参数

 [root@backup‐41 ~]# mount.nfs4 ‐o noatime,nodiratime,noexec,nodev,nosuid 172.16.1.31:/data/r /data/r/

这些都是提高磁盘读写性能以及一些安全优化的参数。必须掌握。

4.扩展:客户端检查挂载参数是否生效

[root@backup‐41 ~]# mount  
#等价于  
[root@backup‐41 ~]# cat /proc/mounts 

企业生产场景NFS共享存储优化小结

硬件:sas/ssd磁盘,买多块,硬件raid,制作raid5 (安全,读ok)或raid10。网卡吞吐量要 大,至少千兆(多块bond)。

服务端 配置:

/datal0.0.0.0/24(rw:sync,all_squash:anonuid=65534,anongid=65534) 

客服端挂载优化配置命令

mount -t nfs -0 nosuid, noexec, nodev, noatime, nodiratirae, rsize=131072, wsize=131072 10. 0. 0. 7:/data/  /mnt  <--令兼顾安全性能

对NFS服务的所有服务器内核进行优化吋,执行如下命令:

cat »/etc/sysctl. conf«E0F 
net.core. wmem_default = 8388608 
net. core. rmem_default = 8388608 
net. core. rmem_max = 16777216 
net. core. wmem_max = 16777216
EOF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容