Linux(2)磁碟与档案系统

一.磁碟与档案

  • /dev/sd[a-p][1-128]:為實體磁碟的磁碟檔名
  • /dev/vd[a-d][1-128]:為虛擬磁碟的磁碟檔名

那麼檔案系統是如何運作的呢?這與作業系統的檔案資料有關。較新的作業系統的檔案資料除了檔案實際內容外, 通常含有非常多的屬性,例如 Linux 作業系統的檔案權限(rwx)與檔案屬性(擁有者、群組、時間參數等)。 檔案系統通常會將這兩部份的資料分別存放在不同的區塊,權限與屬性放置到 inode 中,至於實際資料則放置到 data block 區塊中。 另外,還有一個超級區塊 (superblock) 會記錄整個檔案系統的整體資訊,包括 inode 與 block 的總量、使用量、剩餘量等。

 Ext2 檔案系統在格式化的時候基本上是區分為多個區塊群組 (block group) 的,每個區塊群組都有獨立的 inode/block/superblock 系統。

每個 inode 與 block 都有編號,至於這三個資料的意義可以簡略說明如下:

  • superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關資訊等;
  • inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的 block 號碼;
  • block:實際記錄檔案的內容,若檔案太大時,會佔用多個 block 。

        

上圖中我們假設檔案的資料依序寫入1->7->4->15號這四個 block 號碼中, 但這個檔案系統沒有辦法一口氣就知道四個 block 的號碼,他得要一個一個的將 block 讀出後,才會知道下一個 block 在何處。 如果同一個檔案資料寫入的 block 分散的太過厲害時,則我們的磁碟讀取頭將無法在磁碟轉一圈就讀到所有的資料, 因此磁碟就會多轉好幾圈才能完整的讀取到這個檔案的內容!

①资料区块 data block

data block 是用來放置檔案內容資料地方,在 Ext2 檔案系統中所支援的 block 大小有 1K, 2K 及 4K 三種而已。在格式化時 block 的大小就固定了,且每個 block 都有編號,以方便 inode 的記錄啦。 

Ext2 檔案系統的 block 基本限制如下:

  • 原則上,block 的大小與數量在格式化完就不能夠再改變了(除非重新格式化);
  • 每個 block 內最多只能夠放置一個檔案的資料;
  • 承上,如果檔案大於 block 的大小,則一個檔案會佔用多個 block 數量;
  • 承上,若檔案小於 block ,則該 block 的剩餘容量就不能夠再被使用了(磁碟空間會浪費)。

好,既然大的 block 可能會產生較嚴重的磁碟容量浪費,那麼我們是否就將 block 大小訂為 1K 即可? 這也不妥,因為如果 block 較小的話,那麼大型檔案將會佔用數量更多的 block ,而 inode 也要記錄更多的 block 號碼,此時將可能導致檔案系統不良的讀寫效能。

②inode表格

inode 的內容在記錄檔案的屬性以及該檔案實際資料是放置在哪幾號 block 內! 

inode内记录:

  • 該檔案的存取模式(read/write/excute);
  • 該檔案的擁有者與群組(owner/group);
  • 該檔案的容量;
  • 該檔案建立或狀態改變的時間(ctime);
  • 最近一次的讀取時間(atime);
  • 最近修改的時間(mtime);
  • 定義檔案特性的旗標(flag),如 SetUID...;
  • 該檔案真正內容的指向 (pointer);

inode 的數量與大小也是在格式化時就已經固定了,除此之外 inode 還有些什麼特色呢?

  • 每個 inode 大小均固定為 128 bytes (新的 ext4 與 xfs 可設定到 256 bytes);
  • 每個檔案都僅會佔用一個 inode 而已;
  • 承上,因此檔案系統能夠建立的檔案數量與 inode 的數量有關;
  • 系統讀取檔案時需要先找到 inode,並分析 inode 所記錄的權限與使用者是否符合,若符合才能夠開始實際讀取 block 的內容。

③超级区块superblock

