zoukankan      html  css  js  c++  java
  • NFS储存服务器

    NFS储存服务器
    NFS服务介绍
    NFS是Network File System的缩写,中文意思是网络共享文件系统,它的主要功能是通过网络(一般是局域网)
    让不同的主机系统之间可以共享文件或目录
    如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS、FastDFS
    为什么用NFS网络文件存储系统?
    1)实现数据信息统一一致
    2)节省局域网数据同步传输的带宽
    3)节省网站架构中服务器硬盘资源
    共享存储方式
    01:硬件实现共享存储
    IBM Oracle EMC:====去IOE
    02:软件实现共享存储
    NFS FTP
    NFS系统存储原理介绍
    01:在NFS服务端创建共享目录:
    02:通过mount网络挂载,将NFS客户端本地目录挂载到NFS服务端共享目录上
    03:NFS客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建、删除、查看操作
    什么是RPC rpc
    RPC服务(远程调用服务)相当于中介,NFS相当于房源,NFS客户端相当于租客
    RPC服务(远程调用服务)相当于中介,NFS服务端与NFS客户端起到一个中介的作用,不便于客户端管理,因此需利用RPC 服务统一管理。
    RPC服务用于管理端口,由于NFS服务启动的时候会产生多个端口
    [root@nfs01 ~]# ps -ef |grep -E "nfs|rpc"
    rpcuser 1239 1 0 08:32 ? 00:00:00 rpc.statd
    rpc 2134 1 0 15:46 ? 00:00:00 rpcbind
    root 2182 2 0 15:47 ? 00:00:00 [rpciod/0]
    root 2191 1 0 15:47 ? 00:00:00 rpc.rquotad
    root 2196 1 0 15:47 ? 00:00:00 rpc.mountd
    root 2203 2 0 15:47 ? 00:00:00 [nfsd4]
    root 2204 2 0 15:47 ? 00:00:00 [nfsd4_callbacks]
    root 2205 2 0 15:47 ? 00:00:00 [nfsd]
    root 2206 2 0 15:47 ? 00:00:00 [nfsd]
    root 2207 2 0 15:47 ? 00:00:00 [nfsd]
    root 2208 2 0 15:47 ? 00:00:00 [nfsd]
    root 2209 2 0 15:47 ? 00:00:00 [nfsd]
    root 2210 2 0 15:47 ? 00:00:00 [nfsd]
    root 2211 2 0 15:47 ? 00:00:00 [nfsd]
    root 2212 2 0 15:47 ? 00:00:00 [nfsd]
    root 2243 1 0 15:47 ? 00:00:00 rpc.idmapd
    root 2513 1312 0 19:18 pts/0 00:00:00 grep --color=auto -E nfs|rpc
    [root@nfs01 ~]#
    NFS服务部署过程
    服务端部署
    第一个里程碑:检查NFS rpcbind(portmap-centos5)有没安装
    默认没有安装
    [root@nfs01 scripts]# rpm -qa nfs-utils rpcbind
    第二个里程碑:安装nfs-utils rpcbind
    [root@nfs01 ~]# yum install -y nfs-utils rpcbind
    [root@nfs01 scripts]# rpm -qa nfs-utils rpcbind
    rpcbind-0.2.0-13.el6_9.1.x86_64
    nfs-utils-1.2.3-75.el6_9.x86_64
    [root@nfs01 scripts]#
    第三个里程碑:进行NFS编写配置文件
    vim /etc/exports ---NFS配置文件
    /data/ 172.16.1.0/24(rw,sync)
    存储目录信息 允许哪些主机进行数据存储 (权限参数) NFS编写配置文件格式
    可以共享目录权限参数信息(ro rw )
    1.1 影响NFS共享目录权限因素
    01:和服务端的配合文件参数有关:
    02 和共享目录本身权限有关
    第四个里程碑:创建共享目录并授权权限
    mkdir -p /data
    chown -R nfsnobody.nfsnobody /data
    第五个里程碑:启动程序服务
    6启动 /etc/init.d/rpcbind start 7启动 service rpcbind restart
    6启动 /etc/init.d/nfs start 7启动 service nfs restart
    第六个里程碑:检查nfs服务端口是否已经进行注册
    rpcinfo -p 10.0.0.31 检查房源信息是否向中介已经注册
    客户端部署
    第一个里程碑:检查NFS rpc
    默认没有安装
    [root@nfs01 ~]# rpm -qa |grep nfs
    [root@nfs01 ~]# rpm -qa |grep rpc
    xmlrpc-c-1.16.24-1210.1840.el6.x86_64
    xmlrpc-c-client-1.16.24-1210.1840.el6.x86_64
    [root@nfs01 ~]#
    第二个里程碑:安装NFS rpc
    [root@nfs01 ~]# yum install -y nfs-utils rpcbind
    第三步里程碑;检查有没有可以共享的目录
    showmount -e 10.0.0.31
    showmount -e 172.16.1.31
    [root@backup ~]# showmount -e 10.0.0.31
    Export list for 10.0.0.31:
    /data 172.16.1.0/24
    [root@backup ~]#
    客户端必须和服务端通的
    第四个里程碑:进行远程共享目录挂载
    检测是否存在共享目录,进行共享目录挂载
    mount -t nfs 172.16.1.31:/data /mnt
    df -h
    [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
    root@backup ~]# # mount -t 指定挂载文件系统类型nfs 指定存储服务器地址信息:共享目录 本地挂载点路径信息
    [root@backup ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 19G 1.9G 16G 11% /
    tmpfs 238M 0 238M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    172.16.1.31:/data 19G 1.8G 16G 11% /mnt
    [root@backup ~]#
    第四个里程碑:进行存储数据信息测试
     
    NFS 和RPC服务软件都干了什么
    /etc/rc.d/init.d/nfs 生成服务启动脚本命令文件
    /usr/sbin/exportfs
    /usr/sbin/showmount 生成查看共享目录列表信息
    rpm -ql rpcbind
    /etc/rc.d/init.d/rpcbind 生成服务器脚本文件 启动脚本命令
    /usr/sbin/rpcinfo 生成查看房源信息命令文件 查看NFS注册信息
    总结:nfs-utils和rpcbind软件必须也要安装在nfs客户端
    01. 客户端不安装nfs软件无法识别nfs文件类型
    02. 客户端不安装nfs和rpc软件,无法使用rpcinfo和showmount命令,进行查看服务端信息
    NFS服务端详细讲解
    配置文件编写说明
    1. 配置文件编写说明
    NFS 共享目录 NFS客户端地址(参数1,参数2,...)
    /data 172.16.1.0/24(参数1)
    /data 10.0.0.0/24(参数1)
     
    共享目录影响权限的因素
    01. nfs配置文件中权限参数会影响共享目录权限
    02. nfs服务端共享目录本身权限也会影响目录目录权限
    NFS配置的参数
    共享文件系统用户压缩映射原理:rpc.idmapd
    rw 表示可读可写权限
    ro 表示只读权限
    sync 同步 直接写到硬盘中 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回
    优点:数据安全不会丢
    缺点:性能比不启用该参数要差
    async 异步 先把数据写到内存的缓冲区 磁盘有空间了在把数据放到硬盘中
    说明:修改映射后的默认用户信息
     
    root_squash <-- 将root用户映射为相应nfsnobody用户
    no_root_squash <-- 将root用户不映射为相应nfsnobody用户
    all_squash <-- 将所有用户映射为相应nfsnobody用户
    no_all_squash <-- 将所有用户不映射为相应nfsnobody用户
     
    第一种情况配置:all_squash
    vim /etc/exports
    /data/ 172.16.1.0/24(rw,sync,all_squash)
     
    # 配置文件修改,重启nfs服务
    /etc/init.d/nfs reload <-- 平滑重启
     
    银行 9:00 - 17:00
    一种人 在银行里面 16:50 17:00 17:30 业务办完再轰走
     
    一种人 去银行 16:50 17:00 17:10 已经到了关门时间,我就不会让你进来
     
    [root@backup mnt]# touch root.txt
    [root@backup mnt]# ll
    total 0
    -rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 16:26 oldboy.txt
    -rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 17:46 root.txt
     
    [oldboy@backup mnt]$ touch oldgirl.txt
    [oldboy@backup mnt]$ ll
    total 0
    -rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 16:26 oldboy.txt
    -rw-rw-r-- 1 nfsnobody nfsnobody 0 Mar 22 17:47 oldgirl.txt
    -rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 17:46 root.txt
     
    第二种情况配置:no_all_squash,root_squash
    vim /etc/exports
    /data/ 172.16.1.0/24(rw,sync,no_all_squash,root_squash)
    /etc/init.d/nfs reload
    [oldboy@backup ~]$ cd /mnt
    [oldboy@backup mnt]$ touch oldboy02.txt
    touch: cannot touch `oldboy02.txt': Permission denied
    [oldboy@backup mnt]$ touch oldboy02.txt
    [oldboy@backup mnt]$ ll
    total 0
    -rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:54 oldboy02.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 16:26 oldboy.txt
    -rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:47 oldgirl.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:51 root02.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:46 root.txt
     
    第三种情况:no_root_squash
    vim /etc/exports
    /data/ 172.16.1.0/24(rw,sync,no_all_squash,no_root_squash)
    [root@backup mnt]# touch root03.txt
    [root@backup mnt]#
    [root@backup mnt]# ll
    total 0
    -rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:54 oldboy02.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 16:26 oldboy.txt
    -rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:47 oldgirl.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:58 root02.txt
    -rw-r--r-- 1 root root 0 Mar 22 17:58 root03.txt
    -rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:46 root.txt
     
    项目实践:修改nfs默认匿名用户信息oldboy
    anonuid
    annogid
    项目实践:修改nfs默认匿名用户信息oldboy
    nfs客户端操作流程:root 所有用户
    客户端
    第一个历程:创建出要映射的用户信息
     
    nfs服务端操作流程:
    第一个历程:创建默认匿名用户
    useradd oldboy -s /sbin/nologin -M -u 500
     
    第二个历程:编写配置文件
    vim /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=500,anongid=500)
    chown -R oldboy.oldboy /data/
     
    第三个历程:重启nfs服务(平滑重启)
    /etc/init.d/nfs reload
     
    如果没有写参数就默认是anonuid=65534,anongid=65534
    [root@nfs01 /]# cat /var/lib/nfs/etab
    /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash)
    [root@nfs01 /]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash)
    [root@nfs01 /]# id nfsnobody
    uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
    实践练习题
    02. 实践练习题
    服务端上面要求:
    nfs服务器172.16.1.31,共享下面两个目录:
    /data/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户
    /data/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户
     
    客户端上面要求:
    backup服务器 把NFS服务器的/data/r 挂载到/data/r
    web01服务器 把NFS服务器的/data/w 挂载到/data/w
     
    nfs服务端:
    第一个历程:编写配置文件
    vim /etc/exports
    /data/w 172.16.1.0/24(rw,sync,all_squash)
    /data/r 172.16.1.0/24(ro,sync,all_squash)
     
    第二个历程:创建存储目录,修改目录权限
    mkdir /data/{w,r} -p
    chown -R nfsnobody.nfsnobody /data/
     
    第三个历程:平滑重启nfs服务
    /etc/init.d/nfs reload
     
    nfs客户端:
    第一个历程:创建挂载点目录
    mkdir /data/{w,r} -p
     
    第二个历程:进行共享目录挂载
    backup
    mount -t nfs 172.16.1.31:/data/r /data/r
    web01
    mount -t nfs 172.16.1.31:/data/w /data/w
     
    说明:在这是nfs共享目录时,会有子集目录继承父亲目录的权限问题
    尽量在配置共享目录时,避免目录继承权限问题,不要上级目录和子集目录同时存在
    NFS服务端知识总结
    /usr/sbin/exportfs <-- nfs服务端管理命令
    ①. 管理nfs服务运行情况
    /usr/sbin/exportfs -vr
    ②. 管理配置共享目录信息
    exportfs -o rw,sync 172.16.1.0/24:/data <-- 命令配置知识临时生效
     
    /var/lib/nfs/etab
    说明:nfs服务端默认配置信息记录文件
    /etc/exports
    说明:nfs服务端配置文件
     
    /proc/mounts????
    说明:nfs客户端默认参数记录文件
    04. NFS客户端详细知识点
    umount -lf /data/r
    -l Lazy unmount 懒惰卸载参数
    -f Force unmount 强制卸载参数
     
    问题
    02. 共享目录挂载很卡
    mount -t nfs 172.16.1.31:/data /mnt
    cd /mnt
    time touch test.txt
    原因分析:
    l NFS服务端重启之后。立刻进行挂载会出现此问题,因为NFS自身重启的时候,拥有无敌的时间,默认是90秒;在无敌时间内,是不能对共享目录进行更改的操作;
    l 在系统配置中/etc/sysconfig/nfs中指定了无敌时间的配置参数
    NFSD_V4_GRACE=90
    NFSD_V4_LEASE=90
    NLM_GRACE_PERI0D=90
     
     
     
    NFS客户端自动挂载
    05. NFS客户端自动挂载
    ①. 利用/etc/rc.local文件实现开机自动挂载
    echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
    ②. 利用fstab文件实现开机自动挂载
    tail -1 /etc/fstab
    172.16.1.31:/data /mnt nfs defaults 0 0
    chkconfig netfs on
    企业真实案例:整个系统都是只读
    01:文件系统出现问题了
    mount -o remount,rw /
    02:硬件磁盘出现问题了
    尽量找数据恢复公司
     

  • 相关阅读:
    Super Jumping! Jumping! Jumping!(求最大上升子序列和)
    HZNU1837——一道简单的方程
    C
    B
    A
    bfs-Find a way
    bfs——Red and Black
    dfs——n皇后问题
    dfs——n皇后问题
    python画图中colorbar设置刻度和标签字体大小
  • 原文地址:https://www.cnblogs.com/xy51/p/14445598.html
Copyright © 2011-2022 走看看