設備目錄/dev
Linux 有一個特殊的目錄,其中包含代表每個連接設備的文件:相應命名的 /dev 目錄。
/dev中有很多設備列表。 特別令人感興趣的是設備 sda1、sda2、sda3、sdb 和 sdb1,它們通常是硬盤驅動器及其分區以及 USB 閃存驅動器及其分區。
Linux 如何表示存儲設備
Linux 對隨后安裝在文件系統上的驅動器使用邏輯標簽。 這些邏輯標簽將根據驅動器的安裝位置而變化,這意味著同一硬盤驅動器在不同時間可能有不同的標簽,具體取決于安裝的位置和時間。
當系統有多個硬盤驅動器時,Linux 只是通過按字母順序遞增最后一個字母來連續命名它們,因此第一個驅動器是 sda,第二個驅動器是 sdb,第三個驅動器是 sdc,如下表。 sd 后面的序列字母通常稱為主編號。
驅動器分區
某些驅動器可以分為多個分區,以便管理和分離信息。Linux 用驅動器名稱后面的次要編號來標記每個分區。 這樣,第一個 SATA 驅動器上的第一個分區將是 sda1。 第二個分區將是 sda2,第三個分區是 sda3,依此類推,如下表所示。
有時,您可能想要查看 Linux 系統上的分區,以了解您擁有哪些分區以及每個分區有多少可用容量。 您可以使用 fdisk 實用程序來執行此操作。 將 -l 開關與 fdisk 一起使用會列出所有驅動器的所有分區:fdisk -l
Linux 使用多種不同類型的文件系統,但最常見的是 ext2、ext3 和 ext4。 這些都是 ext(或擴展)文件系統的迭代,其中 ext4 是最新的。
字符設備和塊設備
關于 /dev 目錄中設備文件的命名還需要注意的是,第一個位置包含 c
或 b
。 它看起來像這樣:
這些字母代表設備傳入和傳出數據的兩種方式。 c
代表字符,這樣的設備被稱為字符設備。 通過逐個字符發送和接收數據與系統交互的外部設備,例如鼠標或鍵盤,都是字符設備。
b
代表第二種類型:塊設備。 它們以數據塊(一次多個字節)進行通信,并包括硬盤驅動器和 DVD 驅動器等設備。 這些設備需要更高速度的數據吞吐量,以塊的形式發送和接收數據(一次多個字符或字節)。 一旦您知道設備是字符設備還是塊設備,您就可以輕松獲得有關它的更多信息。
使用 lsblk 列出塊設備和信息
Linux 命令 lsblk
是 list block 的縮寫,列出 /dev 中列出的每個塊設備的一些基本信息。結果與 fdisk -l 的輸出類似,但它也會以樹的形式顯示具有多個分區的設備,將每個設備及其分區顯示為分支,并且不需要 root 權限即可運行。
我們還可以看到有關驅動器安裝點的信息 - 這是驅動器連接到文件系統的位置。 請注意,硬盤驅動器 sda1 安裝在 / 處,閃存驅動器安裝在 /media 處。
掛載和卸載
即使設備在物理上連接到系統,它也不一定在邏輯上連接到操作系統并且可供操作系統使用。
目錄樹中連接設備的點稱為掛載點。 Linux 中的兩個主要掛載點是 /mnt
和 /media
。 按照慣例,外部 USB 設備和閃存驅動器等設備可以手動掛載到 /mnt,但自動掛載時,將使用 /media 目錄(盡管技術上可以使用任何目錄)。
自行掛載存儲設備
要在文件系統上掛載驅動器,請使用 mount
命令。設備的掛載點應該是一個空目錄; 如果將設備掛載到包含子目錄和文件的目錄上,則掛載的設備將覆蓋該目錄的內容,使它們不可見且不可用。要將新硬盤 sdb1 掛載在 /mnt 目錄中,輸入以下命令:mount /dev/sdb1 /mnt
系統在啟動時掛載的文件系統保存在 /etc/fstab
(文件系統表的縮寫)的文件中,系統在每次啟動時都會讀取該文件。
使用 umount 卸載
與 mount 命令類似,您可以通過輸入 umount
命令,然后輸入 /dev 目錄中設備的文件條目(例如 /dev/sdb)來卸載第二個硬盤驅動器。 請注意,該命令不是拼寫為 unmount,而是拼寫為 umount(沒有 n)。umount /dev/sdb1
您無法卸載繁忙的設備,因此如果系統正在讀取或寫入該設備,您只會收到錯誤。
監控文件系統
獲取已掛載磁盤的信息
命令 df
(disk free)將為我們提供有關任何硬盤或已安裝設備(例如 CD、DVD 和閃存驅動器)的基本信息,包括正在使用的空間和可用空間。如果沒有任何選項,df
默認為所有已安裝的驅動器。 如果要檢查不同的驅動器,只需在 df
命令后加上要檢查的驅動器表示(例如 df sdb
)即可。df
檢查錯誤
fsck
命令(filesystem check的縮寫)檢查文件系統是否有錯誤并修復損壞(如果可能),或者將壞區域放入壞塊表中以將其標記為壞。
運行fsck
命令需要指定要檢查的設備文件。 請務必注意,在運行文件系統檢查之前必須卸載驅動器。
我可以添加 -p 選項以使 fsck 自動修復設備的任何問題,如下所示:fsck -p /dev/sdb1