1. 程式人生 > >unix/linux檔案系統基礎知識

unix/linux檔案系統基礎知識

1、linux檔案系統分配策略:

塊分配( block allocation ) 和 擴充套件分配 ( extent allocation )

塊分配:磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。

每一次檔案擴充套件時,塊分配演算法就需要寫入檔案塊的結構資訊,也就是 meta-dada 。meta-data總是與檔案一起寫入儲存裝置,改變檔案的操作要等到所有meta-data的操作都完成後才能進行,

因此,meta-data的操作會明顯降低整個檔案系統的效能。

擴充套件分配: 檔案建立時,一次性分配一連串連續的塊,當檔案擴充套件時,也一次分配很多塊。meta-data在檔案建立時寫入,當檔案大小沒有超過所有已分配檔案塊大小時,就不用寫入meta-data,直到需要再分配檔案塊的時候。

擴充套件分配採用成組分配塊的方式,減少了SCSI裝置寫資料的時間,在讀取順序檔案時具有良好的效能,但隨機讀取檔案時,就和塊分配類似了。

檔案塊的組或塊簇 ( block cluster) 的大小是在編譯時確定的。簇的大小對檔案系統的效能有很大的影響。

注: meta-data 元資訊:和檔案有關的資訊,比如許可權、所有者以及建立、訪問或更改時間等。

2、檔案的記錄形式

linux文家系統使用索引節點(inode)來記錄檔案資訊。索引節點是一種資料結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。

一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索引節點陣列中的唯一的元素對應。每個索引節點在陣列中的索引號,稱為索引節點號。

linux檔案系統將檔案索引節點號和檔名同時儲存在目錄中,所以,目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表,目錄中每一對檔名稱和索引節點號稱為一個連線。

對於一個檔案來說,有一個索引節點號與之對應;而對於一個索引節點號,卻可以對應多個檔名。

連線分為軟連線和硬連線,其中軟連線又叫符號連線。

硬連線: 原檔名和連線檔名都指向相同的實體地址。目錄不能有硬連線;硬連線不能跨檔案系統(不能跨越不同的分割槽),檔案在磁碟中只有一個拷貝。

由於刪除檔案要在同一個索引節點屬於唯一的連線時才能成功,因此硬連線可以防止不必要的誤刪除。

軟連線: 用 ln -s 命令建立檔案的符號連線。符號連線是linux特殊檔案的一種,作為一個檔案,它的資料是它所連線的檔案的路徑名。沒有防止誤刪除的功能。

3、檔案系統型別:

ext2 : 早期linux中常用的檔案系統

ext3 : ext2的升級版,帶日誌功能

RAMFS : 記憶體檔案系統,速度很快

NFS : 網路檔案系統,由SUN發明,主要用於遠端檔案共享

MS-DOS : MS-DOS檔案系統

VFAT : Windows 95/98 作業系統採用的檔案系統

FAT : Windows XP 作業系統採用的檔案系統

NTFS : Windows NT/XP 作業系統採用的檔案系統

HPFS : OS/2 作業系統採用的檔案系統

PROC : 虛擬的程序檔案系統

ISO9660 : 大部分光碟所採用的檔案系統

ufsSun : OS 所採用的檔案系統

NCPFS : Novell 伺服器所採用的檔案系統

SMBFS : Samba 的共享檔案系統

XFS : 由SGI開發的先進的日誌檔案系統,支援超大容量檔案

JFS :IBM的AIX使用的日誌檔案系統

ReiserFS : 基於平衡樹結構的檔案系統

udf: 可擦寫的資料光碟檔案系統

4、虛擬檔案系統VFS

linux支援的所有檔案系統稱為邏輯檔案系統,而linux在傳統的邏輯檔案系統的基礎上增加料一個蓄念檔案系統( Vitual File System ,VFS) 的介面層。

虛擬檔案系統(VFS) 位於檔案系統的最上層,管理各種邏輯檔案系統,並可以遮蔽各種邏輯檔案系統之間的差異,提供統一檔案和裝置的訪問介面。

5、檔案的邏輯結構

檔案的邏輯結構可分為兩大類: 位元組流式的無結構檔案 和 記錄式的有結構檔案。

由位元組流(位元組序列)組成的檔案是一種無結構檔案或流式檔案 ,不考慮檔案內部的邏輯結構,只是簡單地看作是一系列位元組的序列,便於在檔案的任意位置新增內容。

