linux檔案系統簡析
什麼是檔案系統?
檔案系統是基於作業系統的。用來管理和組織儲存在磁碟驅動器上的資料的系統軟體。通過對資料儲存佈局,檔案命名,安全控制等方面的管理。解決了如何在裝置上有效的儲存資料。
後設資料(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-byx2duuid-…..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 需要複製的檔案。
檔案系統是基於作業系統的。用來管理和組織儲存在磁碟驅動器上的資料的系統軟體。通過對資料儲存佈局,檔案命名,安全控制等方面的管理。解決了如何在裝置上有效的儲存資料。
後設資料(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-byx2duuid-…..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 需要複製的檔案。
本文轉自 swallow_zys 51CTO部落格,原文連結:http://blog.51cto.com/12042068/1898605,如需轉載請自行聯絡原作者
相關文章
- Linux系統下/proc/[pid] 目錄各檔案簡析Linux
- Linux檔案系統簡介Linux
- 主題:Linux檔案系統簡介Linux
- Google檔案系統(GFS)評析:(上)Go
- Google檔案系統(GFS)評析:(下)Go
- linux常用叢集檔案系統簡介Linux
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- 淺析 Linux 的共享記憶體與 tmpfs 檔案系統Linux記憶體
- 【檔案系統】嵌入式檔案系統Fatfs簡介
- Linux的檔案系統與Shell簡單命令Linux
- Linux檔案系統Linux
- linux 檔案系統Linux
- hadoop 配置檔案簡析Hadoop
- Linux系統檔案系統及檔案基礎篇Linux
- 簡單介紹一下 Linux 檔案系統?Linux
- 分散式檔案系統(HDFS)與 linux系統檔案系統 對比分散式Linux
- Linux AUFS 檔案系統Linux
- linux的檔案系統Linux
- 論Linux檔案系統Linux
- linux檔案系統概述Linux
- Linux(五)——檔案系統Linux
- 【Linux】XFS檔案系統Linux
- Linux檔案系統 (轉)Linux
- Linux 檔案系統剖析Linux
- Linux 檔案系統-ext3 檔案系統介紹(轉)Linux
- 細說GNU/Linux系統的檔案及檔案系統(轉)Linux
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux
- Linux系統配置檔案簡易shell備份指令碼Linux指令碼
- Linux檔案系統的反刪除方法簡介(轉)Linux
- 簡述 Linux 檔案系統的目錄結構(轉)Linux
- 根檔案系統簡介與BusyBox構建根檔案系統
- 『學了就忘』Linux檔案系統管理 — 57、Linux檔案系統介紹Linux
- Linux檔案系統-目錄和檔案管理Linux
- Linux檔案系統詳解Linux
- Linux檔案系統、目錄Linux
- linux之路(五)檔案系統Linux
- 【Linux】檔案系統目錄Linux
- Linux 檔案系統詳解Linux