日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是NFS?

NFS本質就是一個共享存儲,文件服務器。

一、NFS基本概述

NFS是Network File System的縮寫即網絡文件系統。NFS主要功能是通過局域網絡讓不同的主機系統之間可以共享文件或目錄。

NFS系統和windows網絡共享、網絡驅動器類似, 只不過windows用于局域網, NFS用于企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統glusterfs(大文件ISO鏡像等),ceph,oss(阿里云的存儲系統)

為什么使用NFS

1.實現多臺服務器之間數據共享

2.實現多臺服務器之間數據一致

二、NFS應用

1)沒有NFS時:

1.A用戶上傳圖片經過負載均衡,負載均衡將上傳請求調度至WEB1服務器上。

2.B用戶訪問A用戶上傳的圖片,此時B用戶被負載均衡調度至WEB2上,因為WEB2上沒有這張圖片,所以B用戶無法看到A用戶傳的圖片。

 

知識點---NFS服務

 

 

2)如果有NFS

1.A用戶上傳圖片無論被負載均衡調度至WEB1還是WEB2, 最終數據都被寫入至共享存儲

2.B用戶訪問A用戶上傳圖片時,無論調度至WEB1還是WEB2,最終都會上共享存儲訪問對應的文件,這樣就可以訪問到資源了

知識點---NFS服務

 

3)NFS工作原理
 

知識點---NFS服務

 

1.用戶訪問NFS客戶端,將請求轉化為函數

2.NFS通過tcp/ip連接服務器

3.NFS服務端接收請求,會先調用portmap進程進行端口映射

4.Rpc.nfsd進程用于判斷NFS客戶端能否連接到服務端

5.Rpc.mount進程用于判斷客戶端對服務端的操作權限

6.如果通過權限驗證,可以對服務端進行操作,修改或讀取等

三、NFS實踐

1、環境準備:

主機 ip 角色

web01 172.16.1.7 NFS客戶端

NFS 172.16.1.31 NFS服務端

2、服務端(172.16.1.31)

1)關閉防火墻與selinux

2)安裝NFS和rpcbind

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

注意:

centos6需要安裝rpcbind

centos7默認已經安裝好了rpcbind,并且默認開機自啟動

3)配置nfs

#nfs的默認配置文件是:/etc/exports
#配置nfs配置文件
vim /etc/exports
/data 172.16.1.0/24(rw sync all_squash)

語法拆分:

/data #nfs服務端的共享目錄

172.16.1.0/24 nfs允許連接的客戶端ip

(rw sync all_squash) 允許操作的權限

4)創建共享目錄

[root@nfs ~]# mkdir /data

5)啟動服務

#centos7啟動

[root@nfs ~]# systemctl start rpcbind nfs

#centos6啟動時一定要先啟動rpcbind,在啟動nfs

[root@nfs ~]# /etc/init.d/rpcbind start

[root@nfs ~]# /etc/init.d/nfs start

[root@nfs ~]# service rpcbind start

[root@nfs ~]# service nfs start

#驗證啟動

[root@nfs ~]# netstat -ntlp | grep rpc

tcp 0 0 0.0.0.0:36234 0.0.0.0:* LISTEN 2041/rpc.statd

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2030/rpcbind

tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 2067/rpc.mountd

tcp6 0 0 :::46149 :: LISTEN 2041/rpc.statd

tcp6 0 0 :::111 :: LISTEN 2030/rpcbind

tcp6 0 0 :::20048 :: LISTEN 2067/rpc.mountd

6)驗證nfs配置

[root@nfs ~]# cat /var/lib/nfs/etab

/data172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)

#出現以上內容即為配置成功

3、客戶端

1)關閉防火墻與selinux

2)安裝rpcbind服務

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

#注意:

centos6需要安裝rpcbind

centos7默認已經安裝好了rpcbind,并且默認開機自啟動

安裝rpcbind是為了連接服務端的進程,安裝nfs-utils是為了使用showmount命令

3)查看掛載點

[root@web01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24

4)掛載

[root@web01 ~]# mount -t nfs

172.16.1.31:/data /backup

命令拆分:

mount #掛載命令

-t #指定掛載的文件類型

nfs #nfs文件類型

172.16.1.31: #服務端的IP地址

/data 服務端提供的可供掛載的目錄

/backup 本地要掛載到服務端的目錄

[root@web01 ~]# df -h #查看掛載結果

Filesystem Size Used Avail Use% Mounted on

