讓fdisk輸出更準確合理

2021-09-07 02:25:24 字數 3828 閱讀 3102

注意:新版本的fdisk預設輸出已經正確合理了,本文只適用於舊版本的fdisk.

[root@localhost ~]# fdisk -l

disk /dev/sda: 160.0 gb, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders

units = cylinders of 16065 * 512 = 8225280 bytes

sector size (logical/physical): 512 bytes / 512 bytes

i/o size (minimum/optimal): 512 bytes / 512 bytes

disk identifier: 0xf0b1ebb0

device boot start end blocks id system

/dev/sda1 * 1 7295 58592256 83 linux

/dev/sda2 7295 19458 97695745 5 extended

/dev/sda5 7295 17021 78124032 83 linux

/dev/sda6 17021 18966 15624192 83 linux

/dev/sda7 18967 19458 3945472 82 linux swap / solaris

[root@localhost ~]#

chs定位原理也很簡單,首先找到柱面(c),然後在此柱面上找到盤面(h),最後在 柱面和盤面切割的軌道上找到扇區(s)。其實理論上也可以先找到盤面然後再找軌道和扇區。之所以是chs這個順序是因為當初的硬碟構造決定的,所有磁頭都 固定在同乙個裝置上,相對位置不變,所以所有磁頭都是一起移動的。這樣如果相鄰資料在同一柱面上的話,則無需移動磁頭就能全部讀寫,所以效率最高。不扯這 些了,畢竟chs早就淘汰了。回到上面的輸出結果,第一行顯示/dev/sda這個硬碟總容量為160g,第二行顯示磁碟有255個磁頭(盤面),每個磁 道有63個扇區,同心圓環有19457個。難道這個硬碟真的有255個盤面?顯然這是不可能的。之所以會有這樣的輸出就是因為相容chs模式。而255個 磁頭63個扇區都是chs的極限值,在這裡並不代表實際的硬碟物理結構。第三行的units表示的是乙個柱面能儲存多少位元組資料,即 255*63*512,這對於現在的硬碟顯然也是沒有什麼意義的。然而在輸出結果的分割槽列表中的start和end列卻使用了unit作為度量單位,也就 是說分割槽的對齊單位是柱面,顯得非常不夠精確。blocks列的單位是kb,與units無關。

如果我們不加引數執行fdisk,輸出如下結果。

[root@localhost ~]# fdisk /dev/sda

warning: dos-compatible mode is deprecated. it's strongly recommended to

switch off the mode (command 'c') and change display units to

sectors (command 'u').

command (m for help):

此處給出了警告資訊:dos相容模式已經廢棄,強烈建議執行c命令切換模式,並且使用u命令把輸出的unit由柱面改為扇區。按照提示進行操作如下:

command (m for help): c

dos compatibility flag is not set

command (m for help): u

changing display/entry units to sectors

command (m for help): p

disk /dev/sda: 160.0 gb, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors

units = sectors of 1 * 512 = 512 bytes

sector size (logical/physical): 512 bytes / 512 bytes

i/o size (minimum/optimal): 512 bytes / 512 bytes

disk identifier: 0xf0b1ebb0

device boot start end blocks id system

/dev/sda1 * 2048 117186559 58592256 83 linux

/dev/sda2 117188606 312580095 97695745 5 extended

/dev/sda5 117188608 273436671 78124032 83 linux

/dev/sda6 273438720 304687103 15624192 83 linux

/dev/sda7 304689152 312580095 3945472 82 linux swap / solaris

command (m for help):

可見此時的列印結果中分割槽列表的unit不再以柱面為單位,而是以扇區了。而扇區確實是當前大多數硬 盤以及邏輯硬碟(lun)的最小儲存單位,而且也採用lba這種線性定址方式。既然fdisk能給出警告,為什麼不把預設改為正確的方式呢?比較發現新版 本的fdisk確實預設已經能正確顯示了,當遇到老版本的fdisk時,還是需要新增cu引數。

在非互動的fdisk -l下,也只需使用 fdisk -cul 即可正確顯示分割槽資訊了。

[root@localhost ~]# fdisk -cul

disk /dev/sda: 160.0 gb, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors

units = sectors of 1 * 512 = 512 bytes

sector size (logical/physical): 512 bytes / 512 bytes

i/o size (minimum/optimal): 512 bytes / 512 bytes

disk identifier: 0xf0b1ebb0

device boot start end blocks id system

/dev/sda1 * 2048 117186559 58592256 83 linux

/dev/sda2 117188606 312580095 97695745 5 extended

/dev/sda5 117188608 273436671 78124032 83 linux

/dev/sda6 273438720 304687103 15624192 83 linux

/dev/sda7 304689152 312580095 3945472 82 linux swap / solaris

順便提一下,注意上面mbr和第一主分割槽,以及各分割槽之間並不是緊密相連的,而是有一些「未使用」的扇區。我能想到的乙個原因就是,grub的一部分**就是存在於分割槽之間的夾縫之中。

讓CSS更規範 讓設計居中

摘自 長文字行難以閱讀。隨著現代顯示器的尺寸越來越大,螢幕可讀性問題變得越來越重要。緩解這個問題的一種方法是讓設計居中。居中的設計只佔螢幕的一部分,而不是橫跨螢幕的整個寬度,這樣就會建立比較短的容易閱讀的行。居中的設計目前非常時髦,所以如何在css中設計居中是大多數開發人員首先要學習的主題之一。讓設...

如何讓SOA更智慧型

讓soa更智慧型 用語義級的本體描述語言 owl 來描述soa的整個過程,可以提高soa的自動化程度,以實現服務的自動發現 自動匹配與自動組裝。北京地稅個稅soa專案組 soa是近幾年來被頻繁提及的概念,它作為一種架構模型,能夠幫助系統架構者更迅速 更具有重用性地架構整個業務系統。soa的核心是 服...

Tripl 讓旅行更簡單

tripl還可以提供給使用者互相分享他們未來的旅行計畫。儘管你已經外出旅行了,tripl也可以將你正在做的事情分享給其他人。一旦你登陸facebook,twitter,foursquare 和tripit 賬戶,tripl將會記錄你和朋友外出旅行的事情,將你們的旅行計畫整理好,並制定出個性化的圖示。...