Linux 中檢視檔案系統的塊大小
有時可能需要檢視 Unix 作業系統中有關於檔案基本單元的塊大小,以便對有的系統進行適當的優化(如 MySQL),本文將介紹幾種在 Unix 上以及類 Unix 作業系統上可行的檢視方式
檢查檔案系統[1]
-
使用
df
命令具體的命令如下:
# df 命令本身是用於報告磁碟的使用情況,經過擴充套件 -T 選項也可以列印檔案系統的型別, # -h 表示將使用情況轉換為人類可讀的 df -Th # 如果只想檢視指定分割槽的檔案系統,也可以這麼做 # 其實就是過濾了一下輸出而已,當然使用 sed 和 awk 也能夠做到, # 這裡就是隻檢視 /dev/sda11 分割槽的檔案系統型別以及使用情況 df -Th | grep "/dev/sda11"
輸出看起來可能像下面這樣:
可以看到,
/dev/sda1
分割槽所屬的檔案系統型別為vfat
(虛擬檔案分配表,作業系統用於組織和訪問在硬體驅動上的檔案),/dev/sda11
分割槽所屬的檔案系統型別為ext4
(第四代擴充套件檔案系統) -
fsck
命令fsck
命令本身用於檢查和修復檔案系統,也可以用來檢測檔案系統所屬的型別具體使用如下所示:
# 檢視 /dev/sda10 分割槽所屬的檔案系統型別,-N 選項表示不要檢測檔案系統中出現的錯誤, # 只打印出將要做的行為,因此能夠得到有關檔案系統的一部分資訊,包括檔案系統的型別 fsck -N /dev/sda10 # 這裡檢查分割槽 /dev/sda10 所屬的檔案系統型別
輸出如下圖所示:
-
lsblk
命令lsblk
(List Block Devices),用於顯示塊裝置,通過指定-f
選項即可打印出關於檔案系統相關的資訊具體使用如下所示:
lsblk -f
輸出結果如下圖所示:
一目瞭然
-
mount
命令mount
命令的本意是掛載一個檔案系統,或者是一個 ISO 映象以及遠端的檔案系統等其它類似的東西,如果不給mount
指定任何引數,那麼mount
將會列印有關磁碟分割槽的資訊,其中包括檔案系統型別具體的使用方式如下所示:
# 由於磁碟分割槽的資訊有點多,使用 grep 來過濾一下輸出是一個很好的想法,當然,awk 和 sed 也是可以的 mount | grep "^/dev" # 這裡的正則表示式表示的是以 /dev 開頭的輸出內容
具體的輸出結果如下圖所示:
-
blkid
命令blkid
命令用於定位或者列印檔案塊的裝置屬性,也能夠輸出磁碟的檔案系統型別,直接使用即可blkid
輸出結果如下:
-
file
命令file
命令本身是用於獲取一個檔案的屬性的,但是在 Unix 中,一切皆檔案,磁碟系統、外部裝置等也不例外,因此通過file
命令也可以檢視檔案系統相關的資訊# 預設情況下,file 命令只會讀取檔案的型別資訊,加上 -s 選項使得 file 命令能夠讀取 block 或者字元檔案, # -L 選項使得符號連結能夠起到作用 sudo file -sL /dev/sda11 # -s 選項在讀取 block 時必須有 root 許可權
輸出結果如下圖所示:
-
使用
/etc/fstab
檔案/etc/fstab
檔案中定義了靜態的檔案系統資訊,包括掛載點、檔案系統型別、掛載選項等大致的內容如下圖所示:
檢視塊大小[2]
-
使用
tune2fs
命令tune2fs
用於調整和檢視ext
系列的檔案系統的引數資訊,其中就包括了塊大小的資訊,如果想要檢視分割槽/dev/sda11
的塊大小資訊,可以像下面這麼做:# -l 選項列出檔案系統超級塊的引數內容,包括已經設定了的引數和可以被設定的引數 # 該命令必須有超級使用者的許可權才能執行 tune2fs -l /dev/sda11 | grep -i "Block size" # 由於引數過長,使用 grep 來過濾塊大小的資訊,-i 表示忽略大小寫
輸出結果如下:
可以看到,
/dev/sda11
的塊大小為 4096 bit,即 4 KB -
stat
命令stat
用於顯示檔案或者檔案系統的狀態,檢查目錄即可檢視有關塊大小的資訊(目錄就是一個塊)具體使用如下:
# . 可以換成任意的其它目錄,使用這種方式不需要超級使用者許可權 stat . # 或者直接得到塊大小,-f 選項表示顯示檔案系統狀態而不是檔案狀態;-c 表示按照指定的格式輸出;%s 表示輸出總計大小的輸出格式, stat -fc %s .
輸出如下:
-
dumpe2fs
命令dumpe2fs
命令用於獲取ext
系列檔案系統的資訊,具體使用如下所示:# 該命令只也需要超級使用者的許可權,-h 選項表示只顯示超級塊的資訊 sudo dumpe2fs -h /dev/sda11 | grep -i "Block Size" # 檢視分割槽 /dev/sda11 的資訊,使用 grep 過濾掉輸出
輸出結果如下圖所示:
-
blockdev
命令blockdev
表示從命令列中呼叫ioctl
,具體的使用方式如下所示:# 該命令同樣需要超級使用者的許可權;--getbsz 表示列印塊大小(單位為 bit) sudo blockdev --getbsz /dev/sda11
-
du
檢測小檔案du
本身是用於檢測檔案在磁碟中的佔用空間的,但是寫入的檔案內容是按照塊大小來劃分的,因此,只需要檢測一個很小的檔案的大小,即可得到塊單元的大小,具體如下所示:echo 1 > test # 建立一個小檔案,小於塊大小 du -h test # 由於檔案儲存是按照塊來劃分的,因此這個小檔案佔用的磁碟空間就是一個塊的大小
參考: