1. 程式人生 > 其它 >Linux 中檢視檔案系統的塊大小

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 # 由於檔案儲存是按照塊來劃分的,因此這個小檔案佔用的磁碟空間就是一個塊的大小
    

參考:

[1] https://www.tecmint.com/find-linux-filesystem-type/

[2] https://serverfault.com/questions/29887/how-do-i-determine-the-block-size-of-an-ext3-partition-on-linux