Linux磁碟和檔案系統

2021-07-03 09:08:15 字數 2043 閱讀 7553

早期的linux版本使用ext2檔案系統,是一種索引型的檔案系統。檔案系統(filesystem)與磁碟的關係是,將磁碟掛載到檔案系統相應的目錄下面。磁碟的使用必須經過分割、格式化和掛載,相應的命令為fdisk、mkfs和mount。通過df命令可以檢視作業系統中磁碟都是掛載在哪些位置的。一般安裝linux作業系統時,至少要分割槽為/和swap,swap是為了在系統記憶體不足的時候用來給系統做記憶體用的。以下五個目錄必須和/根目錄在同乙個檔案系統中:/bin、/sbin、/ect、/lib和/dev。

磁碟第乙個扇區很重要,記錄mbr(master boot record),可以安裝開機管理程式,446位元組用於這個,還有64位元組用於記錄磁碟分割槽情況,即partion table。

開機管理流程:bios->mbr->boot loader->載入kernel。其中boot loader可以安裝在兩個地方,乙個是mbr,另乙個是檔案系統的boot sector。

ext2檔案系統最前面部分是乙個boot sector,即啟動扇區,可以安裝開機管理程式,這個很重要,因為它對電腦安裝多系統環境很有幫助,只需要將不同的系統的開機管理程式安裝在不同檔案系統的boot sector,,而不用都占用唯一的乙個mbr。另外,如果整個檔案系統只有一塊的話,會導致磁碟碎片的產生,進而可能影響搜尋的效能(畢畢竟ext2是索引式檔案系統)。分塊的話,檔案系統就被分成了boot sector和各個block group,(命令dumpe2fs  /dev/sda2可以顯示)。每個block group(其實superblock只有乙個,其他有的話也是拷貝第乙個裡面的內容的)包括:檔案系統描述、superblock、inode bitmap、block bitmap、inode table和block六大部分。其中superblock用來記錄檔案系統大小,本身大小有的是1024位元組,存放的inode和block的數目、大小,可用的inode、block數目,就是一些檔案系統基本資訊,很重要。inode bitmap用來記錄已用和未使用的inode位置和大小,block對應記錄block的。inode table記錄檔案的屬性、許可權等,大小有128位元組和256位元組。block記錄的是檔案的實際內容,大小有1k、2k和4k的。乙個檔案只有乙個inode來儲存,可以占用多個block。每個block記錄會在inode中花費4位元組。

128位元組的inode是如何索引到乙個比較大的檔案的?(即inode、block與檔案的關係)

假定block大小為1k。系統將inode記錄block號碼的區域分為12個直接,1個間接,1個二級間接,1個**間接。間接的時候,1k可以存放1024/4=256個,故間接可以存放256x1k=256k的資料,所以,總共可以儲存12+256+256x256+256x256x256的資料,轉換後可得出大約是16gb的資料。所以block為1k時,乙個inode最大可以儲存的檔案大小是16gb。但是block為2k和4k時不能簡單的用同樣的方式計算,因為系統設定了相應的限制,不能讓其過大,2k最大檔案為256gb,4k為2tb。

目錄樹:

檔案系統中建立目錄的時候,系統會給該目錄分配inode和block,inode用來記錄目錄的屬性、許可權和block號碼等,block用來記錄該目錄下的檔名和檔名占用的inode號碼資料。所以檔案讀取的時候,比如/home/test檔案,讀取的順序為/的inode和block,然後home的inode和block,最後是檔案test的inode和block。

建立檔案的時候,檔案系統中相應的inode bitmap、block bitmap和superblock都會相應的改變。

由於ext2檔案系統沒有日誌管理的功能,導致系統突然斷電等情況下編寫的檔案不容易找回,後來又使用了ext3系統,在檔案系統中增加了日誌模組,可以記錄檔案的資訊,即使系統突然down掉,通過日誌檔案可以迅速定位到編寫的檔案並復原檔案,使檔案不容易丟失。

磁碟使用流程:

使用fdisk /dev/hdc建立新的partion,按p檢視是否正確,按w儲存。格式化命令為mkfs -t ext4 /dev/hdcnew,格式化新建的partion。修改/etc/fstab檔案,格式如/dev/hdc /要掛載的目錄位址 default 1 2。最後,用mount -a自動掛載。用df可以檢視掛載的是否正確。

關於硬碟中磁碟的介紹,這篇部落格寫的比較好:

Linux磁碟和檔案系統

linux一般使用fdisk來分割槽,fdisk基本支援所有的作業系統。fdisk是基於mbr的分割槽工具,如果使用gpt分割槽的話是不能使用fdisk的。fdisk l可以列出所有安裝的磁碟及其分割槽資訊 cat proc partitions可以檢視分割槽資訊,proc儲存系統的實時資訊 fdi...

Linux的磁碟分割槽和檔案系統

一 各硬體裝置在linux中的檔名 在linux系統中,每個裝置都被當成乙個檔案來對待。舉例來說,ide介面的硬碟的檔名即為 dev hd a d 其中,括號內的字母a d當中的任意乙個,也既有 dev had dev hda dev hdb dev hdc及 dev hdd這四個檔案的意思 lin...

linux系統中新增磁碟 分割槽和檔案系統

linux裡面硬碟根據硬碟介面的不同來命名 ide hd a d sata scsi u盤 sd a z 一塊磁碟預設可被分為四個分割槽,這四個分割槽分別為主分割槽或者擴充套件分割槽,在擴充套件分割槽上可建立邏輯分割槽。fdisk l 檢視分割槽列表 fdisk dev sda對某一塊磁碟進行分割槽...