RECH8.0版本學習 days 10

訪問Linux文件系統

Linux哲學,一切皆文件。

Linux服務器上的文件時按文件系統層次結構(一個顛倒的目錄樹)訪問的。

要讓文件系統的內容在文件系統層次結構中可用,必須將它掛載到一個空目錄上。該目錄被稱爲掛載點。

在Linux中,對存儲設備的低級別訪問是由一種稱爲塊設備的特殊類型文件提供的。在掛載這些塊設備前,必須先使用文件系統對其進行格式化。塊設備文件與其他的設備文件一起存儲在/dev 目錄中。

塊設備命名

設備類型 設備命名模式
SATA/SAS/USB附加存儲 /dev/sda、/dev/sdb....
virtio-blk超虛擬化存儲(部分虛擬機) /dev/vda、/dev/vdb....
NVMe附加存儲(很多SSD) /dev/nvme0, /dev/nvme1......
SD/MMC/eMMC存儲(SD卡) /dev/nmcblk0,/dev/nmcblk1......
較新的virtio-scsi超虛擬化存儲 /dev/sd*。

磁盤分區

存儲設備通常劃分爲更小的區塊,稱爲分區。

分區本身就是塊設備。在SATA附加存儲中,第一磁盤上的第一個分區是/dev/sda1。第二個磁盤上的第三個分區是/dev/sdb3,以此類推。

NVMe附加ssd設備命名分區的方式,第一磁盤上的第一分區是/dev/nvme0p1。第二磁盤上的第三個分區是/dev/nvme1p3。以此類推。

host上/dev/sda1設備文件的長列表顯示其特殊文件類型爲b,代表塊設備:

邏輯卷

整個磁盤和分區可以通過邏輯卷管理(LVM),通過LVM,一個或多個塊設備可以彙集爲一個存儲池,稱爲卷組。然後,卷組中的磁盤空間被分配到一個或多個邏輯卷,他們的功能等同於駐留在物理磁盤上的分區。LVM系統在創建時爲卷組和邏輯卷分配名稱。LVM在/dev 中創建一個名稱與組名匹配的目錄,然後在該目錄中創建一個邏輯卷同名的符號鏈接。例如,如果一個卷軸名爲myvg,其中有一個名爲mylv的邏輯卷,那麼其邏輯卷設備文件的完整路徑名爲/dev/myvg/mylv。

df 命令會報告所有已掛載的普通文件系統的總磁盤空間、已用磁盤空間、可以磁盤空間,以及已用磁盤空間佔總磁盤空間的百分比。會同時報告本和和遠程文件系統。

df -h 或-H 可改善輸出大小的可讀性。使用-h時報告單位時KiB(2**10)、MiB(2**20)、或GiB(2**30),使用-H時報告單位是SI單位,即KB(10**3)、MB(10**6)或GB(10**9)。硬盤驅動器製造商在廣告其產品時通常使用SI單位。

如需有關某一特定目錄樹使用的空間的詳細信息,可以使用du命令。du命令具有-h和-H選項,可以將輸入轉換爲可讀的格式。du命令以遞歸方式顯示當前目錄樹中所有文件的大小。示例:

du /usr/share      du   -h  /var/log

掛載和卸載文件系統

mount 命令允許root用於手動掛載文件系統。mount命令第一個參數指定要掛載的文件系統。第二個參數指定在文件系統層次結構中用作掛載點的目錄。

常用兩種方法可以爲mount命令指定磁盤分區的文件系統:

  • 在/dev的設備文件名稱中包含文件系統。
  • 將UUID(一個通用唯一標識符)寫入文件系統。

使用lsblk命令可列出指定塊設備或所有可用設備的詳細信息。

示例,在 /dev/vdb1目錄上的/mnt/data分區中掛載文件系統。

mount  /dev/vdb1  /mnt/data

若要掛載文件系統,目標目錄必須已存在。如果用作掛載點的目錄不爲空,則在掛載文件系統前複製到此目錄中的任何文件均不可訪問,直到將該文件系統再次卸載。默認情況下,/mnt目錄存在並用作臨時掛載點。

lsblk -fp命令列出設備的完整路徑、其UUID和掛載點,以及分區中文件系統的類型。如未掛載文件系統,掛載點將爲空。示例,根據文件系統的UUID掛載文件系統:

如果登錄並使用的是圖像桌面環境,則插入任何可移動存儲介質時,它將自動掛載。

可移動存儲設備將掛載到/run/media/USERNAME/LABEL,USERNAME時=是登錄圖形環境的用戶名。而LABEL是一個標識符,通常是創建時給文件系統取的名稱。在移除設備之前,應手動將它卸載。

關機和重新引導過程會自動卸載所有文件系統。文件系統數據通常緩存在內存中,因此,爲了避免損壞磁盤上的數據,務必先卸載可移動驅動器,再拔下他們。

卸載文件系統,umount命令需要使用掛載點作爲參數。示例:umount  /mnt/data

lsof命令列出所給目錄中所有打開的文件以及訪問他們的進程。示例: lsoft  /mnt/data

查找系統中的文件

locate命令搜索預生成索引中的文件名或文件路徑,並即時返回結果。

find命令通過爬取整個文件系統層次結構來實時搜索文件。

loacte命令根據文件的名稱或路徑查找文件,從mlocate數據庫中查找這些信息,updatedb命令來強制即使更新locate數據庫。

-i選項執行不區分大小寫的搜索。使用此選項,所有大小寫字母都能與搜索匹配。示例: locate -i messages

-n選項限制locate命令返回的搜索結果數量。示例:

find命令通過在文件系統層次結構中執行實時搜索來查找文件,它比locate慢,精確度高。

find命令的第一個參數是要搜索的目錄,如果省略目錄參數,find將從當前目錄中開始搜索,並在任何子目錄中查找匹配項。

find使用-name FILENAME選項,將返回FILENAME完全匹配的文件的路徑。示例:從/目錄開始搜索名爲sshd_config的文件,命令如下:

find  /  -name  sshd_config

也可以使用通配符搜索文件名。示例:

根據所有權或權限搜索文件

find可以根據所有權或權限搜索文件, -user和-group(按名稱搜索),-uid和-gid(按ID搜索)。

示例:在host上的/home/user 目錄上搜索由user擁有的文件。

-perm選項用於查找具有特定權限集的文件。示例:

根據大小搜索文件

find 命令可以查找與指定的大小相符的文件,該大小是通過-size選項加上數字值與單位來指定的。用作-size選項的單位:

  • k 表示千字節。
  • M,表示兆字節。
  • G, 表示千兆字節。

示例:

   

根據修改時間搜索文件

-nmin選項加上分鐘表示以分鐘表示的時間,將搜索內容在過去n分鐘前更改的所有文件。如:查找在120以前更改的所有文件:find  / -nmin 120

分鐘樹前加上+修飾符將查找/ 目錄中在n分鐘以前修改過的所有文件,- 修飾符則查找/ 目錄中在過去n分鐘內更改的所有文件。示例

find /   -mmin +200     查找200分鐘以前修改過的文件。 find /  -mmin   -150   列出過去150分鐘內修改過的文件。

根據文件類型搜索文件

find命令中-type 選項將搜索範圍限制爲給定的文件類型。f,表示普通文件;d,表示目錄;l,表示軟連接;b,表示塊設備。示例:

列出 所有軟連接: find  /  -type l

-links選項加上數字將查找具有特定硬鏈接數的所有文件。數字前面帶有+修飾符將查找硬鏈接超過所給數目的文件。-修飾符則搜索限制爲硬鏈接數小於所給數目的所有文件。示例:

find /  -type f  -links +1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章