由記錄組成的檔案稱為記錄式檔案 ,記錄是這種檔案型別的基本資訊單位,記錄式檔案通用於資訊管理。

6、檔案型別

普通檔案 : 通常是流式檔案

目錄檔案 : 用於表示和管理系統中的全部檔案

連線檔案 : 用於不同目錄下檔案的共享

裝置檔案 : 包括塊裝置檔案和字元裝置檔案,塊裝置檔案表示磁碟檔案、光碟等,字元裝置檔案按照字元操作終端、鍵盤等裝置。

管道(FIFO)檔案 : 提供程序建通訊的一種方式

套接字(socket) 檔案: 該檔案型別與網路通訊有關

7、檔案結構: 包括索引節點和資料

索引節點 : 又稱 I 節點,在檔案系統結構中,包含有關相應檔案的資訊的一個記錄,這些資訊包括檔案許可權、檔名、檔案大小、存放位置、建立日期等。檔案系統中所有檔案的索引節點儲存在索引節點表中。

資料 : 檔案的實際內容。可以是空的,也可以非常大,並且擁有自己的結構。

8、ext2檔案系統

ext2檔案系統的資料塊大小一般為 1024B、2048B 或 4096B

ext2檔案系統採用的索引節點(inode):

索引節點採用了多重索引結構,主要體現在直接指標和3個間接指標。直接指標包含12個直接指標塊,它們直接指向包含檔案資料的資料塊,緊接在後面的3個間接指標是為了適應檔案的大小變化而設計的。

e.g: 假設資料塊大小為1024B ,利用12個直接指標,可以儲存最大為12KB的檔案,當檔案超過12KB時,則要利用單級間接指標,該指標指向的資料塊儲存有一組資料塊指標,這些指標依次指向包含有實際資料的資料塊,

假如每個指標佔用4B,則每個單級指標資料塊可儲存 1024/4=256 個數據指標,因此利用直接指標和單級間接指標可儲存 1024*12+1024*256=268 KB的檔案。當檔案超過268KB時,再利用二級間接指標,直到使用三級間接指標。

利用直接指標、單級間接指標、二級間接指標、三級間接指標可儲存的最大檔案大小為:

1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,約 16GB

若資料塊大小為2048B,指標佔4B,則最大檔案大小為: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 約 268GB

若資料塊大小為4096B,指標佔4B,則最大檔案大小為: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,約 4TB

注: 命令 tune2fs -l /dev/sda5 可檢視檔案系統

ext2檔案系統最大檔名長度: 255個字元

ext2檔案系統的缺點:

ext2在寫入檔案內容的同時並沒有同時寫入檔案meta-data, 其工作順序是先寫入檔案的內容,然後等空閒時候才寫入檔案的meta-data。若發生意外,則檔案系統就會處於不一致狀態。

在重新啟動系統的時候,linux會啟動 fsk ( file system check) 的程式,掃描整個檔案系統並試圖修復,但不提供保證。

9、ext3檔案系統:

ext3基於ext2的程式碼,所以磁碟格式與ext2相同,使用相同的元資料。

ext2檔案系統無損轉化為ext3檔案系統: tune2fs -j /dev/sda6

日誌塊裝置( Journaling block device layer,JBD)完成ext3檔案系統日誌功能。JBD不是ext3檔案系統所特有的,它的設計目標是為了向一個塊裝置新增日誌功能。

當一個檔案修改執行時,ext3檔案系統程式碼將通知JBD,稱為一個事務(transaction)。發生意外時,日誌功能具有的重放功能,能重新執行中斷的事務。

日誌中的3種資料模式:

1)、data=writeback :不處理任何形式的日誌資料,給使用者整體上的最高效能

2)、data=odered :只記錄元資料日誌,但將元資料和資料組成一個單元稱為事務(transaction) 。此模式保持所句句的可靠性與檔案系統的一致性,效能遠低於data=writeback模式,但比data=journal模式快

3)、data=journal :提供完整的資料及元資料日誌,所有新資料首先被寫入日誌,然後才被定位。意外發生過後,日誌可以被重放,將資料與元資料帶回一致狀態。這種模式整體效能最慢,但資料需要從磁碟讀取和寫入磁碟時卻是3種模式中最快的。

