Linux學習筆跡(三)--磁盤與文件系統管理

Linux磁盤與文件系統管理

1、Linux系統中硬盤分區主要分爲:主分區和擴展分區兩種,且主分區與展分區之和最多隻有4個,即磁盤最多隻能4個;主分區可以馬上使用但不能進行在分區;而展分區必須進行再分區,即邏輯分區,纔可使用,並且擴展分區最多隻有一個(對操作系統的的限制,最多隻能裝一個操作系統);邏輯分區的數據依操作系統而不同,在Linux系統中,IDE硬盤最多可以有59個邏輯分區(5號到63號,磁盤前綴爲:hd),SATA硬盤最多有11個邏輯分區(5號到15號,磁盤前綴爲:sd)。

2、Linux文件系統通常會將數據和文件權限、屬性分開存放在不同的塊中,權限和屬性放置到inode中,實際數據存放到data block中,具體信息如下:

super block:記錄此文件系統的整體信息,包括inode/block的總量、使用量、剩餘量、以及文件系統的格式與相關信息等;

inode:記錄文件的屬性,一個文件佔用一個inode,同時記錄此文件的數據所在的block號碼;

block:實際記錄文件的內容,若文件太大時,就佔用多個block。

3、Linux的Ext2文件系統

文件系統一開始就將inode與block規劃好了,除非重新格式化(或者利用resize2fs等命令更改系統大小),否則inode與block固定後就不會再變動的。

在文件系統整體的規劃中,文件系統最前面有一個啓動扇區,可以安裝引導裝載程序。

①inodetable(inode表格)

inode記錄文件數據至少有下面這些:

·該文件的訪問模式(read/write/excute)

·該文件的所有者與組(owner/group)

·該文件的大小

·該文件創建或狀態改變的時間(ctime)

·最近一次的讀取時間(atime)

·最近修改時間(mtime)

·定義文件特性的標誌(flag),如設置SetUID等

·該文件真正內容的指向(pointer)

·每個inode的大小均固定爲128bytes

·每個文件都會僅佔用一個inode而已,因此文件系統能夠創建的文件數量與inode的數量有關

·系統讀取文件時需要先找到inode,並分享inode所記錄的權限與用戶是否符合,如符合才能夠開始實際讀取數據block的內容

·inode記錄block號碼的區域定位12個直接、1個間接、與1個三間接記錄去,即拿block來記錄額外的號碼

②data block(數據塊)

在Ext2文件系統中,所支持的block大小有1kb、2kb及4kb三種。

③Superblock(超級塊)