Superblock 是記錄整個 filesystem 相關資訊的地方, 沒有 Superblock ,就沒有這個 filesystem 了。他記錄的資訊主要有:

  • block 與 inode 的總量;
  • 未使用與已使用的 inode / block 數量;
  • block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128bytes 或 256bytes);
  • filesystem 的掛載時間、最近一次寫入資料的時間、最近一次檢驗磁碟 (fsck) 的時間等檔案系統的相關資訊;
  • 一個 valid bit 數值,若此檔案系統已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。

每個 block group 都可能含有 superblock 喔!但是我們也說一個檔案系統應該僅有一個 superblock 而已,那是怎麼回事啊? 事實上除了第一個 block group 內會含有 superblock 之外,後續的 block group 不一定含有 superblock , 而若含有 superblock 則該 superblock 主要是做為第一個 block group 內 superblock 的備份咯,這樣可以進行 superblock 的救援呢!

档案的写入

  1. 先確定使用者對於欲新增檔案的目錄是否具有 w 與 x 的權限,若有的話才能新增;
  2. 根據 inode bitmap 找到沒有使用的 inode 號碼,並將新檔案的權限/屬性寫入;
  3. 根據 block bitmap 找到沒有使用中的 block 號碼,並將實際的資料寫入 block 中,且更新 inode 的 block 指向資料;
  4. 將剛剛寫入的 inode 與 block 資料同步更新 inode bitmap 與 block bitmap,並更新 superblock 的內容。

一致性问题与日志系统:Inconsistent

通常写入操作还是可以成功,但是遇到不通常的情况的时候,可能只在inode table和data block,最後一個同步更新中介資料的步驟並沒有做完,此時就會發生 metadata 的內容與實際資料存放區產生不一致 (Inconsistent) 的情況了。

既然有不一致當然就得要克服!在早期的 Ext2 檔案系統中,如果發生這個問題, 那麼系統在重新開機的時候,就會藉由 Superblock 當中記錄的 valid bit (是否有掛載) 與 filesystem state (clean 與否) 等狀態來判斷是否強制進行資料一致性的檢查!若有需要檢查時則以 e2fsck 這支程式來進行的。

不過,這樣的檢查真的是很費時~因為要針對 metadata 區域與實際資料存放區來進行比對, 呵呵~得要搜尋整個 filesystem 呢~如果你的檔案系統有 100GB 以上,而且裡面的檔案數量又多時, 哇!系統真忙碌~而且在對 Internet 提供服務的伺服器主機上面, 這樣的檢查真的會造成主機復原時間的拉長~真是麻煩~這也就造成後來所謂日誌式檔案系統的興起了。

  1. 預備:當系統要寫入一個檔案時,會先在日誌記錄區塊中紀錄某個檔案準備要寫入的資訊;
  2. 實際寫入:開始寫入檔案的權限與資料;開始更新 資料;
  3. 結束:完成資料與 更新後,在日誌記錄區塊當中完成該檔案的紀錄。

在這樣的程序當中,萬一資料的紀錄過程當中發生了問題,那麼我們的系統只要去檢查日誌記錄區塊, 就可以知道哪個檔案發生了問題,針對該問題來做一致性的檢查即可,而不必針對整塊 filesystem 去檢查, 這樣就可以達到快速修復 filesystem 的能力了!這就是日誌式檔案最基礎的功能囉~

非同步處理 (asynchronously)

与内存打交道的速度要比与磁盘打交道的速度快,如果某档案没有被动过,那么他就被系统设置为clean的,如果被动过,就会被系统设置成dirty的,dirty的数据就会写磁盘。

  • 系統會將常用的檔案資料放置到主記憶體的緩衝區,以加速檔案系統的讀/寫;
  • 承上,因此 Linux 的實體記憶體最後都會被用光!這是正常的情況!可加速系統效能;
  • 你可以手動使用 sync 來強迫記憶體中設定為 Dirty 的檔案回寫到磁碟中;
  • 若正常關機時,關機指令會主動呼叫 sync 來將記憶體的資料回寫入磁碟內;
  • 但若不正常關機(如跳電、當機或其他不明原因),由於資料尚未回寫到磁碟內, 因此重新開機後可能會花很多時間在進行磁碟檢驗,甚至可能導致檔案系統的損毀(非磁碟損毀)。

二.挂载

类似于 Windows 下面的盘符概念。

把一个分区挂载到一个目录上(Linux 不支持盘符这种方式),这样才能对这个磁盘上面的文件进行操作。
这个时候这个分区需要继承这个目录的目录级别。
比如某个分区 sda2 ,挂载到 /usr/src 里(举例啊),这个时候这个 sda2 里面的 aaa 目录,现在就表示为 /usr/src/aaa 。
如果他挂载到 /var/www 下面。sda2 里面的 aaa 就变成了 /var/www/aaa 。
这点也类似于 Windows 的修改盘符,比如 D:\aaa 。把盘符修改为 E ,这个目录就成了 E:\aaa 。但他们还是一个东西。

挂载后,你所修改的内容(包括复制,删除,移动等),只要在这个被挂载的分区所包含的文件、目录,都会保存在这个分区里,而不是原来的目录里。

效果和 Windows 里面用 U 盘的效果一样。
只不过 U 盘用的是一个盘符,Linux 里面,需要一个目录。

你把 Windows 想象成一个最高级别的目录是“我的电脑”,C D E F 这些盘符都是他的一个“目录”,就能发现他和 Linux 的挂载很相似,只不过 Windows 不允许出现没有挂载分区的空的这种挂载点而已。

这里面 / 也是一个挂载点,就像 C: 一样,一个不允许随便改的专用挂载点。 

linux操作系统中,

挂载是一个非常重要的功能,使用非常频繁。

它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。

(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。)

需要理解的是,

linux操作系统将所有的设备都看作文件,

它将整个计算机的资源都整合成一个大的文件目录

我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,

然后通过访问这个目录来访问存储设备。

每個 filesystem 都有獨立的 inode / block / superblock 等資訊,這個檔案系統要能夠連結到目錄樹才能被我們使用。 將檔案系統與目錄樹結合的動作我們稱為『掛載』。

重點是:掛載點一定是目錄,該目錄為進入該檔案系統的入口。 因此並不是你有任何檔案系統都能使用,必須要『掛載』到目錄樹的某個目錄後,才能夠使用該檔案系統的。

三个目录的inode号都是64,说明这三个系统属于不同的filesystem。同一文件系统的inode号码是肯定不相同的。由於最頂層的目錄之 inode 為 64 號,因此可以發現 /, /boot, /home 為三個不同的 filesystem 囉!

在同一个filesystem里面,可以通过inode号码是否相同来判断是不是同一个档案。

因为/ /. /..表示同一个目录: (根目录的上层就是他自己)

三.xfs文件系统的简介

EXT 家族當前較傷腦筋的地方:支援度最廣,但格式化超慢!

基本上 xfs 就是一個日誌式檔案系統,而 CentOS 7.x 拿它當預設的檔案系統,自然就是因為最早之前,這個 xfs 就是被開發來用於高容量磁碟以及高效能檔案系統之用, 因此,相當適合現在的系統環境。此外,幾乎所有 Ext4 檔案系統有的功能, xfs 都可以具備!也因此在本小節前幾部份談到檔案系統時, 其實大部份的操作依舊是在 xfs 檔案系統環境下介紹給各位的哩!

xfs 檔案系統在資料的分佈上,主要規劃為三個部份,一個資料區 (data section)、一個檔案系統活動登錄區 (log section)以及一個即時運作區 (realtime section)。 這三個區域的資料內容如下:

  • 資料區 (data section)

基本上,資料區就跟我們之前談到的 ext 家族一樣,包括 inode/data block/superblock 等資料,都放置在這個區塊。 這個資料區與 ext 家族的 block group 類似,也是分為多個儲存區群組 (allocation groups) 來分別放置檔案系統所需要的資料。 每個儲存區群組都包含了 (1)整個檔案系統的 superblock、 (2)剩餘空間的管理機制、 (3)inode的分配與追蹤。此外,inode與 block 都是系統需要用到時, 這才動態配置產生,所以格式化動作超級快!

另外,與 ext 家族不同的是, xfs 的 block 與 inode 有多種不同的容量可供設定,block 容量可由 512bytes ~ 64K 調配,不過,Linux 的環境下, 由於記憶體控制的關係 (分頁檔 pagesize 的容量之故),因此最高可以使用的 block 大小為 4K 而已!(鳥哥嘗試格式化 block 成為 16K 是沒問題的,不過,Linux 核心不給掛載! 所以格式化完成後也無法使用啦!) 至於 inode 容量可由 256bytes 到 2M 這麼大!不過,大概還是保留 256bytes 的預設值就很夠用了!

式化就完成配置的。

 

  • 檔案系統活動登錄區 (log section)

在登錄區這個區域主要被用來紀錄檔案系統的變化,其實有點像是日誌區啦!檔案的變化會在這裡紀錄下來,直到該變化完整的寫入到資料區後, 該筆紀錄才會被終結。如果檔案系統因為某些緣故 (例如最常見的停電) 而損毀時,系統會拿這個登錄區塊來進行檢驗,看看系統掛掉之前, 檔案系統正在運作些啥動作,藉以快速的修復檔案系統。

因為系統所有動作的時候都會在這個區塊做個紀錄,因此這個區塊的磁碟活動是相當頻繁的!xfs 設計有點有趣,在這個區域中, 妳可以指定外部的磁碟來作為 xfs 檔案系統的日誌區塊喔!例如,妳可以將 SSD 磁碟作為 xfs 的登錄區,這樣當系統需要進行任何活動時, 就可以更快速的進行工作!相當有趣!

  • 即時運作區 (realtime section)

當有檔案要被建立時,xfs 會在這個區段裡面找一個到數個的 extent 區塊,將檔案放置在這個區塊內,等到分配完畢後,再寫入到 data section 的 inode 與 block 去! 這個 extent 區塊的大小得要在格式化的時候就先指定,最小值是 4K 最大可到 1G。一般非磁碟陣列的磁碟預設為 64K 容量,而具有類似磁碟陣列的 stripe 情況下,則建議 extent 設定為與 stripe 一樣大較佳。這個 extent 最好不要亂動,因為可能會影響到實體磁碟的效能喔。

四.档案系统的简单操作

  • df:列出檔案系統的整體磁碟使用量;

  • du:評估檔案系統的磁碟使用量(常用在推估目錄所佔容量)

①实体链接与符号链接

实体链接 hard link:

  • 每個檔案都會佔用一個 inode ,檔案內容由 inode 的記錄來指向;
  • 想要讀取該檔案,必須要經過目錄記錄的檔名來指向到正確的 inode 號碼才能讀取。

也就是說,其實檔名只與目錄有關,但是檔案內容則與 inode 有關。那麼想一想, 有沒有可能有多個檔名對應到同一個 inode 號碼呢?有的!那就是 hard link 的由來。 所以簡單的說:hard link 只是在某個目錄下新增一筆檔名連結到某 inode 號碼的關連記錄而已。

舉個例子來說,假設我系統有個 /root/crontab 他是 /etc/crontab 的實體連結,也就是說這兩個檔名連結到同一個 inode , 自然這兩個檔名的所有相關資訊都會一模一樣(除了檔名之外)。實際的情況可以如下所示:

一般來說,使用 hard link 設定連結檔時,磁碟的空間與 inode 的數目都不會改變! 我們還是由圖 7.2.1 來看,由圖中可以知道, hard link 只是在某個目錄下的 block 多寫入一個關連資料而已,既不會增加 inode 也不會耗用 block 數量哩!

  • 不能跨 Filesystem;
  • 不能 link 目錄。

符号连接 symbolic link:

相對於 hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在建立一個獨立的檔案,而這個檔案會讓資料的讀取指向他 link 的那個檔案的檔名!由於只是利用檔案來做為指向的動作, 所以,當來源檔被刪除之後,symbolic link 的檔案會『開不了』, 會一直說『無法開啟某檔案!』。實際上就是找不到原始『檔名』而已啦!

