什麼是文件系統?
文件系統是基於操做系統的。用來管理和組織保存在磁盤驅動器上的數據的系統軟件。經過對數據存儲佈局,文件命名,安全控制等方面的管理。解決了如何在設備上有效的存儲數據。
元數據(metadata)存儲文件的重要信息(文件的權限,大小,修改時間,屬主,存儲位置等)
文件系統是操做系統和硬盤之間 一個橋樑,對磁盤的寫操做,都要通過文件系統,而後纔到磁盤。
常見的文件系統:
DOS系統的msdoc
windows 下的FAT系統(fat16(最大支持2G)和fat32(最大支持4G))和NTFS文件系統
光盤文件系統 ISO-9660
linux 下 單一文件系統 ext2 和日誌文件系統 ext3/ext4/xfs
集羣文件系統 gfs (Red Hat Global File System)
虛擬文件系統 (/proc)
加密文件系統 (CFS)
網絡文件系統(NFS)
linux標準文件系統是從VFS開始的,而後是ext2。ext3,ext4
ext系列的對比:
ext3是在ext2的基礎上增長了日誌形式(便於數據恢復)這一思想來源於:超級塊和inode設計理念。
ext3是一種日誌式的文件系統,在ext2的基礎上加入特殊的inode(日誌文件)。日誌記錄功能,用於記錄文件系統的元數據或各類寫操做的變化。ext3數據的寫入順序;先經過日誌文件的記錄功能,而後在將數據寫入磁盤的最終位置。
ext4 是linux第四代日誌文件系統。是ext3文件系統的後續版本。比較ext3的改進:(centos6下的默認文件系統)
1.支持更多的子目錄數量(ext3支持32000個子目錄)ext4,理論上支持無限數量子目錄
2.支持更大的文件系統和更大的文件(ext3 持續賀詞32TB的文件系統和2TB的文件,而ext4 容量可達1EB,文件容量增至16TB)
XFS文件系統:
XFS文件系統是SGI(美國硅圖公司)開發的一個高級日誌文件系統。centos7下做爲默認文件系統(centos7 下構架所有是64位了)
文件系統格式化命令mkfs.xfs
# mkfs.xfs -f /dev/sda2 (因爲sda2已經完成格式化了。須要-f 強制從新格式化)
meta-data=/dev/sda2 isize=512 agcount=4, agsize=1525824 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=6103296, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2980, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
文件系統一致性檢測命令:
xfs_repair -n /dev/sda2 (-n 只是測試不是修復)
修復和監測要把分區卸載了。
這裏出現啓動問題:
A start job is running for dev-disk-by\x2duuid-.....device(1min \1min 30)
而後是時間超時
而後出現提示: [DEPEND] DEpendency failed for /data
不過 centos7下。的init系統仍是比較好的。沒有直接拒絕登陸系統而是給了修復信息。
Give root passwd for maintenance (輸入root密碼進入修復)
(or type Control-D to continue):(這種通常是文件系統啓動的錯誤。系統嘗試自動修復文件系統)
前面 因爲出現提示是/data掛載不了。仍是先進入系統看下/etc/fstab
先查看 分區的UUID; # blkid
而後查看 /ect/fstab
對比發現: /data的UUID 有問題。
修改 /data 的UUID
重啓,正常。
文件系統使用的差別:
1.讀操做頻繁,小文件很是多(web應用,郵件應用) ext 4 文件系統比較好。ext4支持更多目錄和文件
2.寫操做頻繁。(需求日誌功能)xfs 文件系統較好。(在高併發下:xfs比ext4 省CPU資源)
3.對性能和安全都要求不高。能夠用ext2 。(沒有日誌記錄功能,能夠省去設備開銷)
NFS 網絡文件系統的
功能:
讓網絡上的不一樣操做系統之間共享數據。NFS首先在遠程服務端(共享數據的操做系統)共享出文件或者目錄,而後遠程
共享出來的文件或者目錄,能夠經過掛載的方式接到本地的不一樣系統上。
實現原理:NFS server啓動後,開啓一個端口爲客戶端鏈接。因爲這個端口每次都不同,NFS文件系統經過rpc(remote procedure call)
遠程過程調用,監聽NFS守護進程的端口號,通知給客戶端。
nfs須要2個系統服務。
portmap;RPC的portmap 管理器,管理RPC服務的鏈接
nfs-utils: 提供 rpc.nfsd 及prc.mountd 這2個 nfs (daemons)的系統服務。
其中:rpc.nfsd 是管理客戶端是否有權限登陸服務器。rpc.mountd 是管理認證後的客戶端是否對文件有使用權。
簡單點就是: rpc.nfsd 處理鏈接請求 rpc.mountd 監督是否有權限操做目錄。
nfs是 c/s架構。
NFS 服務器端 安裝 須要 rpcbind 和 nfs 包
centos7下通常默認安裝了。如今檢查下:
# rpm -qa | grep rpcbind
rpcbind-0.2.0-38.el7.x86_64
# rpm -qa | grep nfs
nfs-utils-1.3.0-0.33.el7.x86_64
libnfsidmap-0.25-15.el7.x86_64
主配置文件: /etc/exports
添加一條語句:/app 192.168.1.140(rw,sync,no_root_squash)
在添加的時候vim 不容許保存。顯示 read_only file system
解決方法:mount -o remount,rw /(從新掛載/分區爲可讀寫)
格式:共享資源路徑 [主機地址][選項]
格式解析:
共享資源路徑:就是要共享出來的目錄或者磁盤分區。這些目錄存在於NFS Server端,以供NFS Client掛載使用。
主機地址:設定容許使用NFS Server共享資源的客戶端主機地址,主機地址能夠是主機名、域名、IP地址等,支持匹配。
選項:下面是可用的各個選項含義:
ro: 即爲:read only,也就是客戶端主機對共享資源僅僅有讀權限。
rw: 即爲:read write,也就是客戶端主機對共享資源有讀、寫權限。
no_root_squash: 信任客戶端,根據用戶UID進行判斷,若是登入到NFS主機的用戶是ROOT,那麼此用戶就擁有對共享資源的最高權限。此參數很不安全,建議不要使用。
root_squash:系統預設值,當登入NFS主機的用戶root時,那麼這個使用者的權限將被縮成爲匿名使用者,也就是它的UID與GID都會變成nfsnobody身份;只有可讀權限,例如客戶端使用者以UID,GID)=(0,0)的身份使用共享目錄時,其身份就被轉換爲(UID,GID)=(65534,65534) 也就nfsnobody這個用戶身份。系統以此爲預設值,顯然是爲了安全考慮。
all_squash:無論登錄NFS主機的是什麼用戶,都會將共享文件的UID和GID映射爲匿名用戶nfsnobody。
no_all_squash:系統預設值,保留共享文件的UID和GID默認權限。也就是客戶端用戶的UID以及GID和服務端共享文件UID和GID相同時,纔有對共享文件的讀寫權限。這種選項保證了共享文件的用戶和組權限不會改變。
anonuid:將登入NFS主機的用戶都設定成指定的UID,此UID必須存在於NFS Server端/etc/passwd中。
anongid:與「anonuid」含義相似,可是變成 GID了,即用戶組ID!
sync:資料同步寫入磁盤中。默認選擇。
async:資料會先暫時存放在內存中,不會直接寫入硬盤。
開啓NFS服務:
# systemctl start nfs
# systemctl start rpcbind
exportfs 命令能夠臨時生效一條策略。系統不重啓,就不會生效。
客戶端:
安裝 rpcbind 和 nfs-utils
啓動服務: service rpcbind start
查看nfs服務器提供了哪些服務:
showmount -a ip
查看nfs主機信息
showmount -e ip
查看nfs主機和目錄信息
如何使用NFS: 在客戶端掛載nfs服務器共享的目錄
# mkdir /app
# mount -t nfs 192.168.1.152:/app /app
(須要關閉服務器端口的防火牆 systemctl stop firewalld.service )
NFS應用便捷場景:文件備份。
須要備份的文件爲客戶端。粗放備份文件的客戶端爲nfs服務器。
直接在掛載目錄下。tar 須要複製的文件。node