Linux管理員手冊(3)--存貯介質

Linux管理員手冊(3)--磁盤和其餘存貯介質的使用
  安裝和升級系統時,須要對硬盤作不少工做。必須在硬盤上作文件系統,使文件能存在其上,併爲系統不一樣的部分保留空間。
  本章說明全部這些初始化工做。一般,一旦你創建了系統,就沒必要再作這些工做(除了使用軟盤)。若是你要增長一個新硬盤或更好地調整你的硬盤的使用,那麼可能回到這一章。
   管理磁盤的基本任務有:
  格式化磁盤。這爲磁盤進入使用作一些工做,好比檢查壞扇區。(如今多數硬盤無須格式化。)
  給硬盤分區,若是想用於互相不干擾的幾件事。分區的一個緣由是要在一個硬盤上存不一樣的操做系統。另外一個緣由是將用戶文件和系統文件分開,以簡化備份並在系統崩潰時有助於保護系統文件。
  在每一個磁盤或分區上創建合適類型的文件系統,而後文件就能夠在其上產生和存取。在你創建文件系統前,磁盤對Linux沒有意義。
  將不一樣的文件系統安裝起來造成一個單獨的樹結構,按須要能夠自動或手工完成。 (手工安裝的文件系統一般還要手工unmount)
  5章包括虛擬內存和磁盤cache的信息,使用磁盤應該知道這些。
  本章說明對硬盤、軟盤、CDROM和磁帶機應該知道什麼。
   2種設備
  UNIX及Linux,識別2類設備:隨機存取的塊設備(如磁盤)和字符設備(如磁帶和串行線),有些是串行的,有些是隨機存取的。文件系統支持的每種看來是個設備文件。當讀寫設備文件時,數據與設備聯繫。這樣沒有必要爲存取設備編制特別的程序(程序不直接獲取中斷或讀取串口),例如,發送文件到打印機,只需:
  $ cat filename > /dev/lp1
    $
  文件內容就被打印了(固然,文件必須是打印機能理解的格式)。固然,由於不該該讓多人同時cat文件到同一打印機,通常用特定的程序發送文件去打印(一般是lpr )。這個程序能確保同時只有一個文件被打印,並自動在完成後發送下一個。多數設備有相似須要。實際上,根本不多須要關心設備文件。
  由於設備被視爲文件系統中的文件(在/dev 目錄中),很容易看到存在哪些設備文件,使用ls 或其餘的適當的命令便可。在ls -l 的輸出中,第一列包含文件類型和權限。例如,查看我係統上的一個串行設備:
  $ ls -l /dev/cua0
    crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
    $
  第一列第一個字符,即crw-rw-rw-中的c告訴用戶文件的種類,這是一個字符設備。通常文件的第一個字符是"-",目錄是"d",塊設備是"b";更多的信息見ls man頁。
  注意即便設備沒有安裝,通常全部設備文件都存在。所以有/dev/sda 文件並不意味着你真的有個SCSI硬盤。有全部的設備文件使安裝程序更簡單,也易於增長新硬件(無須再爲產生新設備的設備文件找出正確的參數)。

   硬盤
  本節介紹有關硬盤的術語。若是你已經知道這些項目和內容,能夠跳過本節。
  硬盤包括一到數片盤片platters, 其一個或兩個面surfaces塗有磁性材料用於記錄數據。每面有一個讀寫頭read-write head用於讀寫數據。盤片有一個共同的軸,典型的旋轉速度是每分鐘3600轉,高性能的硬盤轉速可能更高。磁頭可沿着盤片的半徑移動,磁頭移動加上盤片旋轉可使詞頭存取磁盤表面的任何一個位置。
  處理器(CPU)和實際磁盤經過磁盤控制器disk controller通信。這使計算機其餘部分沒必要知道如何使用驅動器,由於不一樣磁盤的控制器能夠作成對計算機其餘部分相同的接口。這樣,計算機只要說"嗨,磁盤,給我我要的東西",而不是用一串長而複雜的電信號來移動磁頭到正確的位置,並等正確的位置到了磁頭下後再作那些不愉快的工做。 (實際上,到控制器的接口仍然很複雜,但比沒有好多了。) 控制器還能夠作一些其餘的事,好比緩衝,或自動壞扇區替換等。用電信號控制操做機械部件,
  以上只是理解硬件所需的。還有其餘好多工做,好比馬達旋轉磁盤、移動磁頭,但這都與理解硬盤工做原理無關。
  磁盤表面一般被分爲同心圓環,叫磁道tracks,磁道又被分爲扇區sectors。用這樣分來將磁盤定位,用於爲文件定位磁盤空間。要在硬盤上找到給定的位置,可能?quot;3面5道7扇區"。一般全部磁道有相同的扇區數,但也有硬盤在外圈磁道放較多的扇區(全部扇區用一樣大小的物理空間,這樣在較長的外圈磁道能夠容納更多的數據)。通常一個扇區容納512字節數據。磁盤不能處理比一個扇區更小的數據量。
  每一個面以相同的方式分爲磁道和扇區。這意味着當一個磁頭在某個磁道時,其餘磁頭也在相應的位置,全部相同位置的磁道組成柱面cylinder。磁頭從一個磁道(柱面)移動到另外一個須要花時間,因此將常常要在一塊兒存取的數據(如一個文件)放在一個柱面裏。這改善了性能。固然不可能徹底做到,文件被放在幾個相分離的位置叫碎片fragmented。
  磁盤的面(或頭,實際是同樣的)、柱面、扇區數各不相同,硬盤這些數目叫硬盤參數geometry。硬盤參數一般存在一個特定的、由電池供電的存儲區中,叫CMOS RAM,操做系統在引導啓動或驅動器初始化時能夠從那裏獲得硬盤參數。
  不幸的是,BIOS 有一個設計限制,就是不能在CMOS RAM中定義大於1024的磁道數,這對大硬盤來講就過小了。爲了克服這個問題,硬盤控制器在磁盤參數上作了一個欺騙,用地址轉換translates the addresses使計算機接受。例如,一個硬盤可能有8個磁頭,2048個磁道,每磁道35個扇區。其控制器能夠對計算機謊稱它有16個磁頭,1024個磁道,每磁道35個扇區,這樣就沒有超過磁道數的限制,地址轉換將磁頭數減半,磁道數加倍後傳給硬盤。實際的算法可能更復雜,由於數量可能不象咱們在這裏假設的這麼好(但這不影響咱們理解原理)。這個轉換在操做系統來看產生了錯覺,並可能影響操做系統對把全部數據存在相同柱面的企圖受到影響。
  轉換隻是IDE硬盤的問題。SCSI硬盤使用連續的扇區號(即控制器將連續的扇區好轉換成磁頭、柱面、扇區的三參數組),對CPU與控制器的通訊使用徹底不一樣的方法,所以不會有這個問題。注意,計算機可能根本不知道一個SCSI硬盤的實際參數。
  因爲Linux常常不知道一個硬盤的真正參數,其文件系統也不試圖將文件存在一個柱面裏。而是爭取給一個文件分配連續編號的山區,這樣能獲得相似的性能。對於控制器上有cashe或控制器能自動預取的硬盤,狀況將更復雜。
  每一個硬盤表現爲一個單獨的設備文件。一般只能有2-4個IDE硬盤。這就是 /dev/hda , /dev/hdb , /dev/hdc , 和 /dev/hdd 。 SCSI是 /dev/sda , /dev/sdb , 等等。其餘硬盤類型有相似的命名約定,更多的信息見[Anv]。注意硬盤的設備文件給出整個硬盤的存取,而不是分區(下面討論的),所以若是不當心可能搞亂分區或數據。硬盤的設備文件只在存取主引導扇(也將在下面討論)時使用。
   軟盤
  軟盤的一面或兩面塗有和硬盤相似的磁性介質。軟盤本身沒有讀寫頭,讀寫頭在驅動器上。軟盤至關於硬盤的一張盤片,但可移動,一個驅動器能夠存取不一樣的軟盤,而硬盤則是一個獨立的單元。
  如同硬盤,一張軟盤也分爲磁道和扇區(軟盤2面上的相同的磁道組成柱面),但數量要比硬盤少得多。
  軟驅一般可使用幾中不一樣的盤片,例如,一個3.5'軟驅可使用720KB和1.44MB的軟盤。由於軟驅操做有些不一樣,而操做系統必須知道軟盤的容量,因此軟驅有許多設備文件,每一個都與軟驅和軟盤種類有關。所以,/dev/fd0H1440 是第一個軟驅(fd0),必須是3.5'軟驅,使用3.5'高密度軟盤(H),容量是1440KB(1440),即普通的3.5'HD軟盤。軟盤設備的命名約定見[Anv]。
  軟驅的名字是複雜的,所以Linux有一個特定的軟驅設備類型,能自動檢測軟驅中軟盤的種類。它使用不一樣的軟盤類型試圖讀取新插入的軟盤的第一個扇區,直到找到正確的一個。這天然要求軟盤是已經格式化過的。自動設備叫/dev/fd0 、/dev/fd1 等。
  存取軟盤的自動設備的參數可用程序setfdprm 設定。這可以使你使用不是一般容量的軟盤,例若有非標準扇區數的軟盤,或自動檢測因爲某種緣由失敗或適當的設備文件丟失。
  Linux除了全部標準的,還能處理許多非標準的軟盤格式。這有時須要特殊的格式化程序。咱們如今先跳過這些軟盤格式,同時你能夠查看/etc/fdprm 文件。它定義了setfdprm 識別的設定。
  操做系統必須知道軟驅什麼時候換了軟盤,例如,以避免使用上一張軟盤的cache數據。不幸的是,當用於此的信號線斷了或很差時,當在MSDOS中使用時,這並不總有效。若是你曾遇到過軟驅的這種怪異的問題,多是這個緣由。解決這個問題的惟一方法是修理軟驅。
   CD-ROM
  CD-ROM驅動器使用一個光學可讀的塑料塗布的盤片。信息記錄在盤片表面 的從中心的邊沿的螺旋型小坑上。驅動器發出一束激光來讀盤。當激光射到小坑上,激光以一種方式反射;當它射到光滑表面上,它以另外一種方式反射。這很容易地編碼成bit,組成信息。其餘很容易,不過是機械。
  CD-ROM驅動器比硬盤慢。典型的硬盤的平均尋道(seek)時間小於15毫秒,而快速的CD-ROM驅動器要花零點幾秒。實際數據傳輸率則至關快,在數百KB/s。速度慢使CDROM驅動器不能代替硬盤使用 (有些Linux distributions提供"live" CD-ROM文件系統,使之沒必要拷貝文件到硬盤,使安裝簡單並節約了許多硬盤空間),雖然是可能的。要安裝新軟件,CD-ROM很好,由於在安裝時速度並不是最重要的。
  有多種方法在CDROM上安排數據。最流行的是國際標準化組織定義的ISO9660。這個標準定義了一個最小的文件系統,甚至比MSDOS更粗糙。這樣,因爲它是這麼小,全部操做系統均可以將它映射到本身的系統。
  不一樣UNIX不能使用ISO9660文件系統,所以開發了對這個標準的一個加強,叫Rock Ridge加強。 Rock Ridge容許長文件名、符號鏈接和許多其餘優勢,使CD-ROM更象UNIX文件系統。同時,Rock Ridge文件系統仍然是一個有效的ISO9660文件系統,使非UNIX同樣可使用。 Linux同時支持ISO9660和Rock Ridge加強,加強被自動識別和使用。
  文件系統只是一部分,許多CD-ROM包含的數據須要特定的程序存取,而多數程序不能運行在Linux下 (固然,可能運行在Linux的MSDOS仿真器dosemu下)。
  CD-ROM驅動器經過相關的設備文件存取。有多種方法將CDROM鏈接到計算機:SCSI、聲卡或EIDE。要完成這的硬件hacking工做超出了本書的範圍,但鏈接方法決定了設備文件。指導見[Anv]
   磁帶
  磁帶驅動器使用磁帶,相似 音樂用的盒帶。磁帶是串行的,即若是要獲得給定部分的數據,必須通過全部部分。磁盤能夠隨機存取,便可以直接跳到磁盤上的某個部分。串行存取的磁帶固然慢了。
  另一方面,磁帶至關便宜,由於無須快速。也容易作得很長,所以能夠容納大量的數據。這使磁帶很適於如歸檔、備份等無須高速的、但須要低成本和大容量的事情。
   格式化
  格式化在磁介質上寫用於標記磁道和扇區的標誌的過程。磁盤格式化前,其磁表面是完成的一塊。格式化後,混沌變爲秩序,創建的磁道,劃分了扇區。實際細節並不是準確地這樣,但重要的是:磁盤不通過格式化是不能使用的。
  這裏術語有些模糊:MS-DOS中,格式化(format)這個詞還包括了產生文件系統的過程(下面將討論的)。這兩個過程常常一塊兒使用,尤爲是軟盤。當必須區分時,真正的格式化被稱爲低級格式化low-level formatting,而創建文件系統被成爲高級格式化high-level formatting。在UNIX圈中,這二者叫格式畫format和創建文件系統make a filesystem,本書中也這樣稱。
  IDE硬盤和一些SCSI硬盤實際上廠商已經作了格式化,並沒有須重複;由於多數人無須關心它。實際上,格式化硬盤可能反而很差,好比由於硬盤可能須要用特定的方法格式化使壞扇區被自動替換。
  磁盤常常須要特定的程序來格式化,由於驅動器的格式化邏輯的接口每一個驅動器都不同。格式化程序常常在控制器BIOS上,或用MSDOS程序提供,這都不太容易在Linux中使用。
  格式化中可能會發現磁盤的壞點,叫壞塊bad blocks or bad sectors。這有時由驅動器本身處理。但有時,若是壞塊太多,須要一些工做來避免使用磁盤的這部分。 The logic to do this is built into the filesystem; 下面將說明如何增長這些信息到文件系統。另外,產生一個只覆蓋這些壞的部分的小分區也是一個辦法。若是壞區較大,這多是個好辦法,由於文件系統有時難以處理大量的壞區。
  軟盤格式化使用fdformat 。軟盤設備使用給定的參數,例以下面的命令在第一個軟驅中格式化一張高密度3.5'軟盤:
  $ fdformat /dev/fd0H1440
    Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
    Formatting ... done
    Verifying ... done
    $
  注意,若是想使用自動檢測設備(如/dev/fd0 ), 必須用先setfdprm 設定參數。要獲得與上面同樣的結果,能夠這樣:
  $ setfdprm /dev/fd0 1440/1440
    $ fdformat /dev/fd0
    Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
    Formatting ... done
    Verifying ... done
    $
  選擇與軟盤類型相符的正確的設備文件一般更方便。注意,比軟盤設計格式化更多的信息容量是沒有意義的。
  fdformat 也將驗證軟盤,例如檢查壞塊。它在壞塊試驗幾回(你一般能聽到,驅動器的噪聲很明顯)。 If the floppy is only marginally bad (due to dirt on the read/write head, some errors are false signals), fdformat 可能沒事,而真正的錯誤可能退出有效過程。核心把發現的每一個I/O錯誤打印log信息,送到控制檯,或者,若是使用了syslog ,也送到/usr/adm/messages 文件。fdformat 本身不說明哪裏出錯(也沒必要考慮,軟盤很便宜,壞了就扔)。
  $ fdformat /dev/fd0H1440
    Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
    Formatting ... done
    Verifying ... read: Unknown error
    $
  badblocks 命令可用於查找任何磁盤或分區的壞塊(包括軟盤)。它不格式化磁盤,所以能夠用於檢查存在的文件系統。下面的例子檢查出一張3.5'軟盤上的2個壞塊:
  $ badblocks /dev/fd0H1440 1440
    718
    719
    $
  badblocks 輸出發現的壞塊的塊號。多數文件系統能夠避免這樣的壞塊。他們維護一個已知的壞塊列表,在文件系統創建時初始化,並能夠在之後修改。初始的壞塊查找可由mkfs 命令完成(它初始化文件系統),之後能夠用badblocks 來檢查,新的塊能夠用fsck 加入。後面咱們將說明mkfs 和fsck 。
  許多新型的硬盤自動發現壞塊,並企圖用一個特定的、保護的好塊來代替它。這對操做系統是不可見的。這種特徵應該在硬盤手冊的文檔中,若是你好奇的話。但即便這樣的硬盤也可能失敗,若是壞塊數量太大的話,雖然若是這樣,那硬盤就基本上不能用了。
分區
  一個硬盤可分爲幾個分區。每一個分區好象是單獨的硬盤。這樣,你若是隻有一個硬盤,卻想安裝2個操做系統,你能夠把這個硬盤分爲2個分區。每一個操做系統任意使用本身的分區而不干擾另外一個。這種方法,2個操做系統能夠在同一硬盤上和平共處。若是沒有分區,你只能爲每一個操做系統購買一個硬盤。
  軟盤不分區。這沒有技術緣由,只由於過小,沒有必要。CDROM通常也不分區,由於做爲一個大盤更易於使用,並且不多有多操做系統的須要。
MBR(主引導記錄), 啓動扇區和分區表
  一個硬盤如何分區的信息存在它的第一個扇區(即第一面第一道第一扇區)。這個第一扇區是硬盤的主引導記錄(MBR);這是計算機啓動時BIOS讀入和啓動的扇區。主引導記錄包括一段小程序,讀入分區表,檢查哪一個分區是活動分區(即啓動分區),並讀入活動分區的第一個扇區:該分區的啓動扇區(MBR也是啓動扇區,只不過由於其特殊地位,因此使用特殊的名字)。這個啓動扇區包括另外一個小程序,讀入這個分區(假設是可啓動的)上操做系統的第一個部分,而後啓動它。
  這個分區方案不是內置於硬件和BIOS的,只是許多操做系統遵循的約定。並不是全部的操做系統都遵循這個約定,也有例外。有些操做系統支持分區,但他們佔領硬盤上的一個分區,而後使用他們本身的內部分區方法管理這個分區。較新的操做系統能夠和其餘操做系統和平共處(包括Linux),而無需特殊的措施,但不支持分區的操做系統沒法在同一硬盤上與其餘操做系統共存。
  爲安全預防,最好先在紙上寫下分區表,這樣在錯誤發生時不會丟失你的文件。(可使用fdisk 修復壞的分區表)。 )相關信息可用fdisk -l 命令給出:
  $ fdisk -l /dev/hda
  Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
    Units = cylinders of 855 * 512 bytes
  Device Boot Begin Start End Blocks Id System
    /dev/hda1 1 1 24 10231+ 82 Linux swap
    /dev/hda2 25 25 48 10260 83 Linux native
    /dev/hda3 49 49 408 153900 83 Linux native
    /dev/hda4 409 409 790 163305 5 Extended
    /dev/hda5 409 409 744 143611+ 83 Linux native
    /dev/hda6 745 745 790 19636+ 83 Linux native
    $
