你有一塊嶄新的SSD?你計(jì)劃給它分區(qū)?你知道SSD硬盤分區(qū)的最佳做法嗎?讓我來(lái)告訴你吧!
分區(qū)實(shí)踐示例
我很慶幸我所生活的這座城市居然有MicroCenter商店,我在那里買了一塊64GB SSD硬盤,它采用SandForce 1222控制器,我曾經(jīng)對(duì)SandForce控制器在各種基準(zhǔn)測(cè)試中的實(shí)時(shí)數(shù)據(jù)壓縮功能非常感興趣,因此我最終決定自己也搞一塊來(lái)試試,但在測(cè)試之前,我需要考慮如何配置這塊SSD。
我們面臨的挑戰(zhàn)是,分區(qū)發(fā)生在柱面邊界(記住Linux中的fdisk使用“磁頭”和“磁道”定義柱面),如果柱面邊界和SSD的“頁(yè)面”對(duì)不齊,在讀/修改/寫期間,SSD需要承擔(dān)更多地工作,可能會(huì)導(dǎo)致額外的寫周期,進(jìn)而降低性能,如果你不對(duì)SSD分區(qū),那么不需要擔(dān)心這個(gè)問(wèn)題。
默認(rèn)情況下,Linux fsdisk使用默認(rèn)的225磁頭,63扇區(qū)/磁道幾何形狀,一個(gè)扇區(qū)等于512字節(jié),每柱面就含有16065個(gè)5212字節(jié)大小的扇區(qū)(2008.125個(gè)4KB頁(yè)面),在4KB頁(yè)面上著肯定是不行的,因此我們需要調(diào)整幾何形狀,在4KB頁(yè)面上對(duì)齊柱面邊界,以便任何分區(qū)都和柱面邊界對(duì)齊。
如果你在網(wǎng)上搜索,你會(huì)發(fā)現(xiàn)一些針對(duì)不同SSD的幾何建議,例如,ext4的領(lǐng)導(dǎo)者Theodore Ts’o就專門寫了一篇博客探討這個(gè)主題,他的建議如下:
224 heads (32*7)
56 sectors per track (8*7)
這樣每個(gè)柱面包含12544個(gè)扇區(qū)(256*49),每個(gè)磁道使用56個(gè)扇區(qū),大小為56*512字節(jié),即每磁道28762字節(jié),這和每柱面4KB的7個(gè)塊是一樣的,因此每柱面4KB頁(yè)面的數(shù)量是一個(gè)整數(shù),這樣任何分區(qū)都是協(xié)調(diào)一致的,下面是如何實(shí)現(xiàn)這種效果的一個(gè)例子:
[root@test64 ~]# fdisk -H 224 -S 56 /dev/sdd
The number of cylinders for this disk is set to 9345.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-9345, default 1): 2
Last cylinder or +size or +sizeM or +sizeK (2-9345, default 9345):
Using default value 9345
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
注意,我是從第二個(gè)柱面開始的,以保證分區(qū)/dev/sdd1從柱面邊界開始。
可以在fdisk后面跟上“-l”參數(shù)檢查分區(qū)。
[root@test64 ~]# fdisk -l /dev/sdd
Disk /dev/sdd: 60.0 GB, 60022480896 bytes
224 heads, 56 sectors/track, 9345 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 2 9345 58605568 83 Linux
我們也可以使用“-lu”參數(shù)查看扇區(qū)的數(shù)量。
[root@test64 ~]# fdisk -lu /dev/sdd
Disk /dev/sdd: 60.0 GB, 60022480896 bytes
224 heads, 56 sectors/track, 9345 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 12544 117223679 58605568 83 Linux
分區(qū)從12544扇區(qū)(256*9)開始,在設(shè)備的末尾結(jié)束。
在OCZ技術(shù)社區(qū)有人提供了另一種建議,使用的幾何參數(shù)略有不同。
32 heads
32 sectors per track
這樣每柱面包含1024個(gè)扇區(qū)(32*32),512字節(jié)大小的扇區(qū)形成512KB的柱面(每柱面128個(gè)4KB頁(yè)面),還是以/dev/sdd為例,這種幾何劃分法的命令如下:
[root@test64 ~]# fdisk -H 32 -S 32 /dev/sdd
The number of cylinders for this disk is set to 114483.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-114483, default 1): 2
Last cylinder or +size or +sizeM or +sizeK (2-114483, default 114483):
Using default value 114483
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Fdisk加上“-l”參數(shù)可以檢查分區(qū)。
[root@test64 ~]# fdisk -l /dev/sdd
Disk /dev/sdd: 60.0 GB, 60022480896 bytes
32 heads, 32 sectors/track, 114483 cylinders
Units = cylinders of 1024 * 512 = 524288 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 2 114483 58614784 83 Linux
注意,這種幾何劃分方法的“單位”是512KB(524288字節(jié)),它比第一種方法的柱面數(shù)更多,我們可以使用fdisk –lu命令查看扇區(qū)布局。
[root@test64 ~]# fdisk -lu /dev/sdd
Disk /dev/sdd: 60.0 GB, 60022480896 bytes
32 heads, 32 sectors/track, 114483 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1024 117230591 58614784 83 Linux
注意,我們從扇區(qū)1024開始,使用512字節(jié)的扇區(qū),意味著分區(qū)匹配512KB。
那種方法更好呢?我認(rèn)為這取決于許多因素,特別是SSD的內(nèi)部結(jié)構(gòu)和固件工作原理,如果你不打算給你的SSD分區(qū),如使用整個(gè)設(shè)備作為一個(gè)分區(qū),那么你不需要擔(dān)心這些問(wèn)題,但如果你打算分區(qū),這兩個(gè)方法你就得選擇一個(gè),最重要的一條原則是,確保分區(qū)和邊界保持對(duì)齊,這樣有助于發(fā)揮SSD的性能,并延長(zhǎng)它的使用壽命。
更多精彩轉(zhuǎn)貼強(qiáng)力推薦