由上表的結果我們可以知道兩個檔案指向不同的 inode 號碼,當然就是兩個獨立的檔案存在! 而且連結檔的重要內容就是他會寫上目標檔案的『檔名』, 你可以發現為什麼上表中連結檔的大小為 12 bytes 呢? 因為箭頭(-->)右邊的檔名『/etc/crontab』總共有 12 個英文,每個英文佔用 1 個 bytes ,所以檔案大小就是 12bytes了!

由 1 號 inode 讀取到連結檔的內容僅有檔名,根據檔名連結到正確的目錄去取得目標檔案的 inode , 最終就能夠讀取到正確的資料了。你可以發現的是,如果目標檔案(/etc/crontab)被刪除了,那麼整個環節就會無法繼續進行下去, 所以就會發生無法透過連結檔讀取的問題了!

由上面的說明來看,似乎 hard link 比較安全,因為即使某一個目錄下的關連資料被殺掉了, 也沒有關係,只要有任何一個目錄下存在著關連資料,那麼該檔案就不會不見!舉上面的例子來說,我的 /etc/crontab 與 /root/crontab 指向同一個檔案,如果我刪除了 /etc/crontab 這個檔案,該刪除的動作其實只是將 /etc 目錄下關於 crontab 的關連資料拿掉而已, crontab 所在的 inode 與 block 其實都沒有被變動喔!

不過由於 Hard Link 的限制太多了,包括無法做『目錄』的 link , 所以在用途上面是比較受限的!反而是 Symbolic Link 的使用方面較廣喔!好了, 說的天花亂墜,看你也差不多快要昏倒了!沒關係,實作一下就知道怎麼回事了!要製作連結檔就必須要使用 ln 這個指令呢!

目录的link数

當我們以 hard link 進行『檔案的連結』時,可以發現,在 ls -l 所顯示的第二欄位會增加一才對,那麼請教,如果建立目錄時,他預設的 link 數量會是多少? 讓我們來想一想,一個『空目錄』裡面至少會存在些什麼?呵呵!就是存在 . 與 .. 這兩個目錄啊! 那麼,當我們建立一個新目錄名稱為 /tmp/testing 時,基本上會有三個東西,那就是:

  • /tmp/testing
  • /tmp/testing/.
  • /tmp/testing/..

而其中 /tmp/testing 與 /tmp/testing/. 其實是一樣的!都代表該目錄啊~而 /tmp/testing/.. 則代表 /tmp 這個目錄,所以說,當我們建立一個新的目錄時, 『新的目錄的 link 數為 2 ,而上層目錄的 link 數則會增加 1 

五.磁碟的分割

①lsblk 列出系統上的所有磁碟列表

lsblk 可以看成『 list block device 』的縮寫

  • NAME:就是裝置的檔名囉!會省略 /dev 等前導目錄!
  • MAJ:MIN:其實核心認識的裝置都是透過這兩個代碼來熟悉的!分別是主要:次要裝置代碼!
  • RM:是否為可卸載裝置 (removable device),如光碟、USB 磁碟等等
  • SIZE:當然就是容量囉!
  • RO:是否為唯讀裝置的意思
  • TYPE:是磁碟 (disk)、分割槽 (partition) 還是唯讀記憶體 (rom) 等輸出
  • MOUTPOINT:就是前一章談到的掛載點!

②blkid 列出裝置的 UUID 等參數

block id

雖然 lsblk 已經可以使用 -f 來列出檔案系統與裝置的 UUID 資料,不過,鳥哥還是比較習慣直接使用 blkid 來找出裝置的 UUID 喔! 什麼是 UUID 呢?UUID 是全域單一識別碼 (universally unique identifier),Linux 會將系統內所有的裝置都給予一個獨一無二的識別碼, 這個識別碼就可以拿來作為掛載或者是使用這個裝置/檔案系統之用了。

③parted 列出磁碟的分割表類型與分割資訊

雖然我們已經知道了系統上面的所有裝置,並且透過 blkid 也知道了所有的檔案系統!不過,還是不清楚磁碟的分割類型。 這時我們可以透過簡單的 parted 來輸出喔!我們這裡僅簡單的利用他的輸出而已~本章最後才會詳細介紹這個指令的用法的!

