VOOZH about

URL: https://read01.com/x8deQ8.html

⇱ 文件系統管理 - 壹讀


Saturday, Apr 11, 2026

文件系統管理

2015/10/25 來源:CSDN博客
linux(50)

**使用du時可能會出現次目錄累加,需要加-S參數~

輸出的結果信息為:

Filesystem:代表該文件系統是在哪個 partition ,所以列出裝置名稱; 1k-blocks:說明底下的數字單位是 1KB,可利用 -h 或 -m 來改變容量; Used:顧名思義,就是使用掉的硬碟空間; Available:也就是剩下的磁碟空間大小; Use%:磁碟的使用率。如果使用率高達 90% 以上時, 最好需要注意一下了,免得容量不足造成系統問題; Mounted on:就是磁碟掛載的目錄所在(掛載點)。 實體連結與符號連結: ln

透過文件系統的 inode 連結來產生新檔名,而不是產生新文件。

簡單的說,hard link 只是在某個目錄下新增一筆檔名連結到某 inode 號碼的關連記錄而已。

因此,對其中任何一個文件的操作,保存之後另一個文件的內容也跟著改動(因為事實上兩者是連結到同一哥inode上)。

hard link 是有限制的:

不能跨 Filesystem; 不能 link 目錄。

例子: ln /etc/crontab . :在當前目錄下創建crontab的實體連結。

Symbolic Link (符號連結,亦即是快捷方式)

類似 Windows 的快捷方式功能的文件,可以讓你快速的連結到目標文件(或目錄)

Symbolic link 就是創建一個獨立的文件,會占用inode和block,block中存放的是所指向的文件的檔名。由於只是利用文件來做為指向的動作, 所以,當來源檔被刪除之後,symbolic link 的文件會失效。

例子: ln -s /etc/crontab crontab2

關於目錄的link數量(ls -l顯示的第二個欄位)

當我們創建一個新目錄名稱為 /tmp/testing 時,基本上會有三個東西,那就是:

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

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

如果我們想要在系統裡面新增一顆硬碟,應該做以下動作:

對磁碟進行分割,以創建可用的 partition ; 對該 partition 進行格式化( format ),以創建系統可用的 filesystem; 若想要仔細一點,則可對剛剛創建好的 filesystem 進行檢驗; 在 Linux 系統上,需要創建掛載點 ( 亦即是目錄 ),並將他掛載上來; 磁碟分區: fdisk

可先用df查看根目錄所在的磁碟。

之後fdisk /dev/sda (磁碟名,注意不用加數字),輸入m可以查看菜單。

做完分割之後,可以reboot重啟生效,或者用 partprobe 這個命令,它僅是告知核心必須要讀取新的分割表而已,因此並不會在屏幕上出現任何信息。

操作環境的說明:

以 root 的身份進行硬碟的 partition 時,在單人維護模式底下比較安全一些, 此外,在進行 fdisk 的時候,如果該硬碟某個 partition 還在使用當中, 那麼很有可能系統核心會無法重載硬碟的 partition table ,解決的方法就是將該使用中的 partition 給他卸除,然後再重新進入 fdisk 一遍,重新寫入 partition table ,那麼就可以成功。

磁碟格式化:mkfs(make filesystem)

mkfs [tab][tab]可看mkfs支持的文件格式。(事實上,mkfs是一個綜合命令)

使用mke2fs則可指定格式化的一些細部配置。

磁碟檢驗: fsck, badblocks

fsck(filesystem check):用來檢查與修正文件系統錯誤的命令。注意:通常只有身為 root 且文件系統有問題的時候才使用這個命令,否則在正常狀況下使用此一命令, 可能會造成對系統的危害!通常使用這個命令的場合都是在系統出現極大的問題,導致你在 Linux 啟動的時候得進入單人單機模式下進行維護的行為時,才必須使用此一命令!運行 fsck 時, 被檢查的 partition 務必不可掛載到系統上,即需要在卸除的狀態!
(實際上,我們運行的 fsck 命令,其實是呼叫 e2fsck 這個軟體)

badblocks:用來檢查硬碟或軟盤扇區有沒有壞軌的命令。

磁碟掛載與卸除

注意事項:

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

利用『mount 裝置文件名 掛載點』進行掛載。

使用 Label name 進行掛載的方法: 使用 dumpe2fs查詢裝置標頭,用mount掛載時用標頭代替文件名。好處:系統不必知道該文件系統所在的接口與磁碟文件名;壞處:不能隨意修改標頭。

