在伺服器共享中常用的服務有:
ftp伺服器端:linux windows 用戶端:linux windows 範圍:内網 外網
nfs伺服器端:linux用戶端:linux範圍:内網 外網
samba伺服器端:linux windows 用戶端:linux windows範圍:内網
檔案系統:
檔案系統是對一個儲存設備上的資料和元素進行組織的一種機制
nfs作用:共享存儲,保證資料一緻性
優點:簡單,容易上手,資料是在檔案系統之上的
2友善,部署快速,維護簡單
3可靠,從軟體層面上,資料可靠性高,經久耐用
局限;
1存在單點故障,要用負載均衡高可用方案彌補
2在高并發的場合,nfs效率性有效,一般幾千萬pv的網站都不是瓶頸
3用戶端認證事基于ip和主機名的,安全性一般
4nfs資料是明文的,對資料完整性不作驗證
5多台機器挂載nfs伺服器時候,連結管理維護麻煩,尤其nfs服務端出問題後,所有用戶端都挂載狀态
etc/exports檔案配置格式
nfs共享目錄 nfs用戶端位址1(參數1,參數2....)用戶端位址2(參數1..參數2)
nfs一定要用絕對路徑,注意權限,nfs位址可以是單獨ip,網段,域名,也可以用*比對
同步:發送端等待接收端收到消息後才會鍛掉
異步:發送端不會等接收端來接收,生産中必須用到的,門戶網站中必須用到
配dfs生産重要技巧
1確定所有伺服器對nfs共享目錄具備相同的權限
a all——squash把所有用戶端都壓縮成匿名使用者
b所有的用戶端和服務端都需要有一個相同的uid和gid ,即nfsnobody
實作多台用戶端同時候挂一台server端,server使用者群組都是同一個名稱lushneg,操作步驟
1建立一個nfs共享使用者,所有機器都存在并且uid gid相同
2cat >>/etc/exports <<eof
/tmp/data 172.16.10.0/24(rw,sync,all_squash,anonuid=555,anongid=555)
3showmount -e 172.16.10.10
df -h
mount -t nfs 172.16.10.10:/tmp/data /mnt/data
挂載開機自啟動:
echo "/bin/mount -t nfs 172.16.10.10:/tmp/data mnt/data" >>/etc/rc.local
缺點:偶爾開機挂載不上,工作中除了開機自啟動配置,對挂載點監控
nfs網絡檔案系統不要放到fstab裡
1fstab優先于網絡啟動,此時還連不上nfs伺服器
2即使是本地檔案系統,也要注意,那麼用戶端開機後可能會導緻無法啟動的風險,fstab最後
兩列,要設定0 0,否則會有導緻無法啟動伺服器的問題
nfs rpc服務的啟動指令和挂載指令都放入/etc/rc.local.然後用監控軟體監控開機後的狀态
經驗:為什麼要把所有開機當做伺服器的檔案,所有伺服器啟動配置都放在檔案裡,做好注釋,
或者寫好啟動腳本都用chkconfig管理
現實生活中太多這多沒交接好,根本就不知道這台電腦是做什麼用的,連重新開機都不敢,更别說更改了
fstab修改錯誤導緻系統無法啟動故障修複案例
維護模式
mount -o rw,remount
然後修改/etc/fstab
實際挂載優化
mount -t nfs -o noatime,nodiratime,nosuid,noexec 172.16.10.10:/tmp/data /mnt/data
非性能參數越多,速度會越慢
需要退出挂載目錄在進行解除安裝,或者是nfs server當機了,需要強制解除安裝 mount -lf/mnt/dev
故障解決步驟
1)服務端一定要開啟兩個服務 rpc ,nfs
2)用戶端一定要開啟rpc服務
nfs 至少啟動兩個程序,一個rpc服務,一個nfs服務
1)先開啟rpc服務(中介)
2)再啟動nfs服務,啟動後會向rpc服務注冊啟動的端口(房源)
3)客戶向rpc請求nfs服務
4)rpc傳回端口給租客
5)拿着位址端口請求傳輸資料
Nfs實操示範
服務端環境準備
nfsserver 172.16.10.10
nfsclient 172.16.10.20
服務端和用戶端都要安裝
nfs服務需要安裝下面的軟體包
nfs-utils portmap rpcbind
寫文檔一定要有這幾步基本資訊
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final) 作業系統版本資訊
[root@localhost ~]# uname -r\
[root@localhost ~]# uname -r 核心版本資訊
2.6.32-431.el6.x86_64
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-39.el6.x86_64
如果沒有,yum -y install nfs-utils rpcbind
服務端操作:
[root@localhost ~]# /etc/init.d/rpcbind start
[root@localhost ~]# ps -ef |grep rpc
rpc 977 1 0 Mar26 ? 00:00:00 rpcbind
rpcuser 995 1 0 Mar26 ? 00:00:00 rpc.statd
root 2167 2115 0 02:52 pts/0 00:00:00 grep rpc
[root@localhost ~]# rpcinfo -p localhost //檢視rpc有無房源
[root@localhost ~]# /etc/init.d/nfs start //相當于向中介提供房源
啟動 NFS 服務: [确定]
關掉 NFS 配額: [确定]
啟動 NFS mountd: [确定]
啟動 NFS 守護程序: [确定]
正在啟動 RPC idmapd:
#設nfs rpc為開機自啟動,設定好之後記得檢查開機自啟動狀态
[root@localhost ~]# chkconfig nfs on
[root@localhost ~]# chkconfig rpcbind on
[root@localhost ~]# chkconfig --list nfs
nfs 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
[root@localhost ~]# chkconfig --list rpcbind
rpcbind 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5
用戶端操作,隻需要啟動rpc服務即可
sync表示把資料從緩存寫到磁盤裡面 async資料寫入到緩存
服務端操作配置服務
[root@server ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 1月 12 2010 /etc/exports
[root@server ~]# cat /etc/exports
[root@server ~]# mkdir /data //建立共享目錄
[root@server ~]# vim /etc/exports //編輯配置檔案,往裡面寫配置
#shared data for bbs luliechu at 20170327 //這一行注釋
/data 172.16.10.0/24(rw,sync)
data表示要共享的目錄 172.16.10.0表示可以通路的網段 rw讀寫 sync表示把資料從緩存寫到磁盤裡面
[root@server ~]# cat /etc/exports //檢查
#shared data for bbs luliechu at 20170327
[root@server ~]# /etc/init.d/nfs reload //配置完配置檔案後平滑重新開機(提高使用者體驗)nfs服務
[root@server ~]# showmount -e localhost //在本機上檢查是否共享出來
Export list for localhost:
/data 172.16.10.0/24 //表示共享成功
在用戶端上檢查
[root@server ~]# showmount -e 172.16.10.10 //在本機上檢查是否共享出來
然後挂載
df -h 檢查有哪些磁盤挂載了
mount -t nfs 172.16.10.10:/data /mnt //挂載 ,當然于Windows的磁盤映射
注意本地目錄權限也要可寫可讀才能真正可讀可寫
服務端上操作:
[root@localhost ~]# cat /var/lib/nfs/etab //檢視這個檔案可以看到nfs使用者id号
/data 172.16.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
[root@localhost ~]# grep 65534 /etc/passwd //檢視對應id号的使用者名
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@localhost ~]# ls -ld /data //檢視共享目錄權限
drwxr-xr-x. 2 root root 4096 3月 28 06:13 /data
[root@localhost ~]# chown nfsnobody -R /data //屬于屬于nfsnobpdy,讓遠端使用者可寫
[root@localhost ~]# ls -ld /data
drwxr-xr-x. 2 nfsnobody root 4096 3月 28 06:13 /data
測試效果:
[root@server ~]# ls /data
test1 test3 北大青鳥第2章學習資料
test2 北大青鳥第1章學習資料 北大青鳥第3章學習資料
[root@server ~]#
[root@client ~]# ls /mnt
--end--
本文轉自 探花無情 51CTO部落格,原文連結:http://blog.51cto.com/983865387/1917718