ext3檔案系統最大檔名長度: 255個字元

ext3檔案系統的優點:可用性、資料完整性、速度、相容性

10、ReiserFS檔案系統

ReiserFS檔案系統是由Hans Reiser和他領導的開發小組共同開發的,整個檔案系統完全是從頭設計的,是一個非常優秀的檔案系統。也是最早用於Linux的日誌檔案系統之一。

ReiserFS的特點

先進的日誌機制

ReiserFS有先進的日誌(Journaling/logging)功能 機制。日誌機制保證了在每個實際資料修改之前,相應的日誌已經寫入硬碟。檔案與資料的安全性有了很大提高。

高效的磁碟空間利用

Reiserfs對一些小檔案不分配inode。而是將這些檔案打包,存放在同一個磁碟分塊中。而其它檔案系統則為每個小檔案分別放置到一個磁碟分塊中。

獨特的搜尋方式

ReiserFS基於快速平衡樹(balanced tree)搜尋,平衡樹在效能上非常卓越,這是一種非常高效的演算法。ReiserFS搜尋大量檔案時,搜尋速度要比ext2快得多。Reiserfs檔案系統使用B*Tree儲存檔案,而其它檔案系統使用B+Tree樹。B*Tree查詢速度比B+Tree要快很多。Reiserfs在檔案定位上速度非常快。

在實際運用中,ReiserFS 在處理小於 4k 的檔案時,比ext2 快 5 倍;帶尾檔案壓縮功能(預設)的ReiserFS 比ext2檔案系統多儲存6%的資料。

支援海量磁碟

ReiserFS是一個非常優秀的檔案系統,一直被用在高階UNIX系統上,可輕鬆管理上百G的檔案系統,ReiserFS檔案系統最大支援的檔案系統尺寸為16TB。這非常適合企業級應用中。

優異的效能

由於它的高效儲存和快速小檔案I/O特點,使用ReiserFs檔案系統的PC,在啟動X視窗系統時,所花的時間要比在同一臺機器上使用ext2檔案系統少1/3。另外,ReiserFS檔案系統支援單個檔案尺寸為4G的檔案,這為大型資料庫系統在linux上的應用提供了更好的選擇。

相關推薦

unix/linux檔案系統基礎知識

1、linux檔案系統分配策略: 塊分配( block allocation ) 和 擴充套件分配 ( extent allocation ) 塊分配:磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁

Linux 磁碟與檔案系統 —— 基礎知識(一)

一,磁碟的物理組成 1、扇區(Sector)是最小的物理儲存單位,有 512bytes 和 4K 兩種格式。 2、將扇區組成一個圓,就是磁柱。 3、最小分割槽單位通常為扇區。 4、硬碟分割槽表主要有兩種格式,一種是限制較多的 MBR 分割槽,一種

Linux操作系統基礎知識part4

linux操作系統 表示 占用內存 lin part 子進程 df -h sed use top僵屍進程 失去了父進程的子進程,占用內存不占用cpucpu的利用率:實際單位時間內計算的工作量cpu的負載:cpu被安排的工作量 freebuffers 表示內存往硬盤存寫的數據

Linux操作系統基礎知識(五)

狀態 -exec acer res ifconfig 查找 mas 配置文件 update ifconfig 命令查看網絡信息eth0 eth1em1 em2p2p2 p2p3 systemctl status network 查看網絡狀態systemctl start n

unix/linux 檔案系統結構淺析

一、物理磁碟到檔案系統 檔案系統用來儲存檔案內容、檔案屬性、和目錄。這些型別的資料如何儲存在磁碟塊上的呢?unix/linux使用了一個簡單的方法。如圖所示. 它將磁碟塊分為三個部分: 1)超級塊,檔案系統中第一個塊被稱為超級塊。這個塊存放檔案系統本身的結構資訊。比如

Unix/Linux檔案系統安全

檔案系統安全:檔案系統安全是Unix/Linux系統安全的核心,檔案系統用來控制誰能訪問資訊以及他們能做什麼(認證,授權,就像前面密碼學裡面提到的AAA技術,當然那個最後一個A還代表一個審計技術)

Linux系統基礎知識

一級目錄 結構 高亮 6.5 可用 運行 進制 star 選擇 1、linux概述 ??Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議

