linux檔案系統簡析

2021-09-20 14:41:18 字數 4823 閱讀 4392

什麼是檔案系統?

檔案系統是基於作業系統的。用來管理和組織儲存在磁碟驅動器上的資料的系統軟體。通過對資料儲存布局,檔案命名,安全控制等方面的管理。解決了如何在裝置上有效的儲存資料。

元資料(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)

然後是時間超時

不過 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

在新增的時候vim 不允許儲存。顯示 read_only file system

解決方法:mount -o remount,rw /(重新掛載/分割槽為可讀寫)

格式:共享資源路徑 [主機位址][選項]

格式解析:

共享資源路徑:就是要共享出來的目錄或者磁碟分割槽。這些目錄存在於nfs server端,以供nfs client掛載使用。

選項:下面是可用的各個選項含義:

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伺服器共享的目錄

(需要關閉伺服器端口的防火牆 systemctl stop firewalld.service )

nfs應用便捷場景:檔案備份。

需要備份的檔案為客戶端。粗放備份檔案的客戶端為nfs伺服器。

直接在掛載目錄下。tar 需要複製的檔案。

Taobao分布式檔案系統TFS簡析

taobao自主研發分布式檔案系統tfs taobao file system 的訊息早有耳聞,最初來自網路上的一篇報道 或稱軟文 深度揭秘 自主研發的檔案系統tfs 因為個人研究興趣和工作內容相關的緣故,對tfs產生了很大的興趣,很是期待和關注。tfs前面一直傳說大致在2010.09月進行開源發布...

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...

Linux檔案系統

linux目錄結構 根目錄 bin 可執行檔案目錄 boot 核心引導檔案 vmlinuz,initrd.img等 dev 裝置檔案儲存目錄,應用程式對這些檔案讀寫和控制可訪問實際裝置 etc 系統配置和一些伺服器配置檔案的位置,如帳號及密碼配置檔案。home 普通使用者目錄 lib 庫檔案目錄 l...