20171016 网络文件共享(二) NFS服务

  • NFS服务介绍
  • NFS配置文件
  • NFS工具
  • 自动挂载
  • 实验:实现基于NFS共享的LAMP wordpress的应用

一、NFS服务介绍

(一)NFS简介

  • NFS(Network File System):网络文件系统,用户和程序可以像访问本地文件一样访问远端系统上的文件

  • NFS基于RPC(Remote Procedure Call)远程过程调用实现,RPC基于C/S架构实现

  • NFS优势:节省本地存储空间

  • NFS发展:目前为v4版本,实现了伪根,增强了安全特性(kerberos)

(二)NFS服务

  • 软件包:nfs-utils,默认系统安装

  • Kernel支持:nfs.ko

  • 服务开启、关闭

    • CentOS 7:systemctl start|stop nfs-server
    • CentOS 6: service nfs start|stop
  • 端口:2049(nfsd),其它端口由portmap/rpcbind(111)分配

    • 使用ss -ntlp命令查看端口,端口111的进程为rpcbind
    • 使用rpcinfo -p查看rpc注册程序,端口111的进程为portmapper
    • CentOS6开始portmap进程由rpcbind代替
  • 配置文件:/etc/exports, /etc/exports.d/*.exports

  • 相关软件包:rpcbind(必须),tcp_wrappers

  • NFS服务主要进程

    • rpc.nfsd:最主要的NFS进程,管理客户端是否可登录
    • rpc.mountd:挂载和卸载NFS文件系统,包括权限管理
    • rpc.lockd:非必要,管理文件锁,避免同时写出错
    • rpc.statd:非必要,检查文件一致性,可修复文件
  • 日志:/var/lib/nfs/

二、NFS配置文件

(一)配置文件格式

  • 格式:/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...

  • /dir: 共享目录路径

  • 主机格式

    • 单个主机:ipv4, ipv6, FQDN
    • IP networks:两种掩码格式均支持
      172.18.0.0/255.255.0.0
      172.18.0.0/16
    • wildcards:主机名通配,例如*.magedu.com,不能应用于IP地址
    • anonymous:表示使用*通配所有客户端
  • 每个条目指定目录导出到的哪些主机,及相关的权限和选项

    • 默认选项:(ro,sync,root_squash,no_all_squash)
    • ro,rw:只读和读写
    • async:异步,数据变化后不立即写磁盘,性能高
    • sync:同步,数据在请求时立即写入共享,安全性高
    • no_all_squash:保留远程用户建立共享文件的UID和GID
    • all_squash:所有远程用户(包括root)都映射成nfsnobody
    • root_squash:远程root映射为nfsnobody,UID为65534
    • no_root_squash:远程root映射成root用户,优先级低于all_squash
    • anonuid和anongid:指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用

(二)实验1:建立NFS共享目录/app/nfsfile1, /app/nfsfile2

  • 实验要求
    /app/nfsfile1目录:192.168.136.0网段的主机可以登录,支持读写,所有用户都映射为testuser
    /app/nfsfile2 目录:只有192.168.136.129主机可以登录,支持读写,远程root映射为root用户

  • 实验步骤:

// 建立testuser用户
useradd testuser
id testuser
uid=1002(testuser) gid=1002(testuser) groups=1002(testuser)

// 编辑NFS服务配置文件
vim /etc/exports.d/nfsfile1.exports
/app/nfsfile1 192.168.136.0/24(rw,all_squash,anonuid=1002,anongid=1002)

vim /etc/exports.d/nfsfile2.exports
/app/nfsfile2 192.168.136.129(rw,no_root_squash)

// 建立相关共享文件目录
mkdir /app/nfsfile1
mkdir /app/nfsfile2
touch /app/nfsfile1/file1
touch /app/nfsfile2/file2
setfacl -R -m u:testuser:rwx /app/nfsfile1

// 重新载入配置
exportfs -r
exportfs -v
  • 实验测试:

    • 挂载共享目录/app/nfsfile1,可以看到root和普通用户都映射为testuser用户(uid=1002, gid=1002)
    • 挂载共享目录/app/nfsfile2,可以看到非192.168.136.129的主机不能成功挂载;挂载成功后,root用户没有被映射为nobody,而普通用户由于之前在NFS服务器上未设置写权限,无权建立文件,说明NFS服务支持读写需要NFS服务和服务器文件系统两方面同时授权才可以

(三)实验2:实现NFS伪根

  • NFS客户端通常需要分别挂载NFS服务器上的共享目录

  • 在NFS服务器建立伪根目录,将需要共享的目录全部挂载到伪根目录上,即可实现NFS客户端一次性将不同目录挂载到一个挂载点上

  • 实验:通过NFS伪根一次性挂载共享目录/app/ftpsite和/var/log

// 建立伪根目录
mkdir /exports
mkdir /exports/ftpsite
mkdir /exports/log

// 将共享目录挂载到伪根目录的子目录
mount -B /app/ftpsite /exports/ftpsite/
mount -B /var/log /exports/log/
setfacl -m u:nfsnobody:rwx /app/ftpsite     // 给远程主机root用户开放写权限

// 编辑配置文件
vim /etc/exports
/exports *(fsid=0,rw,crossmnt)
/exports/ftpsite *(rw)
/exports/log    *(ro)

// 配置文件生效
exportfs -r

可以看到,/exports目录充当了伪根,实现多个目录一次挂载,并且每个目录的配置都生效了:ftpsite目录可以写入,log目录不可以写入文件

三、NFS工具

  • rpcinfo

    • rpcinfo -p hostname:详细列明RPC注册程序
    • rpcinfo -s hostname:简略列明RPC注册程序
  • exportfs

    • -v:查看本机所有NFS共享
    • -r:重读配置文件并共享目录
    • -a:输出本机所有共享
    • -au:停止本机所有共享
  • showmount -e hostname:显示远程主机NFS共享目录

四、自动挂载

(一)autofs服务简介

  • autofs服务:按需要挂载,在空闲时自动卸载
  • 由autofs包提供
  • 自动挂载的配置文件:/etc/auto.master
  • 文件系统在失活的指定间隔5分钟后会自动卸载

(二)autofs配置

(1)相对路径描述
  • 格式:
    /etc/auto.master文件格式:挂载点的目录名 /etc/auto.direct
    /etc/auto.direct文件格式:挂载点的基名 被挂载目录或设备
    注释:/etc/auto.direct文件仅为示例,文件名称没有要求

  • 相对路径时支持含通配符的目录名:* server:/export/&

(2)绝对路径描述
  • 格式:
    /etc/auto.master文件格式:/- /etc/auto.direct
    /etc/auto.direct文件格式:挂载点路径 被挂载目录或设备
(3)实验:利用autofs实现远程家目录的自动挂载
  • 本实验由2台主机完成:
    主机1:NFS服务器
    主机2:NFS客户端,安装autofs服务,CentOS 7系统
    主机3:NFS客户端,安装autofs服务,CentOS 6系统

  • 步骤1:NFS服务器上设置共享家目录

mkdir -p /app/homedir/{wang,mage}
cp -r /etc/skel/.[^.]* /app/homedir/wang/
cp -r /etc/skel/.[^.]* /app/homedir/mage/
  • 步骤2:查询NFS客户端上用户wang和mage的uid和gid
// 主机2上的用户ID情况
id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang)
id mage
uid=1002(mage) gid=1002(mage) groups=1002(mage)
// 主机3上的用户ID情况
id wang
uid=502(wang) gid=502(wang) groups=502(wang)
id mage
uid=503(mage) gid=503(mage) groups=503(mage)
  • 步骤3:NFS服务器上根据不同系统的用户ID情况,分别给共享家目录添加权限
useradd -u 1001 wang
useradd -u 1002 mage
useradd -u 502 wang6
useradd -u 503 mage6
setfacl -R -m u:wang:rwx /app/homedir/wang/
setfacl -R -m u:wang6:rwx /app/homedir/wang/
setfacl -R -m u:mage:rwx /app/homedir/mage/
setfacl -R -m u:mage6:rwx /app/homedir/mage/
  • 步骤4:NFS服务器上编辑NFS配置文件并更新读入配置
vim /etc/exports.d/wang.exports
/app/homedir/wang *(rw)
vim /etc/exports.d/mage.exports
/app/homedir/mage *(rw)

exportfs -r
  • 步骤5:NFS客户端上配置autofs服务
// 两台主机均执行以下操作
vim /etc/auto.master
/home   /etc/auto.direct             // 添加一行
vim /etc/auto.direct
* 192.168.136.230:/app/homedir/&     // 添加一行
// 按照系统执行
systemctl restart autofs             // CentOS 7
service autofs restart               // CentOS 6
  • 测试:

    • 在主机2(CentOS 7)上进入/home/wang目录,切换至wang账号,建立wangfile文件
    • 在主机3(CentOS 6)上进入/home/wang目录,可以看到wangfile文件,但由于本机没有uid=1001的账号,故UID直接显示数字
    • 在主机3(CentOS 6)上进入/home/mage目录,切换至mage账号,建立magefile文件
    • 在主机2(CentOS 7)上进入/home/mage目录,可以看到magefile文件,但由于本机没有uid=503的账号,故UID直接显示数字
    • 使用NFS建立远程家目录,如果可能,最好统一不同系统下相同用户的uid,便于后期管理

五、实验:实现基于NFS共享的LAMP wordpress的应用

(一)实验环境:本实验需要4台主机

  • 主机1:httpd服务器1,IP: 192.168.136.230
  • 主机2:httpd服务器2,兼做mysql数据库,IP: 192.168.136.130
  • 主机3:NFS服务器,存储httpd服务器网页数据,包含WordPress应用,IP: 192.168.136.229
  • 主机4:DNS服务器,IP: 192.168.136.129

(二)步骤1:在主机3上配置nfs服务

mkdir -p /app/www/html
setfacl -R -m u:apache:rwx /app/www/html
service nfs start
vim /etc/exports
/app/www/html 192.168.136.0/24(rw,all_squash,anonuid=48,anongid=48)
exportfs -r
exportfs -v

(三)步骤2:在主机1, 2上配置httpd服务,安装php-fpm

// 以下步骤在主机1, 2上操作相同
yum install httpd php-fpm
vim /etc/fstab

vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1向代理
systemctl start php-fpm.service 
systemctl start httpd

(三)步骤3:在主机2上安装mysql服务

yum install mariadb-server
systemctl start mariadb
mysql_secure_installation

(四)步骤4:在主机3的httpd共享目录上测试与php与mysql的连接

vim /var/www/html/index.php
<?php
$mysqli=new mysqli("192.168.136.130","root","centos");
if(mysqli_connect_errno()){
  echo "连接数据库失败!";
  $mysqli=null;
  exit;
}
echo "连接数据库成功!";
$mysqli->close();
phpinfo();
?>

(五)步骤5:在主机3的httpd共享目录上安装WordPress

tar -xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html/

(六)步骤6:在主机4上实现DNS服务

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

推荐阅读更多精彩内容