2014-12-07 64 views
0

我目前正在做塊驅動程序。我注意到在我的測試中,如果我的平臺是 是RHEL6.x/CentOS6.x,我的結構請求的開始 LBA /扇區始終與8對齊(例如0,8,0x10,0x100,0x2508等) 實際上是我設計的驅動程序和固件的最佳選擇。看起來 結構請求總是在那裏對齊。從結構請求LBA開始地址對齊

在另一方面,如果測試我的司機在一些比較老的系統,如Oracle 5.6, 起始LBA爲結構的請求,這似乎並沒有被對準 8 - 該LBA被offseted大多數情況下(如0x2507,300F ,0x95bd500f, 等)

我的塊隊列設置甚至從sysfs中尋找表明,我的 邏輯塊的大小和物理塊大小分別爲512和512, 。所以我不認爲這與4kB 部門有關。可能會觸發這種行爲的設置是什麼?是 有一個請求隊列或gendisk設置,控制這個,我可能 不知道?或者這是由FS層決定的?希望有人 可以指出。

謝謝!

+0

*「所以我不認爲它與4kB扇區有關」* - 爲什麼不呢?你有沒有聽說過「向前兼容」?或者當扇區大小爲4K字節時512B /扇區仿真的最佳性能如何?閱讀http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/ – sawdust 2014-12-07 23:35:03

+0

嗯,我認爲,因爲我的sysfs條目讀取邏輯和物理兩個512字節塊並沒有提及4kb。其他條目,如alignment_offset,minimum_io_size和optimal_io_size分別爲0,512,0。無論你如何建議可能值得研究,我如何驗證在我的新系統中實現向前兼容性?所以我會在我的舊系統中實現它,比如oel 5.6。 – ubermensch 2014-12-09 02:34:34

回答

1

這幾乎肯定是因爲您的分區在較新的系統上與8個塊的邊界對齊,而不是在較舊的系統上(您可以使用sfdisk詳細檢查分區表)。

讀取將以文件系統塊大小爲單位,這將是系統pagesize的倍數(在最常見的體系結構中爲4kB)。因此,如果你的文件系統從塊設備的起始位置偏移了8的非倍數,那麼所有的讀數也將從8的倍數偏移該量。

+0

我檢查了你的建議,但用fdisk。我主要在分區時使用「fdisk/dev/」,這是我對舊的(OEL5.6)和較新的系統所做的。由此產生的分區在轉換爲扇區時,舊系統和新系統都提到我的分區1以扇區/ LBA 63開始。這是否意味着無論哪種方式,我的分區已經不對齊8個塊? – ubermensch 2014-12-09 12:15:46

+0

是的。這在舊版本的fdisk中很常見,但新版本應該默認啓動LBA 2048的第一個分區。 – caf 2014-12-10 10:47:21

+0

謝謝。我已經驗證過,如果我將分區的開始與4kB c/o fdisk對齊,則在文件訪問期間,我不會獲得非4kB對齊的LBA。 – ubermensch 2014-12-12 11:41:14