nfs文件系统服务器,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!

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

1bdcf6e3fa1f

常见组合

在Web服务器集群中,如果没有共享存储,某一台Web服务器上并没有存储其他Web服务器上的静态资源时,

会出现资源访问不到的情况,例如,用户上传到Web1一张图片,而下次请求Web2访问图片时,Web2上并没

有刚刚上传的资源,所以访问不到资源.

解决方案:

1.Web服务器之间时时同步(浪费带宽,空间,资源)

2.共享存储(最优选择)

NFS/rpcbind原理图

1bdcf6e3fa1f

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<

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值