④磁盘的分割

MBR 分割表請使用 fdisk 分割, GPT 分割表請使用 gdisk 分割

  • Number:分割槽編號,1 號指的是 /dev/vda1 這樣計算。
  • Start (sector):每一個分割槽的開始磁區號碼位置
  • End (sector):每一個分割的結束磁區號碼位置,與 start 之間可以算出分割槽的總容量
  • Size:就是分割槽的容量了
  • Code:在分割槽內的可能的檔案系統類型。Linux 為 8300,swap 為 8200。不過這個項目只是一個提示而已,不見得真的代表此分割槽內的檔案系統喔!
  • Name:檔案系統的名稱等等。

这里我的电脑上的/dev/sda是一个MBR分割表

按下p后,查看当前磁碟的状态

⑤增加一个分割槽

重點在『 Last sector 』那一行,那行絕對不要使用預設值!因為預設值會將所有的容量用光!因此它預設選擇最大的磁區號碼! 因為我們僅要 1GB 而已,所以你得要加上 +1G 這樣即可!不需要計算 sector 的數量,gdisk 會根據你填寫的數值, 直接計算出最接近該容量的磁區數!每次新增完畢後,請立即『 p 』查看一下結果喔!請繼續處理後續的兩個分割槽! 最終出現的畫面會有點像底下這樣才對!

自己操作:这里因为我的sector不够用了,所以我删除了sda2

然后新建分区:一个30G的sda2  一个更大的sda3

按W后,可以成功。

用来更新分割槽资讯

⑥删除一个分割槽

六.磁碟的格式化

我們常聽到的『格式化』其實應該稱為『建置檔案系統 (make filesystem)』才對啦!所以使用的指令是 mkfs 喔!那我們要建立的其實是 xfs 檔案系統, 因此使用的是 mkfs.xfs 這個指令才對。

使用預設的 xfs 檔案系統參數來建置系統即可!速度非常快!如果我們有其他額外想要處理的項目,才需要加上一堆設定值!舉例來說,因為 xfs 可以使用多個資料流來讀寫系統,以增加速度,因此那個 agcount 可以跟 CPU 的核心數來做搭配!舉例來說,如果我的伺服器僅有一顆 4 核心,但是有啟動 Intel 超執行緒功能,則系統會模擬出 8 顆 CPU 時,那個 agcount 就可以設定為 8 喔!

七.档案系统检验

①xfs_repair 處理 XFS 檔案系統

當有 xfs 檔案系統錯亂才需要使用這個指令!所以,這個指令最好是不要用到啦!但有問題發生時,這個指令卻又很重要...

②fsck.ext4 處理 EXT4 檔案系統

八.档案系统的挂载

  • 單一檔案系統不應該被重複掛載在不同的掛載點(目錄)中;
  • 單一目錄不應該重複掛載多個檔案系統;
  • 要作為掛載點的目錄,理論上應該都是空目錄才是。

尤其是上述的後兩點!如果你要用來掛載的目錄裡面並不是空的,那麼掛載了檔案系統之後,原目錄下的東西就會暫時的消失。 舉個例子來說,假設你的 /home 原本與根目錄 (/) 在同一個檔案系統中,底下原本就有 /home/test 與 /home/vbird 兩個目錄。然後你想要加入新的磁碟,並且直接掛載 /home 底下,那麼當你掛載上新的分割槽時,則 /home 目錄顯示的是新分割槽內的資料,至於原先的 test 與 vbird 這兩個目錄就會暫時的被隱藏掉了!注意喔!並不是被覆蓋掉, 而是暫時的隱藏了起來,等到新分割槽被卸載之後,則 /home 原本的內容就會再次的跑出來啦!

①掛載 xfs/ext4/vfat 等檔案系統

②挂载DVD

③挂载U盘


linux系统无法识别ntfs文件系统

④挂载目录

看起來,其實兩者連結到同一個 inode 嘛! ^_^ 沒錯啦!透過這個 mount --bind 的功能, 您可以將某個目錄掛載到其他目錄去喔!而並不是整塊 filesystem 的啦!所以從此進入 /data/var 就是進入 /var 的意思喔!

