Linux 核心分區扇區大小的記錄大小(以字節為單位)
我的主要問題是權威地查看扇區中使用的塊大小是否計數:
/sys/block/<disk>/<partition>/size
實際上是 512 B,或者如果這可能會有所不同。
我認為這很容易找到答案,但例如在這裡:
https://lore.kernel.org/lkml/201012011729.18661.lists@egidy.de/T/#u
有人問了這個問題:
There are /sys/block/<device>/size and /sys/block/<device>/<device><partition>/size. But these values are reported in sectors, not in bytes. As discs with 4K sectors are on the horizon now, I don't want to make wrong assumptions on the sector size. So what is the correct sector size for /sys/block/<device>/size?
並且文件中提供了一個更新檔,顯然一勞永逸地回答了文件中的這個問題: https ://lore.kernel.org/lkml/1451154995-4686-1-git-send-email-peter@lekensteyn.nl/噸/
由於含義已超過 13 年沒有改變,我想將這些屬性形式化,以便使用者可以依賴它
$$ 1 $$$$ 2 $$. 扇區定義的靈感來自 block/stat.txt 文件。
使用更新檔:
diff --git a/Documentation/ABI/testing/sysfs-block b/Documentation/ABI/testing/sysfs-block +What: /sys/block/<disk>/<partition>/size +Date: October 2002 +Contact: linux-block@vger.kernel.org +Kernel Version: 2.5.43 +Description: + Size of the partition in standard UNIX 512-byte sectors + (not a device-specific block size).
這一切看起來都很簡單,但是當我查看當前現有的文件時: https ://www.kernel.org/doc/Documentation/ABI/testing/sysfs-block
該更新檔不存在。這表明事實上這個看似簡單的問題可能並不簡單?
有人可以指出我對這個問題的實際權威答案,理想情況下使用核心文件或帶有註釋的程式碼嗎?
目前我依賴於工具的輸出,但如果事實上並不總是 512B,那麼輸出可能是錯誤的,這會導致我正在處理的程式碼在某些情況下也是錯誤的。
我很驚訝找到一個真正權威的答案是如此困難,
https://unix.stackexchange.com/questions/52215/determine-the-size-of-a-block-device
其中一些指向此處的更新檔,但似乎沒有人知道該更新檔似乎沒有被接受,儘管它似乎已被簽署,但據我所知,它不在文件程式碼中。
如果我們能夠一勞永逸地確定內部核心程式碼到底在做什麼,並且這種行為是否被記錄在案,或者只是假設,這意味著它理論上可以隨時隨機更改,那將是很好的。
Linux 始終認為扇區長度為 512 字節,與設備實際塊大小無關
也就是說,我認為掃描
/sys/block/<disk>/
是可用於獲取磁碟和分區大小的最差(或至少更難)的方法: