NFS网络文件系统

NFS Network File System

用途:作为服务端向其他服务器提供共享目录.
客户端可以通过网络,将共享目录挂载到本地文件系统上.
挂载方法 mount -t nfs 192.168.1.110:/data/share /mnt
挂载后查看本地基本挂载信息 df -h
这种网络文件系统常用于中小企业(3000WPV),而大型企业可能会用到Moosefs(mfs),glusterfs,FastDFS.
而这些文件系统的主要功能为:存储静态资源文件,如图片,附件,头像
NFS服务有很多子服务,有固定端口的2049 nfs,也有很多非固定端口的服务,这些注册信息被rpcbind服务管理.所以,在运行NFS服务之前,应先开启rpcbind服务供其注册,rpcbind主服务端口为111!

为什么企业集群架构需要共享存储?

常见组合

在Web服务器集群中,如果没有共享存储,某一台Web服务器上并没有存储其他Web服务器上的静态资源时,
会出现资源访问不到的情况,例如,用户上传到Web1一张图片,而下次请求Web2访问图片时,Web2上并没
有刚刚上传的资源,所以访问不到资源.
解决方案:
1.Web服务器之间时时同步(浪费带宽,空间,资源)
2.共享存储(最优选择)

NFS/rpcbind原理图

NFS/rpcbind原理图

安装

规划:
角色 名称 IP
服务端 NFS_Server * . * . * .1
客户端 LAMP_Server * . * . * .2
客户端 LNMP_Server * . * . * .3
批量查看环境:

cat /etc/redhat-release //系统版本
uname -r //内核版本
uname -m //操作系统位数

软件列表:

nfs-utils:NFS主程序
rpcbind:RPC主程序

安装方法:

yum install -y nfs-utils rpcbind
主客户端均要安装,按理来说客户端无需装nfs-utils,但是客户端会用到showmount命令.

启动:

/etc/init.d/rpcbind start//启动rpcbind
/etc/init.d/rpcbind status//查看rpcbind状态
lsof -i :111//查看端口
netstat -lntup|grep rpcbind//查看端口
rpcinfo -p localhost//查看rpc注册端口信息
/etc/init.d/nfs start//启动nfs并向rpc注册
/etc/init.d/rpcbind status//查看rpcbind状态
netstat -lnupt | grep 2049//查看nfs端口信息
/etc/init.d/rpcbind start/etc/init.d/nfs start写入/etc/rc.loacl做一个自启动

NFS服务进程说明

ps -ef | egrep "rpc|nfs"

rpc       6668     1  0 19:58 ?        00:00:00 rpcbind
root      6742     2  0 20:00 ?        00:00:00 [rpciod/0]
root      6751     1  0 20:00 ?        00:00:00 rpc.rquotad //磁盘配额进程
root      6756     1  0 20:00 ?        00:00:00 rpc.mountd  //权限管理验证
root      6763     2  0 20:00 ?        00:00:00 [nfsd4]
root      6764     2  0 20:00 ?        00:00:00 [nfsd4_callbacks]
root      6765     2  0 20:00 ?        00:00:00 [nfsd]
root      6766     2  0 20:00 ?        00:00:00 [nfsd]
root      6767     2  0 20:00 ?        00:00:00 [nfsd]
root      6768     2  0 20:00 ?        00:00:00 [nfsd]
root      6769     2  0 20:00 ?        00:00:00 [nfsd]  //nfs主进程,id身份判定
root      6770     2  0 20:00 ?        00:00:00 [nfsd]
root      6771     2  0 20:00 ?        00:00:00 [nfsd]
root      6772     2  0 20:00 ?        00:00:00 [nfsd]
root      6803     1  0 20:00 ?        00:00:00 rpc.idmapd
NFS配置文件

/etc/exports
格式:
共享目录 + 主机名/地址/通配符 + (参数)

# sample /etc/exports file
   /               master(rw) trusty(rw,no_root_squash)
   /projects       proj*.local.domain(rw)
   /usr            *.local.domain(ro) @trusted(rw)
   /home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
   /pub            *(ro,insecure,all_squash)
   /srv/www        -sync,rw server @trusted @external(ro)
   /foo            2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
   /build          buildhost[0-9].local.domain(rw)
共享参数
rw                              可读写
ro                              只读
sync                            同步写入磁盘(性能不好,但不丢数据)
async                           异步写入(性能好,断电会丢数据)
no_root_squash                  客户端为root,不会压缩root为nfsnobody,权限太大,慎用
root_squash                     客户端为root时会压缩root为nfsnobody
all_squash                      客户端为任何用户都会压缩为nfsnodoy用户
anonuid=UID                     压缩为UID的用户
anongid=GID                     压缩为GID的用户