Linux系統基礎知識(二)基於linux系統下的用戶管理操作以及文件操作補充

c99 數據塊 upa 系統數據 精確 passwd 列表 sudo 3.4 1、(思考)系統中為什麽要有用戶 1.1用戶??系統中最底層的安全設定,回收(限制)權利。1.2組??共享權利。分為以下兩種:??(1)附加組:由用戶決定的組(每個用戶不一定都有);??(2)初始

嵌入式linux學習之基礎知識(一) linux檔案許可權

linux 檔案許可權相關 Linux使用者分為: 擁有者、組群(Group)、其他(Other) linux檔案的許可權總共有10位,如 -rwxrwxr-x ,分為4段。 第一段 佔1位 表示檔案的型別 - :表示普通檔案 d :表示資料夾、目錄 l :表示連結檔案,類似window

Linux基礎04——Linux檔案系統常用命令

今天總結了一下Linux檔案系統常用命令: 命令含義 Linux命令 Linux命令舉例 顯示當前工作目錄 pwd pwd 進入使用者家目錄 cd cd 改變目錄 cd cd /usr 進入當前目錄的上一個

linux系統基礎知識(一)

快捷鍵 shift+n 快速開啟terminal shift+t 在現有的shell中重新開啟一個table ctrl+a 回到行首 +e 回到行末 +c 撤銷 +l 清屏(clear 也可清空terminal中的內容) alt+ctrl+f1/f

[教程]linux/UNIX作業系統檔案系統許可權管理

linux/UNIX檔案的存取有三種許可權:許可權 普通檔案的存取許可權 目錄的存取許可權R 具有讀取檔案的權利 能讀取檔名稱W 具有寫入檔案的權利 能建立和刪除檔案,可以改變檔名X 具有執行檔案的權利 能使用該目錄下的檔案(如cd命令)搜尋檔案等能夠存取檔案的使用者型別有三種類型的使用者可以存取檔案:使用者

Linux虛擬檔案系統基礎概念

參考:《Linux核心設計與實現》第13章 虛擬檔案系統 虛擬檔案系統(VFS)作為核心子作業系統,為使用者空間程式提供了檔案和檔案系統相關的介面。程式可以利用標準的Unix系統呼叫(如:open()、read()、write())對不同的檔案系統,甚至不同的介質上的

linux操作系統基礎篇(四)

空閑 僵屍進程 標準 為什麽 嘗試 mount命令 性能分析 包含 put 系統監控 1. 系統監視和進程控制工具—top和free1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的

linux操作系統基礎篇(六)

linux操作系統 linux服務 images without 重新 修改 文件內容 請求 用戶訪問 linux服務篇 1.samba服務的搭建 samba的功能: samba是一個網絡服務器,用於Linux和Windows之間共享文件。2. samba服務的啟動、停止、

linux操作系統基礎篇(七)

多個 success centos mountd rpcbind ces 說明 目錄 發送 NFS服務(基於CentOS 7.0) NFS(Network File System),網絡文件系統,是linux與linux之間進行文件共享的服務,在NFS應用,本地NFS的客戶

操作系統基礎知識總結(一)

一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個

Python實現獲取Linux操作系統基礎信息

python cpu 系統信息 ip 內存 獲取信息如下: 主機名 系統版本 系統內核版本 總內存 CPU生廠商 CPU總核心數 服務器生廠商 服務器序列號 各網卡IP,MAC和網卡名信息實現代碼如下:#!/usr/bin/python

操作系統基礎知識

系統調用 輸出 人員 輸入 編寫程序 線路 其他 概念 以及 1.為何要有操作系統 計算機系統主要由處理器,主存、硬盤、鼠標、顯示器、網絡接口、打印機、及其他輸入輸出設備組成,為了更方便地對這些硬件進行控制同時便於編寫程序,有了操作系統,程序員就不用了解硬件的所有細節,只需

Linux入門及基礎知識

linux如果操作系統發展史出一部美國大片,那一定是三國硝煙的味道。上世界末的一群西方人,雖沒有西部牛仔的放蕩不羈,也成就了一段令後人難望其項背的歷史。而且,身為Unix之父,Linux之父,計算機開源運動之父,Windows之父,無一例外,都還好好的活在這個他們親眼見證的,不斷發展壯大的信息技術時代。197