自己操作:

先看home下面的文件有哪些:

在hggggc目录下创建文件夹mytest,然后mount一下

然后进入mytest文件,看是什么:

可见,home里面的东西和mytest里面的东西是一样的。

⑤将装置档案卸掉

⑥修订已有磁碟/档案系统

在 Linux 底下所有的裝置都以檔案來代表吧!但是那個檔案如何代表該裝置呢? 很簡單!就是透過檔案的 major 與 minor 數值來替代的~所以,那個 major 與 minor 數值是有特殊意義的,不是隨意設定的喔!

⑦xfs_admin 修改 XFS 檔案系統的 UUID 與 Label name

⑧tune2fs 修改 ext4 的 label name 與 UUID

⑨设定开机挂载

剛剛上面說了許多,那麼可不可以在開機的時候就將我要的檔案系統都掛好呢?這樣我就不需要每次進入 Linux 系統都還要在掛載一次呀!當然可以囉!那就直接到 /etc/fstab 裡面去修修就行囉!不過,在開始說明前,這裡要先跟大家說一說系統掛載的一些限制:

  • 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
  • 其它 mount point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則 (FHS)
  • 所有 mount point 在同一時間之內﹐只能掛載一次。
  • 所有 partition 在同一時間之內﹐只能掛載一次。
  • 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。

 這個檔案的內容共有六個欄位,這六個欄位非常的重要

[裝置/UUID等]  [掛載點]  [檔案系統]  [檔案系統參數]  [dump]  [fsck]
  • 第一欄:磁碟裝置檔名/UUID/LABEL name:

這個欄位可以填寫的資料主要有三個項目:

  • 檔案系統或磁碟的裝置檔名,如 /dev/vda2 等
  • 檔案系統的 UUID 名稱,如 UUID=xxx
  • 檔案系統的 LABEL 名稱,例如 LABEL=xxx

因為每個檔案系統都可以有上面三個項目,所以你喜歡哪個項目就填哪個項目!無所謂的!只是從鳥哥測試機的 /etc/fstab 裡面看到的,在掛載點 /boot 使用的已經是 UUID 了喔!那你會說不是還有多個寫 /dev/mapper/xxx 的嗎?怎麼回事啊? 因為那個是 LVM 啊!LVM 的檔名在你的系統中也算是獨一無二的,這部份我們在後續章節再來談。 不過,如果為了一致性,你還是可以將他改成 UUID 也沒問題喔!(鳥哥還是比較建議使用 UUID 喔!) 要記得使用 blkid 或 xfs_admin 來查詢 UUID 喔!

  • 第二欄:掛載點 (mount point)::

就是掛載點啊!掛載點是什麼?一定是目錄啊~要知道啊!忘記的話,請回本章稍早之前的資料瞧瞧喔!

  • 第三欄:磁碟分割槽的檔案系統:

在手動掛載時可以讓系統自動測試掛載,但在這個檔案當中我們必須要手動寫入檔案系統才行! 包括 xfs, ext4, vfat, reiserfs, nfs 等等。

  • 第四欄:檔案系統參數:

記不記得我們在 mount 這個指令中談到很多特殊的檔案系統參數? 還有我們使用過的『-o codepage=950』?這些特殊的參數就是寫入在這個欄位啦! 雖然之前在 mount 已經提過一次,這裡我們利用表格的方式再彙整一下:

  • 第五欄:能否被 dump 備份指令作用:

dump 是一個用來做為備份的指令,不過現在有太多的備份方案了,所以這個項目可以不要理會啦!直接輸入 0 就好了!

  • 第六欄:是否以 fsck 檢驗磁區:

早期開機的流程中,會有一段時間去檢驗本機的檔案系統,看看檔案系統是否完整 (clean)。 不過這個方式使用的主要是透過 fsck 去做的,我們現在用的 xfs 檔案系統就沒有辦法適用,因為 xfs 會自己進行檢驗,不需要額外進行這個動作!所以直接填 0 就好了。

⑩swap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值