devtmpfs 979M 0 979M 0% /dev

tmpfs 991M 0 991M 0% /dev/shm

tmpfs 991M 9.5M 981M 1% /run

tmpfs 991M 0 991M 0% /sys/fs/cgroup

/dev/mApper/centos-root 18G 3.1G 15G 17% /

/dev/sda1 1014M 163M 852M 17% /boot

tmpfs 199M 0 199M 0% /run/user/0

172.16.1.31:/data 18G 3.1G 15G 18% /backup

5.寫入數據進行測試

#若沒有授權,沒有客戶端權限寫入

[root@web01 ~]# touch /backup/123.txt

touch: cannot touch ‘/backup/123.txt’: Permission denied

#服務端授權

[root@nfs ~]# chown -R nfsnobody.nfsnobody /data

#客戶端再次寫入即可

[root@web01 ~]# touch /backup/123.txt

#服務端查看,若文件相同同步完成

[root@nfs ~]# ls /data

123.txt

四、nfs掛載與卸載

NFS客戶端的配置步驟也十分簡單。先使用showmount命令,查詢NFS服務器的遠程共享信息,其輸出格式為“共享的目錄名稱 允許使用客戶端地址

NFS掛載:客戶端的目錄僅僅是服務端共享目錄的一個入口,真正的數據全都是在服務端的目錄,客戶頓寫入的數據也是在服務器存儲的

注意事項:

1.掛載目錄后,原文件里的內容并沒有消失,只是被遮蓋(像藏起來了)取消掛載后仍然存在

2.取消掛載時,不要在掛載目錄下操作目錄本身,否則會提示操作忙碌,切換到其他目錄在進行卸載即可

3.掛載時如果在掛載目錄下,還是可以看到掛載前的目錄下文件

,需要重新進入目錄才會顯示掛在后的目錄內容

開機掛載(此處一定要仔細,初學者慎用)

如果希望NFS文件共享服務能一直有效,則需要將其寫入到客戶端fstab文件中

#編輯fstab文件

[root@web01 ~]# vim /etc/fstab

172.16.1.31:/data /nfsdir nfs defaults 0 0

#驗證fstab是否寫正確

[root@web01 ~]# mount -a

1

2

3

4

5

6

卸載:

#卸載的兩種方式

[root@web01 ~]# umount /backup

[root@web01 ~]# umount 172.16.1.31:/data

#強制卸載(一般不建議使用,特定場景下使用)

[root@web01 ~]# umount -lf /backup

nfs配置詳解

[root@nfs ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash)

知識點---NFS服務

 

五、NFS案例

1、backup

#安裝rsync
[root@backup ~]# yum install rsync -y
[root@backup ~]# yum install -y nfs-utils rpcbind

#編寫rsync服務端配置文件
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync 
port = 873 
use chroot = no
fake super = yes
max connections = 200
timeout = 600
ignore errors     
read only = false
list = false      
auth users = yzl
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
[backup]
comment = welcome to oldboyedu backup!
path = /backup
#創建rsync服務需要使用的普通用戶
[root@backup ~]# useradd rsync
#將用戶名和密碼寫入rsync密碼文件
[root@backup ~]# echo "yzl:1" >/etc/rsync.passwd
#將服務端密碼文件權限設置為600
[root@backup ~]# chmod 600 !$
#創建模塊目錄,并將其屬組、屬主更改為普通用戶
[root@backup ~]# mkdir /backup
#授權
[root@backup ~]# chown -R rsync.rsync !$


[root@backup ~]# vim /etc/exports
/backup 172.16.1.0/24(rw,sync,all_squash)
[root@backup ~]# systemctl start nfs
#啟動rsync服務端
[root@backup ~]# systemctl start rsyncd

2、nfs


#創建rsync客戶端密碼文件為其設置600權限
[root@nfs ~]# echo "1" >>/etc/rsync.passwd
[root@nfs ~]# chmod 600 !$

#安裝nfs、rpcbind工具
[root@nfs ~]# yum install -y nfs-utils rpcbind

#編輯nfs配置文件
[root@nfs ~]# vim /etc/exports
/sersync 172.16.1.0/24(rw,sync,all_squash)

#創建可供掛載的nfs目錄
[root@nfs ~]# mkdir /sersync
[root@nfs ~]# chown -R nfsnobody.nfsnobody /sersync
[root@nfs ~]# systemctl start nfs

#上傳sersync壓縮包
[root@nfs sersync]# rz -E
rz waiting to receive.
[root@nfs sersync]# tar -xf sersync.gz 
[root@nfs sersync]# mv GNU-Linux-x86/* ./



[root@nfs GNU-Linux-x86]# vim confxml.xml 
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
    <filter start="false">
	<exclude expression="(.*).svn"></exclude>
	<exclude expression="(.*).gz"></exclude>
	<exclude expression="^info/*"></exclude>
	<exclude expression="^static/*"></exclude>
    </filter>
    <inotify>
	<delete start="true"/>
	<createFolder start="true"/>
	<createFile start="true"/>
	<closeWrite start="true"/>
	<moveFrom start="true"/>
	<moveTo start="true"/>
	<attrib start="true"/>
	<modify start="true"/>
    </inotify>

    <sersync>
	<localpath watch="/backup">
	    <remote ip="172.16.1.41" name="backup"/>
	    <!--<remote ip="192.168.8.39" name="tongbu"/>-->
	    <!--<remote ip="192.168.8.40" name="tongbu"/>-->
	</localpath>
	<rsync>
	    <commonParams params="-az"/>
	    <auth start="true" users="yzl" passwordfile="/etc/rsync.passwd"/>
	    <userDefinedPort start="false" port="873"/><!-- port=874 -->
	    <timeout start="false" time="100"/><!-- timeout=100 -->
	    <ssh start="false"/>
	</rsync>
	<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
	<crontab start="false" schedule="600"><!--600mins-->
	    <crontabfilter start="false">
		<exclude expression="*.php"></exclude>
		<exclude expression="info/*"></exclude>
	    </crontabfilter>
	</crontab>
	<plugin start="false" name="command"/>
    </sersync>

    <plugin name="command">
	<param prefix="/bin/sh" suffix="" ignoreError="true"/>	<!--prefix /opt/tongbu/mmm.sh suffix-->
	<filter start="false">
	    <include expression="(.*).php"/>
	    <include expression="(.*).sh"/>
	</filter>
    </plugin>

    <plugin name="socket">
	<localpath watch="/opt/tongbu">
	    <deshost ip="192.168.138.20" port="8009"/>
	</localpath>
    </plugin>
    <plugin name="refreshCDN">
	<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
	    <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
	    <sendurl base="http://pic.xoyo.com/cms"/>
	    <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
	</localpath>
    </plugin>
</head>
[root@nfs sersync]# ./sersync2 -dro confxml.xml 

web1和web2


[root@web01 ~]#  yum install -y rpcbind nfs-utils
[root@web01 ~]#  yum install -y httpd php
[root@web01 ~]#  systemctl start httpd
[root@web01 ~]#  cd /var/www/html
[root@web01 ~]# mount -t nfs 172.16.1.31:/sersync /var/www/html
[root@web01 html]# rz -E
rz waiting to receive.
[root@web01 html]# unzip kaoshi.zip 

[root@web01 html]# systemctl restart httpd
網站測試并訪問

[root@web01 ~]# vim ping.sh
#!/bin/bash

ping -c1 172.16.1.31 >/dev/null 

if [ $? -ne 0 ];then
        umount -lf /var/www/html && mount -t nfs 172.16.1.41:/backup /va
r/www/html/
else

        df -h | grep 172.16.1.31 >/dev/null

        if [ $? -ne 0 ];then
                umount -lf /var/www/html && mount -t nfs 172.16.1.31:/ser
sync /var/www/html     
        fi
fi
[root@web01 ~]# chmod +x ping.sh 
[root@web01 ~]# crontab -e
* * * * * /var/www/html/ping.sh

NFS小結

1.NFS存儲優點

1)NFS文件系統簡單易用、方便部署、數據可靠、服務穩定、滿足中小企業需求。

2)NFS文件系統內存放的數據都在文件系統之上,所有數據都是能看得見。

2.NFS存儲局限

1)存在單點故障, 如果構建高可用維護麻煩web -> nfs -> backup

2)NFS數據明文, 并不對數據做任何校驗。

3)客戶端掛載NFS服務沒有密碼驗證, 安全性一般(內網使用)

3.NFS應用建議

1)生產場景應將靜態數據盡可能往前端推, 減少后端存儲壓力

2)必須將存儲里的靜態資源通過CDN緩存jpgpngmp4avicssjs

3)如果沒有緩存或架構本身歷史遺留問題太大, 在多存儲也無用

摘錄來源:givenchy_yzl博主

分享到:
標簽:服務 NFS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定