擴展和邏輯分區
  PC硬盤的最初的分區方案只容許4個分區。實際使用中這太少了,好比有人想裝多於4個操做系統 (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT等),或有時一個操做系統有多個分區更好,例如因爲速度的緣由,Linux的對換區最好單獨使用本身的分區,而不是在主 Linux分區中(下文詳述)。
  爲克服這個設計問題,發明了擴展分區。這個方法容許將基本分區分爲若干子分區,於是被子分區的基本分區稱爲擴展分區,而子分區稱爲邏輯分區,他們的表現相似基本分區 ,但產生方法不一樣。他們之間沒有速度差異。
  硬盤的分區結構可能相似。這個硬盤被分爲3個基本分區,第二個被分爲2個邏輯分區。部分硬盤根本沒有分區。硬盤是一個總體,每一個基本分區有一個啓動扇區。
分區種類
  分區表(MBR和擴展分區裏都有)中,對每一個分區,有一個字節指出分區種類。這試圖肯定使用該分區的操做系統,或用於何操做系統。其目的是避免2個操做系統使用同一分區。可實際上,操做系統並不真的注意分區種類字節;例如,Linux根本無論它是什麼。較壞的狀況是,有些操做系統錯誤地使用它:例若有些版本的DR-DOS忽略了它的最高位(MSB),而其餘一些系統則不是。
  沒有一個標準化組織定義分區種類字節每一個值的意義,但一些共同接受的值包括在表 4.1中。相同的列表能夠經過Linux的fdisk 命令獲得。