④File System Description(文件系統描述說明

⑤block bitmap(塊對照表)

⑥inode bitmap(inode對照表)

4、Ext2/Ext3文件的訪問與日誌文件系統的功能

新增一個文件,此時文件系統的行爲是:

①先確定用戶對欲添加文件的目錄是否具有w與x的權限,若有的話才能添加

②根據inode bitmap找到沒有使用的inode號碼,並將新文件的權限/屬性寫入

③根據block bitmap找到沒有使用中的block號碼,並將時間的數據寫入block中,且更新inode的block指向數據

④將剛纔寫入的inode與block數據同步更新inode bitmap與block bitmap,並更新supervblock的內容

一般將inodetable與datatable稱爲數據存放區域,至於superblock、blockbitmp、inodebitmap等區段被稱爲中間數據(metadata),這些區段的數據經常變動,每次添加、刪除、編輯時都可能會影響到這三個部分的數據。

爲了保證文件系統信息一致性,Ext3加入了日誌文件系統。Ext3是Ext2的升級版。

5、文件系統的簡單操作

(1)磁盤與目錄的容量:df,du

df:列出文件系統的整體磁盤使用量

df [-ahikHtm] [目錄或文件名]

-a:列出所有的文件系統,包括系統特有的/proc等文件系統

-k:以KB的容量顯示各文件系統

-m:以MB的容量顯示各文件系統

-h:以人們較易閱讀的GB、MB、KB等格式自行顯示

-i:不用硬盤容量,而以inode的數量來顯示


du:評估文件系統的磁盤的使用量,目錄所佔容量

du [-ahskm] 文件或目錄名稱

-a:列出所有的文件與目錄的容量,默認僅統計目錄下面的文件量

-s:列出總量而已,而不列出每個各別的目錄佔用量

(2)連接文件:ln

在Linux下面的連接文件有兩種:一種是類似Windows的快捷方式功能的文件,可以快速連接到目標文件或目錄(符號連接,symbolic link);另一種則是通過文件系統的inode連接來產生新的文件名,而不產生新文件(硬連接,hard link)。

hard link:只是在某個目錄下新建一條文件名連接到某個inode號碼的關聯記錄上。相對於symbolic link更安全,如果你將任何一個“文件名”刪除,其是inode與block都還是存在的。使用hard link設置連接文件時,磁盤的空間與inode的數目都不會改變,只是在該目錄的關連數據上多寫了一個。但使用hard link要注意:不能跨文件系統,也不能連接到目錄。

symbolic link:類似Windows的快捷方式,創建一個獨立的文件,而這個文件會讓數據的讀取指向它連接的那個文件的文件名,當源文件被刪除之後,symbolic link的文件會打開,實際上就是找不到源文件的“文件名”。

ln [-sf] 源文件 目標文件

其中,-s:如果不加任何參數就是hard link,加上-s 就是symbolic link

-f:如果目標文件存在時,就主動將目標文件直接刪除後再創建

6、磁盤的分區、格式化、檢驗與掛載

(1)磁盤分區:fdisk

fdisk [-l] 設備名稱

其中,-l:輸出後面接的設備所有的分區內容。若僅有fdisk -l時,則系統將會把整個系統內能夠找到的設備的分區均列出來。fdisk只有root才能執行。

(2)磁盤格式化:mkfs

mkfs [-t 文件系統格式] 設備文化名

其中,-t:可以接文件系統格式,如ext3,ext2,vfat等

磁盤格式化指定文件系統的具體選項使用:mke2fs

mke2fs [-b block的大小] [-i inode大小] [-L 卷標] [-cj]設備

7、磁盤掛載與卸載

磁盤掛載要注意:

①單一文件系統不應該被重複掛載在不同的掛載點(目錄)中;

②單一目錄不應該重複掛載多個文件系統;

③作爲掛載點的目錄理論上應該是都是空目錄纔是;如果掛載的目錄不是空,那麼掛載子文件系統之後,原目錄下的東西就會暫時消失,並不會被覆蓋掉,等新分區卸載之後,原目錄的內容就會再次顯示出來。

mount -a 

-a:依照配置文件/etc/fstab的數據將所有未掛載的磁盤都掛載上來;

monut [-t 文件系統] [-L Label名] [-o 額外選項]  \

[-n] 設備文件名 掛載點

-t:指定文件系統種類

-n:系統將實際掛載情況實時寫入/etc/mtab中,其他參數請使用man monut查看。

umonut [-fn] 設備文件名或掛載點

其中,-f:強制卸載,可用在類似網絡文件系統(NFS)無法讀取到的情況下;

-n:不更新/etc/mtab的情況下卸載

8、文件常用壓縮命令

壓縮命令:

①compress:這個壓縮命令是非常老舊的壓縮命令,已經不再流行了。

compress [-rcv] 文件或目錄

其中,-r:可以連同目錄下的文件也同時給予壓縮;

-c:將壓縮數據輸出成爲standard output(輸出到屏幕);

-v:可以顯示出壓縮後的文件信息以及壓縮過程中的一些文件名變化。

②gzip:目前應用最爲廣泛的壓縮命令,可以解壓compress、zip與gzip等軟件所在壓縮文件,建立的壓縮文件爲*.gz的文件名。可以使用zcat命令直接讀取純文本壓縮文件。

gzip [-cdtv#] 文件名

其中,-c:將壓縮的數據輸出到屏幕上,可以通過數據流重定向來處理;

-d:解壓縮的參數;

-t:可以用來檢驗一個壓縮文件的一致性,看看文件有無錯誤;

-v:可以顯示原文件/壓縮文件的壓縮比等信息;

-#:壓縮等級,-1最快,但壓縮比最差,-9最慢,但壓縮比最好,默認是-6.

如:gzip -v man.cofig(壓縮man.config文件,並顯示壓縮比),gzip -d man.config.gz(解壓man.config.gz文件),zcat man.config.gz(查看壓縮文件man.config.gz

③bzip2:提供壓縮比比gzip更佳的壓縮程序,建立的壓縮文件爲*.bz2的文件名。bzcat:查看*.bz2d的壓縮文件。

bzip2 [-cdkzv#] 文件名

其中,-k:保留原文件,而不會刪除原始的文件;其他參數同gzip。

注:gzip、bzip2都只能對單一文件進行壓縮,不能對目錄進行壓縮,若對目錄進行壓縮需要使用tar命令。

④打包命令:tar

打包壓縮:tar [-j|-z][cv] [-f 新建文件名] filename

查看文件名:tar [-j|-z][tv] [-f  新建文件名]

加壓縮:tar [-j|-z][xv] [-f  新建文件名] [-C 目錄]

其中,-c:新建打包文件,可以搭配-v來查看過程中被打包的文件名(filename);

-t:查看打包文件的內容包含哪些文件名,重點在查看文件名;

-x:解打包或解壓縮的功能,可以搭配-C(大寫)在特定目錄解壓;

-j:通過bzip2的支持進行壓縮/解壓,此時文件名最好爲*.tar.bz2;

-z:通過gzip的支持進行壓縮/解壓 ,此時文件名最好爲*.tar.gz;

-v:在壓縮/解壓過程中,將正在處理的文件名顯示出來;

-f filename:-f後面要接被處理的文件名,建議-f單獨寫一個參數;

-C 目錄:在特定的目錄解壓縮。

其他參數,請使用man tar查看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章