天天看點

《Linux指令行與shell腳本程式設計大全》 第八章管理檔案系統

8.1 探索linux檔案系統

8.1.1 基本的Linux檔案系統

ext:最早的檔案系統,叫擴充檔案系統。使用虛拟目錄操作硬體裝置,在實體裝置上按定長的塊來存儲資料。

用索引節點的系統來存放虛拟目錄中所存儲的檔案資訊。

有一張索引節點表:對應每個檔案都有一個條目,存儲了(檔案名,檔案大小,檔案屬主,檔案屬組,通路權限,還有一個指針)

通過索引節點号來辨別檔案

檔案大小不得超過2GB。

在檔案寫入到實體裝置時,存儲資料很容易分散在整個裝置中(碎片化),降低檔案系統的性能。查找起來費時。

ext2:第二代擴充檔案系統:

增加了建立時間值,修改時間值,最後通路時間值。最大檔案大小增加到2TB。(ext2後期增加到32TB)

按組配置設定磁盤塊來減輕碎片化,将資料塊分組,讀取檔案時就不需要為了資料塊查找整個實體裝置了。

緻命問題:每次存儲或更新檔案,都要同新資訊來更新索引節點表,這個操作并非總是一氣呵成的。容易在系統崩潰或斷電時損壞。

8.1.2 日志檔案系統

增加了安全性。不再将資料直接寫入儲存設備再更新索引節點的做法,而是先将檔案的更改寫到臨時檔案(稱為日志,journal)。成功寫入儲存設備和索引節點之後,再删除對應日志條目。

這樣即使斷電了,日志檔案系統會讀取日志檔案并處理之前留下的未寫入的資料。

有三種廣泛使用的日志方法,每種的保護等級都不相同:

資料模式(最安全,性能最差),有序模式,回寫模式(性能最好,安全性差點)。

這樣很安全,但是比較慢,因為都要寫兩次。第一次寫入日志,第二次寫入儲存設備。

下面介紹常見的linux日志檔案系統。

1 ext3:

用的是有序模式的日志功能。

不足:無法恢複誤删的檔案,沒有任何内建的資料壓縮功能,不支援加密檔案

2 ext4:  2008年受到linux核心官方支援。大部分linux發行版的預設檔案系統

支援資料壓縮和加密。還支援一個特性(區段)

還有一項技術塊預配置設定技術:

3 Reiser 檔案系統:

隻支援回寫日志模式

4 JFS檔案系統:

目前在用的最古老的日志檔案系統之一。采用的是有序日志的方法。

這個檔案系統沒有流行起來。

5.XFS檔案系統:

回寫模式。

8.1.3 寫時複制檔案系統(COW技術, copy-on-write)

如果要修改資料,會使用克隆或可寫快照。修改過的資料不會直接覆寫目前資料,而是放在另一個位置。即使資料修改已經完成,之前的舊資料也不會被重寫。

COW技術已經日漸流行,下面是兩種比較流行的。

1.ZFS檔案系統

Sun公司2005年搞的,是一個穩定的檔案系統。

弱點:沒有使用GPL許可

2.Btrf檔案系統

B樹檔案系統。Oracle2007年搞的。穩定性較好。

8.2操作檔案系統

8.2.1 建立分區

一開始必須在儲存設備上建立分區來容納檔案系統。分區可以是整個硬碟,也可以是部分硬碟。

Fdisk工具用來幫助管理安裝在系統上的任何儲存設備上的分區。

要啟動fdisk指令需要指定到分區的儲存設備的裝置名,還要有超級使用者權限

$sudo fdisk /dev/sdb    // 插入一個U盤就有了/dev/sdb

其餘的步驟可以根據提示去做

8.2.2建立檔案系統

将資料存儲到分區以前,必須用某種檔案系統對其進行格式化,這樣linux才能使用它。

每種檔案系統類型都用自己的指令行程式來格式化分區。

$type mkfs.ext4  // 檢視這個工具是否可用。

$ sudo mkfs.ext4 /dev/sdb1  // 這樣就是建立一個預設的穩健性系統,還可以加參數

為分區建立檔案系統之後,下一步是将它挂載到虛拟目錄下的某個挂載點,這樣就可以将資料存儲在新檔案系統中了。

$mkdir my_partition

$sudo mount –t ext4 /dev/sdb1  curr_dir/my_partition

這種挂載是臨時的,重新開機就沒有了。在linux啟動時就自動挂載可以将其添加到/etc/fstab檔案中去。

總結:要操作檔案系統需要三個步驟:

(1)先建立分區, sudo fdisk /dev/sdb

(2)對分區格式化,并建立檔案系統:$ sudo mkfs.ext4 /dev/sdb1

(3)将檔案系統挂載到虛拟目錄下的某個挂載點:

8.2.3 檔案系統的檢查與修複。

fsck 指令能夠檢查和修複大部分類型的linux檔案系統。

指令格式:  fsck options filesystem

隻能在未挂載的檔案系統上運作fsck指令,對于已挂載的,可以先解除安裝,檢查完成再挂載。

8.3 邏輯卷管理

(這一節不是很明白,尴尬)

用标準分區在硬碟上建立了檔案系統,為已有檔案系統添加額外的空間是一件麻煩的事情。

隻能在同一個實體硬碟的可用空間範圍内調整分區大小,如果硬碟上沒有地方了,隻能搞個更大的硬碟,再手動将已有的檔案系統移動到新的硬碟上。

邏輯卷管理器(LVM):可以通過将另一個硬碟上的分區加入已有的檔案系統,動态的添加存儲空間。

優點是:不需要重建整個檔案系統的情況下,輕松的管理磁盤空間。

8.3.1邏輯卷管理布局

核心在于如何處理安裝在系統上的硬碟分區。

硬碟稱為實體卷(PV),每個實體卷都會映射到硬碟上特定的實體分區。

多個實體卷集中在一起可以形成一個卷組(VG)。

邏輯卷管理系統将卷組視為一個實體硬碟。

整個結構的最後一層的邏輯卷(LV),邏輯卷為linux提供了建立檔案系統的分區環境,類似于目前為止我們探讨的linux的實體硬碟分區。

Linux系統将邏輯卷視為實體分區。

8.3.2 linux中的LVM

Heina Mauelshagen開發的,1998年釋出到Linux社群。允許你在linux上用簡單的指令行管理一個完整的邏輯卷管理環境。

Linux LVM有兩個可用的版本:

(1)LVM1:隻能用于Linux核心2.4版本,僅提供基本的邏輯卷管理功能

(2)LVM2:可用于Linux核心2.6版本,提供了額外的功能

8.3.3使用Linux LVM

繼續閱讀