umount:將裝置文件卸除。

磁碟參數修訂:mknod,e2label,tune2fs,hdparm啟動掛載 /etc/fstab 及 /etc/mtab

系統掛載的一些限制:

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

/etc/fstab (filesystem table) 就是將我們利用 mount 命令進行掛載時, 將所有的選項與參數寫入到這個文件中。除此之外, /etc/fstab 還加入了 dump 這個備份用命令的支持! 與啟動時是否進行文件系統檢驗 fsck 等命令有關。

用cat查閱下/etc/fstab:
第一欄:磁碟裝置文件名或該裝置的 Label;

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

第三欄:磁碟分區槽的文件系統;

第四欄:文件系統參數:

參數 內容意義
async/sync(異步/同步) 配置磁碟是否以異步方式運行!默認為 async(效能較佳)
auto/noauto(自動/非自動) 當下達 mount -a 時,此文件系統是否會被主動測試掛載。默認為 auto。
rw/ro(可擦寫/只讀) 讓該分割槽以可擦寫或者是只讀的型態掛載上來,如果你想要分享的數據是不給用戶隨意變更的, 這裡也能夠配置為只讀。則不論在此文件系統的文件是否配置 w 權限,都無法寫入!
exec/noexec(可運行/不可運行) 限制在此文件系統內是否可以進行『運行』的工作?如果是純粹用來儲存數據的, 那麼可以配置為 noexec 會比較安全,相對的,會比較麻煩!
user/nouser(允許/不允許使用者掛載) 是否允許用戶使用 mount 命令來掛載呢?一般而言,我們當然不希望一般身份的 user 能使用 mount,因為太不安全了,因此這裡應該要配置為 nouser!
suid/nosuid(具有/不具有 suid 權限) 該文件系統是否允許 SUID 的存在?如果不是運行文件放置目錄,也可以配置為 nosuid 來取消這個功能!
usrquota 注意名稱是『 usrquota 』不要拼錯了!這個是在啟動 filesystem 支持磁碟配額模式。
grpquota 注意名稱是『grpquota』,啟動 filesystem 對群組磁碟配額模式的支持。
defaults 同時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,默認情況使用 defaults 配置即可!

第五欄:能否被 dump 備份命令作用: 0 代表不要做 dump 備份, 1 代表要每天進行 dump 的動作。 2 也代表其他不定日期的 dump 備份動作, 通常這個數值不是 0 就是 1 。

第六欄:是否以 fsck 檢驗扇區:0 是不要檢驗, 1 表示最早檢驗(一般只有根目錄會配置為 1), 2 也是要檢驗,不過 1 會比較早被檢驗! 一般來說,根目錄配置為 1 ,其他的要檢驗的 filesystem 都配置為 2 就好了。

**parted:用來劃分大於2TB的分割槽。

基本上 Linux 的正統文件系統為 Ext2 ,該文件系統內的信息主要有:

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

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

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

Ext2 文件系統的數據存取為索引式文件系統(indexed allocation)

需要碎片整理的原因就是文件寫入的 block 太過於離散了,此時文件讀取的效能將會變的很差所致。 這個時候可以透過碎片整理將同一個文件所屬的 blocks 匯整在一起。

Ext2文件系統主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。

data block 是用來放置文件內容數據地方,在 Ext2 文件系統中所支持的 block 大小有 1K, 2K 及 4K 三種而已

inode 記錄文件的屬性/權限等數據,其他重要項目為: 每個 inode 大小均固定為 128 bytes; 每個文件都僅會占用一個 inode 而已; 因此文件系統能夠創建的文件數量與 inode 的數量有關;

文件的 block 在記錄文件的實際數據,目錄的 block 則在記錄該目錄底下文件名與其 inode 號碼的對照表;

日誌式文件系統 (journal) 會多出一塊記錄區,隨時記載文件系統的主要活動,可加快系統復原時間;

Linux 文件系統為添加效能,會讓主存儲器作為大量的磁碟高速緩存;

實體連結只是多了一個文件名對該 inode 號碼的連結而已;

符號連結就類似Windows的快捷方式功能。

磁碟的使用必需要經過:分割、格式化與掛載,分別慣用的命令為:fdisk, mkfs, mount三個命令

啟動自動掛載可參考/etc/fstab之配置,配置完畢務必使用 mount -a 測試語法正確否。

您可能感興趣
免責聲明:本文內容來源于CSDN博客,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM