一、什么是文件系統?
文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制。文件系統是在一個磁盤(包括光盤、軟盤、閃盤及其它存儲設備)或分區上組織文件方式方法,常見文件系統如ext2、ext3、ext4、NTFS或fat、fat32等。文件系統格式組織存儲文件或數據的方法,目的是易於查詢和存取數據,如果磁盤上沒有文件系統也就無法存儲數據了,因此,磁盤分區后能夠使用之前必須建立對應的文件系統才行(類似買了電腦不裝系統就無法使用)。
(1)文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制;
(2)分區必須格式化,創建的文件系統才能存放數據,不同的分區只能有一種文件系統。
(3)Linux下常見文件系統ext2、ext3、ext4、zfs、xfs、和Reiserfs
Windows下常見文件系統NTFS、FAT31。
二、NFS網絡文件共享服務:
1、NFS概述:
NFS是第一個構建於IP協議之上的現代網絡文件系統;
NFS 是 Network File System 的縮寫,它的主要功能是通過網絡讓不同的主機系統之間可以彼此共享文件或目錄。NFS客戶端(一般為應用服務器,如web)可以通過掛載(mount)的方式將NFS服務器共享的數據文件目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)。從NFS客戶端的機器本地上看,NFS服務器端共享的目錄就好像是客戶端自己的磁盤分區或者目錄一樣,而實際上確是遠端的服務器目錄。
NFS網絡文件系統的使用很像是windows系統的網絡共享、安全功能、網絡驅動器映射,這也和Linux里的samba服務類似。
2、NFS應用場景:
在企業集群架構的工作場景中,NFS網絡文件系統一般被用來存儲共享視頻、圖片、附件等靜態資源文件,NFS是當前互聯網系統架構中最常用的數據存儲服務之一,特別是中小型網站公司應用頻率很高。
3、NFS掛載原理:
傳統掛載:mount 源 目標
NFS掛載:mount 遠端的IP地址:/video 本地目錄(/video)
-- 訪問本地的video就到了遠端地址的video目錄下,和在本機訪問沒什么區別。
4、搭建NFS服務
hostname 新主機名;su
實驗環境:Centos6.5 兩台機器,
一台 nfsserver -- 192.168.3.137
一台 nfsclient -- 192.168.3.138
NFS主要有兩個軟件包 -- nfs-utils(包括rpc.nfsd、rpc.mountd)、rpcbind(Centos6版本)
(1)安裝 nfs-utils 包,服務端和客戶端都需要安裝。
1
|
yum groupinstall #查看軟件包,軟件包是中文修改字符集(LANG=en)。
|
1
|
yum groupinstall -y
"NFS file server"
#安裝NFS包,一定要加雙引號。
|
(2)服務端(nfsserver)啟動 rpc 服務
1
|
/etc/init.d/rpcbind start #啟動 rpc 服務
|
查看本地有沒有共享,rpc 服務對外的端口是 111
-------------------------------------------------------------------------------------
反例:出現如下報錯表示 rpc 服務沒有啟動:
----------------------------------------------------------------------------------------
(3)服務端啟動 nfs 服務
/etc/init.d/nfs start #啟動 nfs 服務
再次查看本地 rpc 服務,出現很多端口。
(4)將 rpcbind 和 nfs 設置成開機自啟動。
chkconfig rpcbind on
chkconfig nfs on
chkconfig --list rpcbind #檢查狀態
chkconfig --list nfs
檢查狀態:
(5)客戶端(nfsclent) 開啟 rpcbind 服務,不用開啟 nfs 服務
/etc/init.d/rpcbind start #開啟 rpcbind 服務
chkconfig rpcbind on #設置 rpcbind 服務開機自啟動
chkconfig --list rpcbind
(6)/etc/exports -- nfs 的配置文件,此文件默認為空
vim /etc/exports #編輯文件
sync 同步到磁盤,把數據從buffer寫入到磁盤
async -- 表示寫入到緩存里 ro -- read only -- 表示只讀 rw -- 可讀可寫
(7)重啟 nfs 服務,不能用 restart 重啟,要用 reload 重啟。
/etc/init.d/nfs reload #平滑重啟 nfs 服務
在本機做檢查,查看共享的文件是否能共享。
showmount -e localhost
在客戶端(nfsclient)查看是否能發現共享文件。
showmount -e 192.168.3.137 #訪問的IP地址
----------------------------------------------------------------------------------------------------------
注意:如果出現客戶端無法發現服務端的共享文件,需要從以下方面排錯。
①檢查是否關閉防火牆:
service iptables stop
②能否 ping 通對端地址
③能否 telnet 遠程登錄對端。后面接 rpc 的端口號 111(下述為 telnet 登錄對端)
一般(2)(3)沒問題是可以正常訪問的,注意要關閉防火牆。
-----------------------------------------------------------------------------------------------------------
(8)在客戶端(nfsserver)掛載。
mount -t nfs 192.168.3.137:/data /mnt #將對端共享的目錄掛載到本地的 /mnt 目錄下
(9)在客戶端的 /mnt 目錄下查看文件是否成功共享。
服務端(nfsserver)的 /data 目錄:
客戶端(nfsclient)查看 /mnt 目錄:
文件已經共享。
(10)測試:服務端刪除一個文件,客戶端查看共享文件內容。
服務端:刪除 abc.txt 文件
客戶端:查看共享文件
但是:在服務端配置共享文件的時候,給的權限是可讀可寫,此時卻不能寫。
因為這是目錄本身的權限問題:
服務端的 /data 目錄對於其他用戶沒有可寫的權限,因此加上權限即可。
chmod 777 /data
客戶端可寫。
(11)其他授予寫權限的操作。
客戶端進行寫的操作,用戶和用戶組屬於 nfsnobody
在 /var/lib/nfs/etab 文件中說明 nfs其他用戶的 UID 是從 65534 開始。
nfsnobody的UID和GID都為65534
由於NFS其他用戶都是屬於 nfsnobody,所以可以將服務端的 /data 目錄所屬組和所屬主修改為 nfsnobody。
/data 目錄其他用戶不具備寫的權限,但是將 /data 的所屬組和所屬主更改為 nfsnobody;
在客戶端進行增刪操作。
客戶端可以直接進行創建文件,同時最后刪除所有文件,在服務端查看是否文件全部刪除。
NFS網絡文件共享服務搭建完成。
但是掛載在 /mnt 目錄下,開機會丟失,所以最好把共享的目錄放在 rc.local 里或者 fstab 中