blockdev 是從命令列呼叫區塊裝置 ioctl 控制介面的工具,可設定預讀大小、唯讀/可讀寫模式、查詢扇區大小與容量等底層參數。本文說明常用選項與實務操作範例。
| 選項 | 功能 |
|---|---|
--setra N | 設定預讀扇區數(每扇區 512 bytes),預讀大小 = N × 512 bytes |
--getra | 顯示目前預讀扇區數 |
--setro | 設定裝置為唯讀(區塊層級,優先於掛載選項) |
--getro | 查詢唯讀狀態(1=唯讀,0=可讀寫) |
--setrw | 設定裝置為可讀寫 |
--getss | 顯示邏輯扇區大小(通常 512) |
--getsize | 顯示裝置容量(以 512-byte 扇區為單位) |
--flushbufs | 刷新裝置緩衝區 |
--rereadpt | 重讀分區表 |
blockdev --getra /dev/sda
# 輸出如 256 (即 128 KB)
blockdev --setra 4096 /dev/sda # 2 MB 預讀
blockdev --setro /dev/sdb
blockdev --getro /dev/sdb # 應回傳 1
# 即使 mount -o rw 也會提示 write-protected, mounting read-only
blockdev --setrw /dev/sdb
blockdev --getro /dev/sdb # 應回傳 0
blockdev --getsize /dev/sda
blockdev --getss /dev/sda
mount -o ro:檔案系統層級唯讀,僅影響該掛載點;同一裝置若另以 rw 掛載仍可寫入。blockdev --setro:區塊裝置層級唯讀,所有掛載點、所有檔案系統、甚至 dd 直接寫入裝置皆被阻擋,安全性更高。
善用 blockdev --setra 調整預讀可針對工作負載優化 I/O 效能;--setro/--setrw 提供比檔案系統掛載選項更底層的寫入保護機制。