給硬盤分區
  有許多產生和刪除分區的程序。許多操做系統自帶,最好使用其自帶的,除非要作一些它不能做到的。許多這種程序叫fdisk , 包括Linux, 或其變種。 Linux fdisk 的使用細節可見其Man手冊。 cfdisk 命令相似fdisk , 但有更好的用戶界面(全屏的)。
  使用IDE硬盤時,啓動分區(帶可啓動核心映象文件的分區)必須全在前1024個柱面內。這是由於硬盤經過BIOS啓動(在系統進入保護模式前),而BIOS不能處理多於1024柱面。有時也可能使用部分在前1024柱面的啓動分區,這要求全部用BIOS讀入的文件都在前1024柱面內。因爲這難與安排,所以這是個不好的主意;你不可能知道何時核心升級或磁盤碎片整理會致使系統沒法啓動。所以,應該確認你的啓動分區徹底在前1024柱面內。
  事實上,一些新版的BIOS和IDE硬盤能夠處理多於1024柱面。若是你有這樣一個系統,你能夠忘卻這個問題;若是你不能確認,仍是把啓動分區放在前1024柱面內。
  每一個分區擁有一塊連續的扇區。由於Linux文件系統使用1 kB的塊,即2個扇區,因此奇數個扇區會致使最後一個扇區不能使用,這不會有什麼問題,但很差,有些版本的 fdisk 會對此給出警告。
  改變分區大小通常要求首先備分此分區想保留的全部東西(爲防萬一,最好備分整個硬盤),而後刪除此分區,產生新分區,最後回存全部東西到新分區。若是是擴大分區,你可能須要調整相鄰分區的大小(並備分、回存)。
  因爲改變分區大小是如此痛苦,最好一次就肯定。或擁有一個有效而易用的備分系統。若是你經過無須太多人工干預的介質安裝(例如CDROM,而不是軟盤),那麼開始能夠比較容易地玩玩各類設置。由於你無須備分什麼數據,改幾回分區大小不會太過痛苦。
  有個MSDOS的程序叫fips , 能夠無須備分和回存地改變MSDOS分區的大小, 但對其餘文件系統,備分回存仍是必須的。
設備文件和分區
  每一個分區和擴展分區有本身的設備文件。這些文件的命名規定是在整個盤的名字加分區號,並約定1-4是基本分區(無論真的有幾個基本分區),5-8是邏輯分區(無論它在哪一個基本分區中)。例如,/dev/hda1 是第一個IDE硬盤的第一個基本分區,而/dev/sdb7 是第二個SCSI硬盤的第三個擴展分區。設備列表 [Anv]給出更詳細的信息。
文件系統
什麼是文件系統?
  文件系統是操做系統用於明確磁盤或分區上的文件的方法和數據結構;即在磁盤上組織文件的方法。也指用於存儲文件的磁盤或分區,或文件系統種類。所以,能夠說"我有2個文件系統"意思是他有2個分區,一個存文件,或他用 "擴展文件系統",意思是文件系統的種類。
  磁盤或分區和它所包括的文件系統的不一樣是很重要的。少數程序(包括最有理由的產生文件系統的程序)直接對磁盤或分區的原始扇區進行操做;這可能破壞一個存在的文件系統。大部分程序基於文件系統進行操做,在不一樣種文件系統上不能工做。
  一個分區或磁盤能做爲文件系統使用前,須要初始化,並將記錄數據結構寫到磁盤上。這個過程就叫創建文件系統。
  大部分UNIX文件系統種類具備相似的通用結構,即便細節有些變化。其中心概念是超級塊superblock, i節點inode, 數據塊data block,目錄塊directory block, 和間接塊indirection block。超級塊包括文件系統的整體信息,好比大小(其準確信息依賴文件系統)。 i節點包括除了名字外的一個文件的全部信息,名字與i節點數目一塊兒存在目錄中,目錄條目包括文件名和文件的i節點數目。 i節點包括幾個數據塊的數目,用於存儲文件的數據。 i節點中只有少許數據塊數的空間,若是須要更多,會動態分配指向數據塊的指針空間。這些動態分配的塊是間接塊;爲了找到數據塊,這名字指出它必須先找到間接塊的號碼。
  UNIX文件系統一般容許在文件中產生孔(hole) (用lseek ; 請看手冊), 意思是文件系統僞裝文件中有一個特殊的位置只有0字節,但沒有爲這文件的這個位置保留實際的磁盤空間(這意味着這個文件將少用一些磁盤空間)。這對小的二進制文件常常發生,Linux共享庫、一些數據庫和其餘一些特殊狀況。 (孔由存儲在間接塊或i節點中的做爲數據塊地址的一個特殊值實現,這個特殊地址說明沒有爲文件的這個部分分配數據塊,即,文件中有一個孔。)
  孔有必定的用處。在筆者的系統中,一個簡單的測量工具顯示在200MB使用的磁盤空間中,因爲孔,節約了大約4MB。在這個系統中,程序相對較少,沒有數據庫文件。有關這個測量工具的細節請看附錄 A.
Filesystems galore
  Linux支持多種文件系統。下面是最重要的幾個:
minix
  最老的,相信是最可靠的,但缺乏特點(有些沒有時間標記,文件名最長30個字符),能力有侷限(每一個文件系統最多64MB)。
xia
  minix文件系統的一個修正版本,提高了文件名和文件系統大小的侷限,但沒有新的特點。不太流行,但聽說工做得很好。
ext2
  最好的Linux本身的文件系統,也是當前最通用的。其設計易於向上兼容,因此新版的文件系統代碼無需重作已有的文件系統。
ext
  ext2的老版,且不向上兼容。難於用新版安裝程序安裝,大部分人都改用ext2。
  另外,支持多種其餘現存的外圍文件系統,很容易與其餘外圍文件系統交換文件。這些外圍文件系統好象是本身的同樣,除了可能缺乏一些通常UNIX的特徵,或有些不一樣的侷限。
msdos
  與MSDOS、OS/2等的FAT文件系統兼容。
umsdos
  Linux下的擴展msdos文件系統驅動,支持長文件名、全部者、容許權限、鏈接和設備文件。容許一個普通的msdos文件系統用於Linux,而無須爲Linux創建單獨的分區。
iso9660
  標準CDROM文件系統,通用的Rock Ridge加強,容許長文件名。
nfs
  網絡文件系統,容許多臺計算機之間共享文件系統,易於從全部這些計算機上存取文件。
hpfs
  OS/2文件系統。
sysv
  SystemV/386, Coherent, 和Xenix文件系統。
  根據狀況選擇文件系統。如兼容性或其餘緣由必需使用非Linux文件系統,那就必須用。若是能夠自由選擇,可能最明智的選擇是ext2,由於它擁有所有特徵而無須忍受性能缺陷。
  還有proc文件系統, 通常在/proc 目錄, 它不是一個真正的文件系統,雖然好象是。proc文件系統使用戶易於存取所有核心數據結構,好比進程列表。它使這些數據結構看起來象個文件系統,且此文件系統能夠用全部通常的文件工具操做。例如,要獲得全部進程的列表,可使用命令
$ ls -l /proc
  total 0
  dr-xr-xr-x 4 root root 0 Jan 31 20:37 1
  dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63
  dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94
  dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95
  dr-xr-xr-x 4 root users 0 Jan 31 20:37 98
  dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99
  -r--r--r-- 1 root root 0 Jan 31 20:37 devices
  -r--r--r-- 1 root root 0 Jan 31 20:37 dma
  -r--r--r-- 1 root root 0 Jan 31 20:37 filesystems
  -r--r--r-- 1 root root 0 Jan 31 20:37 interrupts
  -r-------- 1 root root 8654848 Jan 31 20:37 kcore
  -r--r--r-- 1 root root 0 Jan 31 11:50 kmsg
  -r--r--r-- 1 root root 0 Jan 31 20:37 ksyms
  -r--r--r-- 1 root root 0 Jan 31 11:51 loadavg
  -r--r--r-- 1 root root 0 Jan 31 20:37 meminfo
  -r--r--r-- 1 root root 0 Jan 31 20:37 modules
  dr-xr-xr-x 2 root root 0 Jan 31 20:37 net
  dr-xr-xr-x 4 root root 0 Jan 31 20:37 self
  -r--r--r-- 1 root root 0 Jan 31 20:37 stat
  -r--r--r-- 1 root root 0 Jan 31 20:37 uptime
  -r--r--r-- 1 root root 0 Jan 31 20:37 version
  $
  (可能有些文件與進程不符。上面的例子被簡短了。)
  注意雖然叫文件系統,proc文件系統沒有一個部分與磁盤有關,它只在核心映象中存在。任何人任什麼時候候想看proc文件系統的任何部分,核心使它看起來好象這部分在什麼地方存在(雖然沒有)。所以,雖然/proc/kcore 文件有好多兆字節,但它根本沒用任何磁盤空間。
應該用哪一個文件系統?
    通常沒有什麼理由用許多不一樣的文件系統。當前,ext2fs是最流行的,多是最明智的選擇。根據記錄結構、速度、(感受的)可靠性、兼容性和其餘不一樣的理由,適當地使用其餘文件系統。個別狀況須要個別決定。
創建文件系統
  用mkfs 命令創建文件系統,即初始化。實際上,對每一個不一樣種類的文件系統有一個單獨的程序。 mkfs 只是爲了創建不一樣文件系統種類肯定運行不一樣程序的一個前端。用-t fstype選項選擇種類。
  被mkfs 調用的程序有不一樣的命令行接口。最通用和最重要的選項以下,細節請看手冊。
-t fstype
  選擇文件系統種類。
-c
  查找壞塊,初始化壞塊列表。
-l filename
  從文件filename讀入壞塊列表。
用以下命令在軟盤上產生ext2文件系統:
  $ fdformat -n /dev/fd0H1440
  Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
  Formatting ... done
  $ badblocks /dev/fd0H1440 1440 > bad-blocks
  $ mkfs -t ext2 -l bad-blocks /dev/fd0H1440
  mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
  360 inodes, 1440 blocks
  72 blocks (5.00%) reserved for the super user
  First data block=1
  Block size=1024 (log=0)
  Fragment size=1024 (log=0)
  1 block group
  8192 blocks per group, 8192 fragments per group
  360 inodes per group
Writing inode tables: done
  Writing superblocks and filesystem accounting information: done
  $
    首先,格式化軟盤(-n選項不進行確認,即壞塊檢查)。而後用badblocks 查找壞塊, 輸出定向到文件bad-blocks。最後,產生文件系統,壞塊列表由文件badblocks 初始化。
  -c選項能夠與mkfs 一塊兒使用,而無須badblocks 和一個單獨的文件。以下:
$ mkfs -t ext2 -c /dev/fd0H1440
  mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
  360 inodes, 1440 blocks
  72 blocks (5.00%) reserved for the super user
  First data block=1
  Block size=1024 (log=0)
  Fragment size=1024 (log=0)
  1 block group
  8192 blocks per group, 8192 fragments per group
  360 inodes per group
Checking for bad blocks (read-only test): done
  Writing inode tables: done
  Writing superblocks and filesystem accounting information: done
  $
    使用-c比用單獨使用badblocks 更方便, 但創建文件系統後檢查,badblocks 是必要的。
  在硬盤或分區上準備文件系統的過程和軟盤是同樣的,除了無須格式化。
Mount和unmount
  一個文件系統可使用以前,必須mount。操做系統而後作一些記錄以確認正常。由於UNIX全部的文件在一個目錄樹中, mount操做的結果使新的文件系統的內容好象在某個已經mount的文件系統的一個已經存在的子目錄中。
  上面的mount可能使用以下命令:
$ mount /dev/hda2 /home
  $ mount /dev/hda3 /usr
  $
    mount 命令使用2個參數。第一個是與包括文件系統的磁盤或分區相關的設備文件。第二個是要mount到的目錄。 mount之後,這2個文件系統的內容好象是/home 和/usr 目錄。這樣就能夠說:/dev/hda2 被mount到 /home , /usr 也一樣。要看每一個文件系統,就看其被安裝的目錄,好象它就是在那裏。注意設備文件的區別,/dev/hda2 , 和安裝到的目錄/home 。設備文件給出硬盤原始內容的存取,安裝到的目錄給出磁盤上文件的存取。安裝到的目錄叫安裝點。
  Linux支持許多文件系統。mount 會試着猜想文件系統種類。也可使用-t fstype 選項直接定義種類;這有時是必要的,由於自檢測mount 並不是總能成功。例如要mount一個MSDOS軟盤,能夠用以下命令:
$ mount -t msdos /dev/fd0 /floppy
  $
  安裝點目錄沒必要是空的,但必須存在。其中的全部文件當文件系統mount後將不可用名字存取(已經打開的文件將繼續可存取。有其餘目錄硬鏈接的文件能夠經過那些名字存取)。這沒有壞處,反而可能更有用。例如,有人喜歡將/tmp 和/var/tmp 做爲同義,將/tmp 做爲/var/tmp 的符號鏈接。系統啓動時,在/usr 文件系統被mount以前,使用駐留在根文件系統的 /var/tmp 目錄。當/usr 被mount上之後,根文件系統上的/var/tmp 將不可用,若是根文件系統上不存在 /var/tmp ,那麼在mount上/var 以前將不可能使用暫存文件。
  若是不打算在一個文件系統上寫任何東西,可使用mount 的-r開關作一個只讀mount。這將使核心中止任何對此文件系統的寫要求,也將中止核心的對i節點的文件存取時間的更新。只讀mount對不可寫介質是必要的,例如CDROM。
  細心的讀者可能已經注意到一個小的邏輯問題。第一個文件系統(叫根文件系統,由於它包含根目錄)如何mount,由於很明顯,它不能mount到另外一個文件系統? Well, the answer is that it is done by magic. The root filesystem is magically mounted at boot time, and one can rely on it to always be mounted-- 若是根文件系統不能mount,系統將不能啓動。 The name of the filesystem that is magically mounted as root 被編譯進核心,或用LILO或rdev 設置。
  根文件系統一般先被只讀mount。而後啓動手稿運行fsck 校驗它的有效性,若是沒有問題,將re-mount它,使之可寫。fsck 不能運行於一個已mount的文件系統,由於fsck 運行時,任何文件系統的改變將致使錯誤。由於根文件系統在被檢查時是隻讀,fsck 能夠無慮地修復任何問題,由於re-mount 操做將刷新文件系統在內存中的全部數據。
  在有其餘文件系統的許多系統中,啓動時要自動mount,能夠在/etc/fstab 文件中定義:文件格式細節請參考fstab 的手冊頁。 mount特別的文件系統的特別細節依賴於許多因素,能夠根據須要由每一個管理員設置。 When the chapter on booting is finished, you may read all about it there.
  當一個文件系統不須要再mount着,能夠用umount . umount 加一個參數unmount它,參數能夠是設備文件或安裝點。例如,要unmount上面例子中的目錄,能夠用:
$ umount /dev/hda2
  $ umount /usr
  $
  要了解使用這個命令的更多的說明,參閱手冊。注意:記住unmount已經mount的軟盤, 而不能僅僅將軟盤彈出軟驅!因爲磁盤緩衝,在你unmount軟盤以前無須回寫,所以過早取出軟盤將致使內容不正確。只從軟盤上讀還沒關係,若是寫,就可能發生災難性的損失。
  mount和umount須要超級擁護特權,即只有root 用戶能夠作。緣由是:若是任何用戶均可以mount軟盤到任何目錄,那麼很容易用軟盤作,好比,用特洛伊***替換/bin/sh , 或者其餘經常使用的程序。可是容許用戶使用軟盤常常又是必要的,有幾種方法:
  給用戶root 口令,很明顯這對安全不利,可是最簡單的方法。若是沒有安全要求,這個方法很好,好比在非網絡的、我的系統上。
  使用一個程序好比sudo 容許擁護使用mount。這一樣對安全不利,但沒有直接給任何人超級用戶特權。
  讓用戶使用mtools , 這是一個利用MSDOS文件系統的軟件包,無須mount。若是是MSDOS軟盤這樣作很好,不然很差。
  在/etc/fstab 中用合適的選項列出軟驅設備和容許的安裝點。
  最後一個選擇能夠在/etc/fstab 文件中加相似下面的一行來完成:
  /dev/fd0 /floppy msdos user,noauto 0 0
  各列分別是:要mount的設備文件,要安裝到的目錄,文件系統類型,選項,備份頻率(用於dump ) 和fsck 次序(定義啓動時文件系統被檢查的次序,0表示不檢查)。
noauto選項使系統啓動是不自動mount(即, it stops mount -a from mounting it)。 user容許任何用戶mount這個文件系統,而且,因爲安全緣由,不容許執行程序(normal or setuid) and interpretation of device files from the mounted filesystem。這樣,任何用戶均可以用以下命令mount一個msdos文件系統的軟盤:
$ mount /floppy
  $
  軟盤能夠用相關的umount 被unmount。
  若是想提供多種軟盤的存取,須要給出多個安裝點。對每一個安裝點的設置能夠不一樣。例如,提供MSDOS和ext2文件系統的存取,能夠在/etc/fstab 文件中加以下行:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
  /dev/fd0 /ext2floppy ext2 user,noauto 0 0
  對於MSDOS文件系統(不只是軟盤),可能須要用uid, gid,和umask 文件系統選項來限制存取權限,請看mount 手冊頁。若是不當心,mount一個MS-DOS文件系統將給予任何用戶至少是讀權限,這可不是一個好主意。
用fsck檢查文件系統完整性
  文件系統很複雜,所以易於發生錯誤。能夠用fsck 命令檢查文件系統是否正確和有效。它能夠根據指令修復找到的小錯誤,並將未修復錯誤報告用戶。幸運的是,文件系統的代碼很是有效,因此根本極少出現問題,而且問題一般緣由是電源失敗、硬件失敗、或操做錯誤,例如沒有正常關閉系統。
  大多數系統設置爲啓動時自動運行fsck ,所以任何錯誤將在系統使用前被檢測到(並根據但願修正)。使用有錯誤的文件系統可能使問題變得更壞:若是數據結構有問題,使用這個文件系統可能使之更糟,致使更多的數據丟失。固然,在大的文件系統上運行fsck 會花必定的時間,若是系統正常關閉,幾乎從不發生錯誤,所以有一些方法能夠不進行檢查。若是文件/etc/fastboot 存在,就不檢查。另外,若是ext2文件系統在超級快中有一個特定的標記告知該文件系統在上次mount後沒有正常unmount. 若是標記指出unmount正常完成(假設正常unmount指出沒問題),e2fsck (fsck 的ext2文件系統版) 就不檢查系統。/etc/fastboot 是否影響系統依賴於你的啓動手稿,但ext2標記則在你使用e2fsck 時發生做用--基於一個e2fsck 選項(參閱e2fsck 手冊頁)
  自動檢查只對啓動時自動mount的文件系統發生做用。使用fsck 手工檢查其餘文件系統,好比軟盤。
  若是fsck 發現爲修復的問題,你須要深刻了解文件系統的通常工做原理和有問題的文件系統的細節,或好的備份。最後一個辦法容易(雖然冗長)安排,若是你本身不知道,有時能夠經過朋友、Linux新聞組、電子郵件列表或其餘支持源安排。我很想告訴你更多,但我對這的學習和實踐也並很少。Theodore T'so的debugfs 程序應該有用。
  fsck 只能運行於未mount的文件系統,不要用於已mount的文件系統(除了啓動時的只讀根文件系統)。這是由於它存取原始磁盤,在操做系統不知道的狀況下修改文件系統。 There will be trouble, if the operating system is confused.
用badblocks檢查磁盤錯誤
  應該週期性地用badblocks 命令檢查壞塊它輸出找到的全部壞塊的編號的列表。列表給fsck 記錄在文件系統數據結構中,使操做系統存儲數據時不使用這些壞塊。舉例:
$ badblocks /dev/fd0H1440 1440 > bad-blocks
  $ fsck -t ext2 -l bad-blocks /dev/fd0H1440
  Parallelizing fsck version 0.5a (5-Apr-94)
  e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
  Pass 1: Checking inodes, blocks, and sizes
  Pass 2: Checking directory structure
  Pass 3: Checking directory connectivity
  Pass 4: Check reference counts.
  Pass 5: Checking group summary information.
/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****
  /dev/fd0H1440: 11/360 files, 63/1440 blocks
  $
  若是badblocks報告一個塊已經使用,e2fsck 將試着將此塊移到其餘地方。若是該塊真的壞了,而不是在壞塊邊緣,文件內容可能丟失。
Fighting fragmentation
  文件寫到磁盤時,不必定在連續的塊中。沒在連續塊中的文件叫碎片。由於磁盤的讀寫頭回更多地移動,讀碎片文件會花較長的時間。雖然若是有好的讀前緩衝系統不會有什麼問題,但最好仍是避免碎片。
  Ext2文件系統試圖使碎片最少,即便不能將一個文件的全部塊存在連續扇區中,也儘可能靠近。 Ext2一般有效地安排裏文件其餘塊最近的空閒塊,所以不多須要關心碎片問題。 Ext2文件系統有一個消除碎片程序,請看參考書目中的 [TV]。
  有許多MSDOS消碎片程序在文件系統中移動塊以消除碎片。其餘一些文件系統,消碎片必須經過備份-重產生-回存文件系統來完成。對於全部文件系統,消碎片應該備份文件系統,由於不少緣由可能在消碎片過程當中致使錯誤。
  對全部文件系統的其餘工具
  一些其餘工具對管理文件系統有用。 df (Disk Free)顯示一個或多個文件系統的空閒磁盤空間。 du (Disk Usage)顯示一個目錄和其內的全部文件使用了多少磁盤空間。這用於發現磁盤空間浪費。
  sync 強制將磁盤緩衝的全部未寫塊寫入磁盤(見 5.6)。這通常無須手工完成,由守護進程update 自動完成。這在有些狀況下頗有用,例如,若是update 或其輔助進程bdflush 死了,或你不能等運行update 必須立刻 關閉電源。
對ext2文件系統的其餘工具
  除了產生文件系統的mke2fs 和檢查文件系統的e2fsck 直接或經過與文件系統類型無關的前端存取外,Ext2文件系統還有幾個有用的工具。
  tune2fs 調整文件系統參數。一些有趣的參數有:
  最大mount數。當文件系統被mount過多少次之後,即便標誌是乾淨的,e2fsck 強制檢查。對用於開發或測試的系統,應該下降這個限制數。
  最大檢查間隔。到達這個間隔時間,即便標誌是乾淨的,e2fsck 強制檢查。若是文件系統不是常常mount,能夠不使能這個功能。
  保留給root的塊數。Ext2給root保留一些塊,這樣若是文件系統滿了,還可能無須刪除任何東西作系統管理。保留量確省是5%,這在大多數磁盤上不會形成浪費。固然,軟盤沒有理由保留塊。
參閱tune2fs 手冊頁
  dumpe2fs 顯示一個ext2文件系統的信息,大部分來源於超級塊。有些輸出信息是技術性的,要求對文件系統工做的理解(見附錄 ), 但許多即便是通常管理員是也易於理解的。
  debugfs 是一個文件系統調試器。它容許直接存取磁盤上的文件系統數據結構,可用於修復fsck 不能自動修復的磁盤。它也可用於恢復被刪除的文件。可是,debugfs 很是要求你理解你所幹的事,錯誤的理解和操做將破壞你的全部數據。
  dump 和restore 可用於備份一個ext2文件系統。它們是傳統UNIX備份工具的ext2版。關於更有關備份的信息見 9章。