exportfs -rv
/etc/init.d/nfs reload //两个平缓加载重启NFS的命令

showmount -e IPADDRESS //查看某主机的共享目录
mount -t nfs localhost:/data //挂载共享目录

mount
cat /proc/mounts //查看挂载信息

cat /var/lib/nfs/etab //显示nfs共享参数
df -h //查看挂载资源

默认情况下,客户端访问NFS文件系统时,用户被压缩成默认uid65534 nfsnobody的用户.
所以,需要将共享目录的属主数组改为nfsnobody.

常见故障排查

1.确认服务是否启动
2.本地showmount一下,有可能防火墙挡住了
3.ping链路
4.服务启动顺序 rpcbind-->nfs
5.共享目录是否创建
6.如果文件无法创建,查看下nfs共享权限以及服务端本地权限.
7.注意.服务端挂掉,客户端挂载会hang住.

客户端挂载参数
fg/bg(默认fg)                 挂载时选择前台/后台(挂载请求会一直持续,后台不会影响前台操作)
soft/hard(默认hard)           soft挂载不上不再尝试挂载,hard会持续尝试挂载
intr                            hard方式在配合intr时,超时可以将挂载程序中断
rsize/wsize                     读写块大小,用于提升性能!
proto=tcp/udp                   协议,可靠/不可靠  
async                           异步操作写入磁盘
sync                            同步写入磁盘
ro                              只读方式挂载
rw                              读写方式挂载
auto                            能否通过mount -a 自动挂载
default(rw,suid,dev,exec,auto,nouser,async)    默认挂载参数
exec/noexec                     文件系统中的二进制程序能否执行(安全优化)
noatime                         不更新inode,高并发最好选用这个参数
nodiratime                      不更新dirinode,高并发使用
suid/nosuid                     支持/不支持suid
remount                         用于修复文件系统因fstab修改错误无法启动故障,具体案例见下文
                                救援模式下,mount -o rw,remount / ,然后修改fstab
建议:默认或以下挂载方式
mount -t nfs -o bg,hard,intr,rsize=131072,wsize=131072 IP_ADDR:/data
一个挂载案例
1. 重启系统看是否可以自动修复。

2. 使用fsck -y /dev/sda1 进行自动修复。(用”-y”选项来执行该命令对硬盘进行检查和修复)
   添加参数:fsck -y -C -t ext3 /dev/sda1 (一般情况下修复完成后,所有文件移动到 lost+found目录,文件名会被改变)  
     (-C 显示进度条 -t 指定文件系统类型 -y 默认自动yes修复)

3. 如果fsck修复完成后,启动系统依然自读。
    查看分区结构:
    [root@localhost ~]# more /etc/fstab

    [root@localhost ~]# more /proc/mounts

    [root@localhost ~]# mount
    /dev/sda2 on / type ext3 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    查看ro挂载的分区,如果发现有ro,就重新mount
    umount /dev/sda1
    mount /dev/sda1 /boot
    如果发现有提示“device is busy”,找到是什么进程使得他busy
    fuser -m /boot 将会显示使用这个模块的pid
    fuser -mk /boot 将会直接kill那个pid
    然后重新mount即可。

4. 直接remount
  [root@localhost ~]# mount -o rw,remount /dev/sda1 
NFS优化

安全挂载:mount -t nfs -o nosuid,noexec,nodev,rw IP_ADDR:/data /mnt
性能挂载:mount -t nfs -o noatime,nodiratime IP_ADDR:/data /mnt
安全+性能:mount -t nfs -o nosuid,nodev,noexec,rw,noatime,nodiratime IP_ADDR:/data /mnt

针对NFS对内核进行优化

//调大套接字接受/发送缓冲区大小,来自官方

cat >>/etc/sysctl.conf<<EOF
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_max=16777216
NFS硬件选择

SAS/SSD磁盘多块,做raid0/10,网卡至少千兆,多块bond.

强制卸载卸载不掉的文件系统

umount -lf

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

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,735评论 0 10
  • 网络文件系统(英语:Network File System,缩写为NFS)是一种分布式文件系统协议,最初由Sun ...
    uangianlap阅读 732评论 0 0
  • 《鸟哥Linux私房菜》《老男孩Linux运维》 NFS介绍 NFS维基百科:网络文件系统(英语:Network ...
    Zhang21阅读 4,234评论 0 13
  • NFS的配置过程很简单。在服务器端中编辑/etc/exports文件,添加如下内容: /home/nfs-s...
    bycall阅读 5,193评论 0 1
  • 做了多年的学生,又教了这么多年的学生,我发现了一个有趣的现象:每次考试后,如果某生自我感觉考题很容易,做得又快又顺...
    姑射山秋水阅读 904评论 0 1