回覆列表
  • 1 # 電商星概念

    Linux的最重要特徵之一就是支援多種檔案系統。這樣它更加靈活並可以和許多其它種作業系統共存。在本文寫作時Linux已經支援15種檔案系統: ext,ext2,xia,minix,umsdos,msdos,vfat,proc,smb,ncp,iso9660,sysv,hpfs,affs 以及ufs。毫無疑問,今後支援的檔案系統型別還將增加。

    Linux和Unix並不使用裝置標誌符(如裝置號或驅動器名稱)來訪問獨立檔案系統,而是透過一個將整個檔案系統表示成單一實體的層次樹結構來訪問它。 Linux每安裝(mount)一個檔案系統時都會其加入到檔案系統層次樹中。不管是檔案系統屬於什麼型別,都被連線到一個目錄上且此檔案系統上的檔案將 取代此目錄中已存在的檔案。這個目錄被稱為安裝點或者安裝目錄。當解除安裝此檔案系統時這個安裝目錄中原有的檔案將再次出現。

    當磁碟初始化時(使用fdisk),磁碟中將新增一個描敘物理磁碟邏輯構成的分割槽結構。每個分割槽可以擁有一個獨立檔案系統如EXT2。檔案系統將檔案組織 成包含目錄,軟連線等存在於物理塊裝置中的邏輯層次結構。包含檔案系統的裝置叫塊裝置。Linux檔案系統認為這些塊裝置是簡單的線性塊集合,它並不關心 或理解底層的物理磁碟結構。這個工作由塊裝置驅動來完成,由它將對某個特定塊的請求對映到正確的裝置上去;此塊所在硬碟的對應磁軌、扇區及柱面數都被儲存 起來。不管哪個裝置持有這個塊,檔案系統都必須使用相同的方式來尋找並操縱此塊。Linux檔案系統不管(至少對系統使用者來說)系統中有哪些不同的控制器 控制著哪些不同的物理介質且這些物理介質上有幾個不同的檔案系統。檔案系統甚至還可以不在本地系統而在透過網路連線的遠端硬碟上。設有一個根目錄內容如下 的SCSI硬碟:

    A E boot etc lib opt tmp usr

    C F cdrom fd proc root var sbin

    D bin dev home mnt lost+found

    此時不管是使用者還是程式都無需知道他們現在操縱的這些檔案中的/C實際上是位於系統第一個IDE硬碟上並已安裝VFAT檔案系統。在此例中/E表示系統中第二個IDE控制器上的主IDE硬碟。至於第一個IDE控制器是PCI控制器和第二個則是控制IDE CDROM的ISA控制器無關緊要。當使用modem透過PPP網路協議來撥入網路時,可以將Alpha AXP Linux檔案系統安裝到/mnt/remote目錄下。

    檔案系統中的檔案是資料的集合;包含本章內容的檔案是一個名叫filesystems.tex的ASCII檔案。檔案系統不僅包含著檔案中的資料而且還有 檔案系統的結構。所有Linux使用者和程式看到的檔案、目錄、軟連線及檔案保護資訊等都儲存在其中。此外檔案系統中必須包含安全資訊以便保持作業系統的基 本完整性。沒人願意使用一個動不動就丟失資料和檔案的作業系統。

    Linux最早的檔案系統是Minix,它受限甚大且效能低下。其檔名最長不能超過14個字元(雖然比8.3 檔名要好)且最大檔案大小為64M位元組。64M位元組看上去很大,但實際上一個中等的資料庫將超過這個尺寸。 第一個專門為Linux設計的檔案系統被稱為擴充套件檔案系統(Extended File System)或EXT。它出現於1992年四月,雖然能夠解決一些問題但效能依舊不好。1993年擴充套件檔案系統第二版或EXT2被設計出來並新增到 Linux中。它是本章將詳細討論的檔案系統。

    將EXT檔案系統新增入Linux產生了重大影響。每個實際檔案系統從作業系統和系統服務中分離出來,它們之間透過一個介面層:虛擬檔案系統或VFS來通訊。

    VFS使得Linux可以支援多個不同的檔案系統,每個表示一個VFS的通用介面。由於軟體將Linux檔案系統的所有細節進行了轉換, 所以Linux核心的其它部分及系統中執行的程式將看到統一的檔案系統。 Linux的虛擬檔案系統允許使用者同時能透明地安裝許多不同的檔案系統。

    虛擬檔案系統的設計目標是為Linux使用者提供快速且高效的檔案訪問服務。同時它必須保證檔案及其資料的正確性。這兩個目標相互間可能存在衝突。當安裝一個檔案系統並使用時, Linux VFS為其快取相關資訊。此快取中資料在建立、寫入和刪除檔案與目錄時如果被修改,則必須謹慎地更新檔案系統中對應內容。 如果能夠在執行核心內看到檔案系統的資料結構, 那麼就可以看到那些正被檔案系統讀寫的資料塊。描敘檔案與目錄的資料結構被不斷的建立與刪除而裝置驅動將不停地讀取與寫入資料。這些快取中最重要的是Buffer Cache,它被整合到獨立檔案系統訪問底層塊裝置的例程中。當進行塊存取時資料塊首先將被放入Buffer Cache裡並根據其狀態儲存在各個佇列中。此Buffer Cache不僅快取資料而且幫助管理塊裝置驅動中的非同步介面。

  • 2 # 小丑魚莫林

    在Linux下用C或Python寫段程式碼,可以根據你的規則快速生成你想要的檔案,建立時間取決於你的硬碟速度。

  • 3 # 愛我自己14

    我知道如何快速搞定42億檔案,前提是你檔案系統的inode空間足夠大,可以容納這麼多。據經驗傳統檔案系統如ext3/4之類估計搞不定,新架構檔案系統如zfs,btrfs之類也許可以

  • 中秋節和大豐收的關聯?
  • 為什麼薛之謙最近總上熱搜?