沒有文件系統的磁盤
  並不是全部磁盤或分區都做爲文件系統使用。例如對換分區,就沒有文件系統。許多軟盤做爲磁帶仿真使用,因此tar 或其餘文件能夠直接寫到原始磁盤,而不是文件系統。Linux啓動軟盤不包括文件系統,只是原始核心。
  不用文件系統的優勢是有更多的磁盤可用空間,由於文件系統須要一些記錄。也更容易與其餘系統兼容;例如tar 文件格式在全部系統上相同,而文件系統則在大多數系統上不一樣。若是須要,你會很快使用沒有文件系統的磁盤。可啓動的 Linux軟盤無需文件系統,雖然有也可能。
  使用原始磁盤的一個緣由是作映象拷貝。好比,若是磁盤包含部分損壞的文件系統,那麼在修復前作一個徹底拷貝是個好主意,由於若是你修錯了,能夠重來。作映象拷貝的一個方法是用 dd :
$ dd if=/dev/fd0H1440 of=floppy-p_w_picpath
  2880+0 records in
  2880+0 records out
  $ dd if=floppy-p_w_picpath of=/dev/fd0H1440
  2880+0 records in
  2880+0 records out
  $
  第一個dd 給軟盤作了一個徹底映象到文件 floppy-p_w_picpath , 第二個把映象寫到軟盤。 (假設用戶在第二個命令前換了軟盤。不然這個命令對可能沒用。)
分配磁盤空間
分區概要
    用最好的方式給磁盤分區不容易,並且,沒有一個通用的正確方法,這包括不少因素。
  傳統的方法是有個(相對)小的根文件系統,包括 /bin , /etc , /dev , /lib , /tmp , 和其餘系統啓動和運行須要的東西。這種方法,根文件系統(在它本身的分區或硬盤上)是全部系統啓動須要的東西。理由是若是根文件系統小而不經常使用,系統崩潰時它就不太容易損壞,並且崩潰時也易於修復。而後給/usr 目錄樹、用戶主目錄(常常在/home )、對換空間產生單獨的分區或使用單獨的硬盤。分離的用戶主目錄(存用戶文件)在其本身的分區中易於備份,由於通常無須備份程序(/usr 中)。網絡環境中,這樣可使多臺計算機共享/usr (例如使用NFS) 這樣每臺機器能夠節約數10、數百兆的磁盤空間。
  多分區的問題是將整個磁盤的空閒空間分割成若干小片。如今,因爲磁盤和操做系統已經很可靠,許多人更傾向與一個分區存全部文件。固然,這樣可能比備份、回存小分區痛苦些。
  對於小硬盤(假設你不作核心開發),最好的方法多是隻要一個分區。對於大硬盤,分幾個大分區可能更好。尤爲在某種狀況下出現錯誤時。 (注意這裏說的小和大是相對的,根據你對磁盤空間的需求而言。)
  若是你有多個硬盤,你可能想讓根文件系統(包括/usr ) 在一個上,而用戶主目錄在另外一個上。
  最好準備嘗試幾個不一樣的分區方案(over time, not just while first installing the system)。這有些工做量,由於這實際上是從頭安裝系統若干遍,但這是確認正確的惟一方法。
空間要求
  你安裝的Linux給出一些對不一樣配置所需磁盤空間的指示。單獨安裝的程序可能也是。這能幫助你計劃你的磁盤使用,但你應該爲之後可能的需求保留一些額外空間。
  擁護文件總量基於你的用戶但願。許多人好象想要他們全部可能的文件量,但×××。有些人只有不多的文字處理,也許幾兆就夠,而有些人可能須要上GB的空間作圖象處理。
  順便說一句,用KB或MB比較文件大小和用MB給出的磁盤空間時,應當注意這2者的可能的不一樣。一些硬盤製造商喜歡稱1000字節爲1KB,1000KB爲1MB,而計算機世界的其餘地方都以1024爲因數。所以個人MB硬盤實際只是330MB硬盤。
  對換空間在5.5章討論。
  硬盤分配舉例
  我原來有個109MB的硬盤,如今我用一個330MB硬盤。我解釋一下我如何分區這些硬盤並說明爲何。
  當個人須要和操做系統變化時,我用不一樣的方法分區109MB硬盤。我說明2種方案。首先,我曾和Linux一塊兒運行MSDOS,爲此,我須要大約20MB給MSDOS、C編譯器、編輯器、一些其餘工具、我工做的程序、和足夠的空閒空間。給Linux開了10MB對換分區,其餘79MB做爲一個分區給Linux。我曾試驗給出單獨的根,/usr , 和/home ,但這樣就沒有什麼空閒空間幹什麼有趣的事了。
  當我再也不須要MSDOS,我從新分區,12MB對換分區,其餘是一個單獨的文件系統。
  從頭分區是爲了玩玩要求本身分區的一些東西,例如試試不一樣的Linux,或比較文件系統的速度。當沒有這些須要後,就把它做爲對換區(我喜歡打開好多窗口)。
給Linux增長更多的磁盤空間
  給Linux增長更多的磁盤空間很容易,至少在硬件都安裝好後(硬件安裝不在本書所述的範圍)。若是須要,先格式化,而後產生分區和上面說過的文件系統,在/etc/fstab 中加入正確的行使之能自動mount。
節約磁盤空間的提示
  節約磁盤空間的最好提示是不要安裝沒必要要的程序。許多Linux distributions給出安裝其所帶軟件包某些部分的選擇,分析你的需求你可能發現好多你並不須要。這會節約不少磁盤空間,由於許多程序須要很大空間。即便你須要某部分包或程序,也不必定須要其所有。例若有些在線文檔可能沒必要要,有些GNU Emacs的Elisp文件, 有些X11的字體,或者有些編程庫。
  若是你不能卸裝包,你能夠壓縮。如gzip 或zip 的壓縮程序能夠壓縮/解壓文件或文件羣。gzexe 系統能夠對用戶透明地壓縮/解壓程序 (沒用的程序被壓縮,當被使用時解壓)。實驗中的DouBle 系統對程序透明地壓縮文件系統中的全部文件。(若是你熟悉例如Stacker for MS-DOS等產品,原理是同樣的。)