伺服器添加3塊磁碟的體繫結構 [root@oldboylinux test]# free -m total used free shared buffers cached Mem: 992 133 859 0 24 37 -/+ buffers/cache: 70 921 Swap: 511 0 5... ...
伺服器添加3塊磁碟的體繫結構
- [root@oldboylinux test]# free -m
- total used free shared buffers cached
- Mem: 992 133 859 0 24 37
- -/+ buffers/cache: 70 921
- Swap: 511 0 511
註意:
1、linux系統的特性是將系統不用的物理記憶體緩存起來,因此,859不是系統的真是記憶體。
2、系統真正可用記憶體是921。
3、buffers為寫入緩衝區,sync將緩衝區數據寫入磁碟。
4、cache為讀取數據的緩衝區。
5、硬碟是機械的,無論是寫入還是讀取都太慢了,所以讀取和寫入都是用來緩存技術。
6、門戶架構網站都會採用緩存技術,來讓用戶寫入讀取儘可能不接觸磁碟。
磁碟的內部結構
磁碟的內部結構主要包括:碟片、磁頭、碟片主軸、控制電機、磁頭控制器、數據轉換器、介面、緩存等幾個部分。
磁頭組件及磁頭驅動裝置
1、磁頭組件。它由讀寫磁頭、傳動手臂、傳動軸三部分組成。
磁碟讀取數據的工作原理是利用特定的磁粒子的極性來記錄數據。磁頭在讀取數據時,將磁粒子的不同極性轉換成不同的電脈衝信號,再利用數據轉換器將這些原始信號變成電腦可以使用的數據,寫的操作正好與此相反。
2、磁頭驅動裝置。磁碟的尋道是靠移動磁頭,而移動磁頭則需要該裝置驅動才能實現(機械操作)。磁頭驅動裝置由電磁線圈電機、磁頭驅動小車、防震動裝置構成,高精度的輕型磁頭驅動裝置能夠對磁頭進行正確的驅動和定位,並能在很短的時間內精確定位系統指令指定的磁軌。
3、磁碟片。碟片是磁碟存儲數據的真正載體,磁碟碟片大多採用金屬薄膜材料(或有機玻璃材料),這種金屬薄膜較軟盤的不連續顆粒載體具有更高的存儲密度、高剩磁及高矯頑力等優點。
4、主軸組件。主軸組件包括如軸承和驅動電機等。磁碟主軸的轉數是衡量磁碟讀寫性能的重要參考之一。例:SAS15K,SATA10K。
5、前置控制電路。前置電路控制磁頭感應的信號、主軸電機調速、磁頭驅動和伺服定位等,由於磁頭讀取的信號微弱,將放大電路密封在腔體內可以減少外來信號的干擾,提高操作指令的準確性。
企業生產工作中磁碟的選型
當前伺服器市場,主流磁碟為SAS、SATA、SSD硬碟。
企業級SAS硬碟
企業里常見的SAS硬碟是15000轉/分。當前主流300G、600G、1T,從具體的業務需求及性價比考慮,工作中多用300-600G的SAS硬碟。用於提供生產線上的普通對外提供服務的業務伺服器。例如,生產線上的資料庫業務、存儲業務、圖片業務及相關高併發業務(web http、cache服務),總的來說,如果沒有特殊業務需求,SAS磁碟是生產環境首選的磁碟配置。
企業級SATA硬碟
企業級SATA硬碟7200-10000轉/分,常見的容量為1T、2T、4T和6T,優點是經濟實惠,容量大,從具體的業務需求及性價比考慮,工作中多用SATA磁碟做線下不提供服務的數據存儲或者併發業務服務不是很大的業務應用,比如站點程式及資料庫、圖片的線下備份等。特性容量性價比高,一般2T的SATA磁碟較佳。
磁碟選購要點:
1、線上業務用SAS磁碟。
2、線下的業務用SATA磁碟,磁帶庫。
3、線上高併發、小容量的業務用SSD磁碟。
4、根據數據的訪問熱度,智能分析分層存儲。
註意:千萬不能用SATA磁碟來做線上高併發服務的數據存儲或資料庫業務。
磁碟相關名詞解釋
英文 | 中文 |
disk | 磁碟 |
head | 磁頭 |
sector | 扇區 |
track | 磁軌 |
cylinder | 柱面 |
units | 單元塊(一個柱面的大小) |
block | 數據塊 |
inode | 索引節點 |
在磁碟不工作的時候,磁頭停靠在靠近主軸接觸碟片的錶面,即線速度最小的地方,這裡是一個不存放任何數據的特殊區域,稱為啟停區或著陸區(landing zone),啟停區以外就是數據區。
在磁碟的最外圈,離主軸最遠的磁軌稱為"0"磁軌,磁碟數據的存放就是從最外圈"0"磁軌開始的。"0"磁軌非常重要,系統的引導程式就在0柱面0磁軌1扇區的前446bytes。
磁軌
每個碟片有兩個面,都可記錄信息。碟片錶面以碟片中心為圓心,用於記錄數據的不同半徑的圓形磁化軌跡就稱為磁軌。
磁碟在格式化時被劃分成許多同心圓,這些同心圓的軌跡叫做磁軌(track)。磁軌由盤面從外向內依次從0開始順序編號。
柱面
所有的盤面上同一個半徑的磁軌的圓形軌跡從上到下依次會成一個圓柱體,就稱作柱面(cylinder),每個圓柱上的磁頭由上而下從"0"開始編號。
柱面數=一個盤面的磁軌數
扇區
盤面有圓心向四周畫直線,不同的磁軌被直線分成許多扇形(弧形)的區域,每個弧形的區域叫做扇區,每個扇區大小為512位元組。
操作系統是以扇區(sector)為單位將信息存儲在磁碟上,一般情況下,每個扇區的大小是512個位元組。一個扇區主要有兩個部分內容,存儲數據地點的標識符和存儲數據的數據段。
扇區的第一個主要部分是標識符。標識符就是扇區頭標,包括組成扇區三維地址的三個數字,扇區所在的磁頭(或盤面)、磁軌(或柱面號)以及扇區在磁軌上的位置即扇區號。投標中還包括一個欄位,其中有顯示扇區是否能可靠存儲數據,或者是否已發現某個故障因而不宜使用的標記。有些磁碟控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁碟轉到替換扇區或磁軌。最後,扇區頭標以迴圈冗餘校驗(CRC)值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準備無誤。
扇區的第二個主要部分是存儲數據的數據段,可分為數據和保護數據的糾錯碼(ECC)。在初始準備期間,電腦用512個虛擬信息位元組(實際數據的存放地)和與這些虛擬信息位元組相應的ECC數字填入這個部分。
磁軌柱面扇區總結
磁碟最基本的組成部分是由堅硬的金屬材料製成的塗以磁性介質的碟片(有很多層),不同容量磁碟的碟片數不等。
1、一塊磁碟有2-14個碟片,每個碟片有兩個面,每個面對應一個讀寫磁頭,用磁頭號來區分盤面,即盤面數就是磁頭數,碟片數*2=磁頭數(盤面數)。
2、不同盤面的磁軌被劃分為多個扇形區域,每個區域就是一個扇區(sector)。
3、同一個盤面,以碟片中心為圓心,每個不同半徑的圓形軌跡就是一個磁軌(track)。
4、不同盤面相同半徑的磁軌組成一個圓柱面就是柱面(cylinder)。
5、一個柱麵包含多個磁軌(這些磁軌半徑相同),一個磁軌包含多個扇區。
6、數據信息記錄可表示為:某磁頭、某磁軌(柱面)、某扇區。
磁碟容量計算
- [root@oldboylinux ~]# fdisk -l
- Disk /dev/sda: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 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: 0x000ec58f
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 26 204800 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 26 91 524288 82 Linux swap / Solaris
- Partition 2 does not end on cylinder boundary.
- /dev/sda3 91 1045 7658496 83 Linux
方法一:
磁碟容量=512*扇區數*磁軌數*磁頭數
每個磁軌的大小=512*扇區數
一個盤面的大小=512*扇區數*磁軌數
方法二:
磁碟容量=柱面數*柱面大小
柱面數=磁軌數
柱面大小=磁軌大小*磁頭數
磁軌大小=512*扇區數
- [root@oldboylinux ~]# fdisk -l /dev/sda1
- Disk /dev/sda1: 209 MB, 209715200 bytes
- 255 heads, 63 sectors/track, 25 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: 0x00000000
磁頭數:255 heads,扇區數:63sectors/track,柱面數:25cylinders。
磁碟大小=512*扇區數*磁軌數*磁頭數=512*255*63*25=205632000 bytes
機械磁碟讀寫原理
1、磁碟是按照柱面為單位讀寫數據的,即先讀取同一個盤面的某一個磁軌,讀完之後,如果數據沒有讀完,磁頭也不會切換其他的磁軌,而是選擇切換磁頭,讀取下一個盤面的相同半徑的磁軌,直到所有盤面的相同半徑的磁軌讀取完成之後,如果數據還沒有讀寫完成,才會切換到其他不同半徑的磁軌,這個切換磁軌的過程稱為尋道。
2、不同磁頭間的切換是電子切換,而不同磁軌間的切換需要磁頭做徑向運動,這個徑向運動需要步進電機調節,這個動作是機械的切換。
磁碟分區
磁碟存儲邏輯結構
一個硬碟的存儲結構包括主引導記錄、分區表、分區結束標誌,及其它分區的引導信息及數據區信息。
主引導扇區在整個硬碟里是唯一的,也就是一個硬碟只能有一個,下麵是0磁軌1扇區的放大圖示。
16位元組分區表的內容
位元組數 | 說明 |
1bytes | state:分區狀態,0=未激活,0x80=激活。 |
1bytes | startHead:分區起始磁頭號 |
2bytes | startSC:分區起始扇區和柱面號,低位元組的低6位為扇區號,高2位為柱面號的第9,10位,高位元組為柱面號的低8位。 |
1bytes | type:分區類型,如0x0B=FAT32,0x83=linux等,00表示此項未用 |
1bytes | endHead:分區結束磁頭號 |
2bytes | endSC:分區結束扇區和柱面號 |
4bytes | Relative:線性定址方式下分區相對扇區地址(對於基本分區即為絕對地址) |
4bytes | sectors:分區大小(總扇區數) |
備份與恢復MBR
- [root@oldboylinux ~]# dd if=/dev/sda of=mbr.bin bs=512 count=1 #備份MBR
- 1+0 records in
- 1+0 records out
- 512 bytes (512 B) copied, 0.000217105 s, 2.4 MB/s
- [root@oldboylinux ~]# od -xa mbr.bin #查看MBR
- 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e
- k H dle dle so P < nul 0 8 nul nul so X so @
- 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006
- { > nul | ? nul ack 9 nul stx s $ j ! ack nul
- 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507
- nul > > bel 8 eot u vt etx F dle soh ~ ~ bel u
- 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203
- s k syn 4 stx 0 soh ; nul | 2 nul nl t etx stx
- 0000100 0080 8000 8176 0000 0800 90fa f690 80c2
- nul nul nul nul v soh nul nul nul bs z dle dle v B nul
- 0000120 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0
- u stx 2 nul j Y | nul nul 1 @ so X so P <
- 0000140 2000 a0fb 7c40 ff3c 0274 c288 f652 80c2
- nul sp { sp @ | < del t stx bs B R v B nul
- 0000160 5474 41b4 aabb cd55 5a13 7252 8149 55fb
- t T 4 A ; * U M dc3 Z R r I soh { U
- 0000200 75aa a043 7c41 c084 0575 e183 7401 6637
- * u C sp A | eot @ u enq etx a soh t 7 f
- 0000220 4c8b be10 7c05 44c6 01ff 8b66 441e c77c
- vt L dle > enq | F D del soh f vt rs D | G
- 0000240 1004 c700 0244 0001 8966 085c 44c7 0006
- eot dle nul G D stx soh nul f ht \ bs G D ack nul
- 0000260 6670 c031 4489 6604 4489 b40c cd42 7213
- p f 1 @ ht D eot f ht D ff 4 B M dc3 r
- 0000300 bb05 7000 7deb 08b4 13cd 0a73 c2f6 0f80
- enq ; nul p k } 4 bs M dc3 s nl v B nul si
- 0000320 f084 e900 008d 05be c67c ff44 6600 c031
- eot p nul i cr nul > enq | F D del nul f 1 @
- 0000340 f088 6640 4489 3104 88d2 c1ca 02e2 e888
- bs p @ f ht D eot 1 R bs J A b stx bs h
- 0000360 f488 8940 0844 c031 d088 e8c0 6602 0489
- bs t @ ht D bs 1 @ bs P @ h stx f ht eot
- 0000400 a166 7c44 3166 66d2 34f7 5488 660a d231
- f ! D | f 1 R f w 4 bs T nl f 1 R
- 0000420 f766 0474 5488 890b 0c44 443b 7d08 8a3c
- f w t eot bs T vt ht D ff ; D bs } < nl
- 0000440 0d54 e2c0 8a06 0a4c c1fe d108 6c8a 5a0c
- T cr @ b ack nl L nl ~ A bs Q nl l ff Z
- 0000460 748a bb0b 7000 c38e db31 01b8 cd02 7213
- nl t vt ; nul p so C 1 [ 8 soh stx M dc3 r
- 0000500 8c2a 8ec3 4806 607c b91e 0100 db8e f631
- * ff C so ack H | ` rs 9 nul soh so [ 1 v
- 0000520 ff31 f3fc 1fa5 ff61 4226 be7c 7d7f 40e8
- 1 del | s % us a del & B | > del } h @
- 0000540 eb00 be0e 7d84 38e8 eb00 be06 7d8e 30e8
- nul k so > eot } h 8 nul k ack > so } h 0
- 0000560 be00 7d93 2ae8 eb00 47fe 5552 2042 4700
- nul > dc3 } h * nul k ~ G R U B sp nul G
- 0000600 6f65 006d 6148 6472 4420 7369 006b 6552
- e o m nul H a r d sp D i s k nul R e
- 0000620 6461 2000 7245 6f72 0072 01bb b400 cd0e
- a d nul sp E r r o r nul ; soh nul 4 so M
- 0000640 ac10 003c f475 00c3 0000 0000 0000 0000
- dle , < nul u t C nul nul nul nul nul nul nul nul nul
- 0000660 0000 0000 0000 0000 c58f 000e 0000 2080
- nul nul nul nul nul nul nul nul si E so nul nul nul nul sp
- 0000700 0021 9f83 1906 0800 0000 4000 0006 9f00
- ! nul etx us ack em nul bs nul nul nul @ ack nul nul us
- 0000720 1907 e482 5a0a 4800 0006 0000 0010 e400
- bel em stx d nl Z nul H ack nul nul nul dle nul nul d
- 0000740 5a0b fe83 ffff 4800 0016 b800 00e9 0000
- vt Z etx ~ del del nul H syn nul nul 8 i nul nul nul
- 0000760 0000 0000 0000 0000 0000 0000 0000 aa55
- nul nul nul nul nul nul nul nul nul nul nul nul nul nul U *
- 0001000
- [root@oldboylinux ~]# dd if=mbr.bin of=/dev/sda bs=512 count=1 #恢復MBR
磁碟分區
1、磁碟分區的實質就是針對0磁頭0磁軌1扇區的前446位元組後面接下來的64bytes的分區表進行設置,即主要是劃分起始以及結束磁頭號,及扇區號和柱面號。
2、分區工具有fdisk(適合小於2T的磁碟分區),parted(適合大於2T的磁碟分區,可以對小於2T的磁碟分區),fdisk首選,只有大於2T時才會選parted。
3、一塊磁碟的分區表僅有64bytes大小,每個分區表要占用16位元組,因此一塊磁碟僅支持四個分區表信息,即主分區+擴展分區的總量不超過4個。
4、磁碟分區是按照柱面(cylinder)來劃分的。
5、擴展分區不能直接使用的,還需要在擴展分區的基礎上創建邏輯分區。
6、擴展分區有自己的分區表,因此擴展分區下麵的邏輯分區可以有多個。
磁碟在使用前一般需要進行分區,當然如果不分區直接格式化使用也可以,但這不是常見情況。磁碟分區有主分區、擴展分區和邏輯分區。一塊硬碟最多可以有4個分區表信息(磁碟本身限制),其中一個主分區的位置可以用一個擴展分區替換,且一塊硬碟只能有一個擴展分區(操作系統限制),在這個擴展分區中可以劃分多個邏輯分區(IDE磁碟分區編號大概5-63),SATA(編號5-15)。
一臺伺服器6塊600G的磁碟,raid5後,總大小3T,次數無法裝系統。解決辦法是做raid5後,不要直接重啟裝系統,而是再raid界面,繼續分一個小的虛擬磁碟vd 200G,用這個200G的虛擬磁碟裝系統,裝完系統後再把剩餘的2.8T通過parted分區。
主分區primary
主分區是磁碟上必須存在的分區,一般為磁碟的第一個分區。在一個磁碟上最多只能有4個主分區。
一個磁碟想分6個分區,主分區和擴展分區的數量:
1p+1e,2p+1e,3p+1e。
擴展分區Extended
擴展分區就像一個虛擬出來的一個小硬碟一樣,但是不同的是沒有MBR,而只有擴展分區表,而且這個擴展分區表示沒有64bytes的限制的,所以可以在擴展分區上劃分多個邏輯分區。一塊磁碟只能存放一個擴展分區,並且擴展分區不能直接存放數據,擴展分區受限於操作系統。
邏輯分區logical
不能在磁碟中單獨直接劃分邏輯分區(fdisk),邏輯分區必須存在於擴展分區內。在擴展分區內可以劃分多個邏輯分區,邏輯分區的編號從數字5開始。在這個擴展分區內可以劃分多個邏輯分區(IDE磁碟大概編號可以是5-63)。
磁碟分區註意事項
1、任意多個主分區,但要求1<=主分區數量<=4。
例如,一個硬碟可以分為4個主分區、3個主分區、2個主分區、1個主分區。
2、擴展分區可以和主分區組合,但要求2<=(主分區+擴展分區)<=4。
例如:3個主分區+1個擴展分區、2個主分區+1個擴展分區或1個主分區+1個擴展分區。當總分區的數量大於4個的時候,必須提前分一個擴展分區。
3、如果要分成四個磁碟分區的話,那麼分區方式可以為p+p+p+p或p+p+p+e。
註意:
由於MBR及磁碟分區表大小的限制,如果對磁碟分配了4p或3p+e後,即使磁碟還有剩餘未分的空間,那麼這部分空間也無法分區使用了(因為無分區可分了,分區表空間已經被沾滿)。因此,在做分區規劃時,如果業務需要,在分區之前就已經明確要超過4個分區,就可以選擇3p+e的分區方式,並且在最後一個擴展分區要將所有的剩餘空間都分配給這個擴展分區。當然,也可以採用1p+1e、2p+1e的分區方式,其實就是主分區不能分完,保留不分。
說明:
1、擴展分區不是一個真正的可用分區,建立完擴展分區後,還需要在擴展分區上面建立邏輯分區才可以使用。
2、對於主分區和邏輯分區在一本的數據存儲使用上是沒有區別的(對於大多數的數據存儲),在安裝操作系統時第一個分區要選主分區。
3、分區數字編號1-4留給主分區或擴展分區使用,邏輯分區編號只能從5開始,即使1-4分區號有剩餘,也不會分配給邏輯分區。
4、對硬碟分區,實際上就是修改硬碟的分區表(partition table),也就是說可以通過fdisk分區實際上就是在修改64位元組的分區表,分區對應的數據沒有關係。因此,理論上調整分區大小,不會刪除分區內的數據。
分區方案
方案一:集群結構中的某個節點,數據有多份或者不重要。
/boot 100MB linux引導程式
swap 物理記憶體的1.5倍,當記憶體大於等於8G時,給8G即可。
/ 剩餘硬碟大小
方法二:資料庫及存儲,有大量重要數據
/boot 100MB
/ 50-200G
swap 物理記憶體的1.5倍,當記憶體大於等於8G時,給8G即可。
/data 剩餘硬碟大小,放資料庫及存儲數據。
方案三:門戶級別或大網站
/boot 100MB
swap 物理記憶體的1.5倍,當記憶體大於等於8G時,給8G即可。
/ 50-200G
剩餘空間保留,不再進行分區,將來分給別的需要的部門。
硬碟分區的設備名
在linux系統中,是通過設備名來訪問設備的,設備名存放在"/dev"目錄中。
設備名稱的定義規則如下,其他的分區依次類推:
系統的第一塊IDE介面的硬碟:/dev/hda
系統的第二塊IDE介面的硬碟:/dev/hdb
系統的第一塊SCSI介面的硬碟:/dev/sda
系統的第二塊SCSI介面的硬碟:/dev/sdb
SATA、SAS都是sd開頭。
每個分區則使用磁碟名稱加對應的數字編號表示:
系統的第一塊IDE介面硬碟的第一個分區:/dev/hda1
系統的第一塊IDE介面硬碟的第五個分區:/dev/hda5
系統的第二塊SCSI介面硬碟的第一個分區:/dev/sdb1
系統的第二塊SCSI介面硬碟的第五個分區:/dev/sdb5
註意:
1、分區數字編號1-4留給主分區或擴展分區使用,邏輯分區編號只能從5開始。
2、IDE硬碟設備名均以/dev/hd開頭,不同硬碟編號依次是/dev/hda/、/dev/hdb、/dev/hdc…。
3、SCSI/SAS/SATA/USB介面硬碟的設備名均以/dev/sd開頭。不同硬碟編號依次是/dev/sda、/dev/sdb、/dev/sdc…。
4、特別註意,SAS/SATA為當前互聯網生產環境主流硬碟介面,SSD固態硬碟,由於是電子設備,性能很高,也逐漸被應用。
5、linux環境下沒有盤符的概念。要對磁碟設備進行操作,需要使用磁碟設備名,讀取磁碟設備內容,需要把創建的分區或邏輯捲上的文件系統掛載到指定的目錄上。
6、在linux系統上劃分了分區之後,還要在分區上創建文件系統。
文件系統類型
文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制。文件系統是在一個磁碟(包括光碟、軟盤、閃盤及其它存儲設備)或分區上組織文件的方式和方法,常見文件系統如ext2、ext3、ext4、NTFS、FAT、FAT32等。文件系統是組織存儲文件或數據的方法,目的是易於查詢和存取數據。因此,如果磁碟上沒有文件系統也就無法存儲數據了,因此,在磁碟分區後能夠使用之前必須建立對應的文件系統才行。
文件系統是基於存儲設備的,比如硬碟或光碟,並且包含文件物理位置的維護,文件系統也可以說是虛擬數據或網路數據存儲的方法,比如NFS、MFS、GFS。目前unix、linux的文件系統有很多種實現,例如:UFS(基於BSD的unix文件系統)、ext2、ext3、ext4、zfs、xfs和reiserfs等。
註意:
1、文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制。
2、分區必須格式化創建文件系統才能存放數據。
3、一個分區只能有一種文件系統。
4、linux下常見文件系統ext2、ext3、ext4、zfs、xfs(CentOS7)和reiserfs(單獨安裝)。windows下常見文件系統NTFS、FAT32。
文件系統的選擇
SAS、SATA銀盤文件系統選擇:
1、reiserfs:大量小文件業務首選reiserfs(100k以內)
2、xfs:有的門戶的數據塊mysql業務。
4、ext4:視頻下載、流媒體、資料庫、小文件業務。
5、ext2:沒有日誌,CDN網站加速服務。
常用應用:
CentOS5.x系統:預設ext3。
CentOS6.x系統:預設ext4。
CentOS7.x系統:預設xfs。
SSD文件系統選擇
ext4、reiserfs可以作為SSD文件系統,但未對SSD做優化,不能充分發揮SSD性能,並影響SSD使用時間。
btrfs對SSD作了優化,mount通過參數啟用。但btrfs仍處於試驗階段,生產環境謹慎使用。
jffs32、nilfs2、yaffs是常用的flash file system,在嵌入式環境廣泛應用,建議使用。
在linux中製作文件系統
用類似如下命令在linux中製作並優化reiserfs文件系統:
/sbin/mkreiserfs /dev/sda2
用類似如下命令在linux中製作xfs文件系統:
mkfs -t xfs -f /dev/sda2
註意:ext3fs其實是簡單的激活了記賬的ext2fs。當創建該文件系統時,對mke2fs使用-j選項:
/sbin/mke2fs -j /dev/sda2
查看目前支持的文件系統
- [root@oldboylinux ~]# ls /lib/modules/2.6.32-504.el6.x86_64/kernel/fs/
- autofs4 cramfs ext3 gfs2 mbcache.ko squashfs
- btrfs dlm ext4 jbd nfs ubifs
- cachefiles ecryptfs fat jbd2 nfs_common udf
- cifs exportfs fscache jffs2 nfsd xfs
- configfs ext2 fuse lockd nls
文件系統內部
- [root@oldboylinux ~]# dumpe2fs /dev/sda
- dumpe2fs 1.41.12 (17-May-2010)
- dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
- Couldn't find valid filesystem superblock.
- [root@oldboylinux ~]# dumpe2fs /dev/sda1
- dumpe2fs 1.41.12 (17-May-2010)
- Filesystem volume name: <none>
- Last mounted on: /boot
- Filesystem UUID: 16664a83-1118-495f-af51-363c9f6fb6e0
- Filesystem magic number: 0xEF53
- Filesystem revision #: 1 (dynamic)
- Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
- Filesystem flags: signed_directory_hash
- Default mount options: user_xattr acl
- Filesystem state: clean
- Errors behavior: Continue
- Filesystem OS type: Linux
- Inode count: 51200
- Block count: 204800
- Reserved block count: 10240
- Free blocks: 166642
- Free inodes: 51162
- First block: 1
- Block size: 1024
- Fragment size: 1024
- Reserved GDT blocks: 256
- Blocks per group: 8192
- Fragments per group: 8192
- Inodes per group: 2048
- Inode blocks per group: 256
- Flex block group size: 16
- Filesystem created: Fri Dec 16 22:02:58 2016
- Last mount time: Sat Jan 7 08:51:29 2017
- Last write time: Sat Jan 7 08:51:29 2017
- Mount count: 28
- Maximum mount count: -1
- Last checked: Fri Dec 16 22:02:58 2016
- Check interval: 0 (<none>)
- Lifetime writes: 36 MB
- Reserved blocks uid: 0 (user root)
- Reserved blocks gid: 0 (group root)
- First inode: 11
- Inode size: 128
- Journal inode: 8
- Default directory hash: half_md4
- Directory Hash Seed: 5c41ba8b-25c4-49f3-ab7e-e14d96dca193
- Journal backup: inode blocks
- Journal features: (none)
- Journal size: 4096k
- Journal length: 4096
- Journal sequence: 0x00000025
- Journal start: 0
超級塊:記錄文件系統的控制與管理信息(Group0以前的信息)。
1、block和inode的個數和大小,及其已用和未用的數量。
2、文件系統的載入時間、最近一次寫入數據時間、最近一次執行fsck進行磁碟檢查的時間等。
3、有效位:0已載入,1位載入。
組描述:記錄本塊組從何處開始
塊位示圖:使用位示圖記錄哪些塊已用哪些塊未用。
inode位示圖:使用位示圖記錄inode的使用情況。
inode區:各個inode組成的區域,每個inode都有一個唯一編號。
數據塊區:各個block組成的區域,用於存儲文件數據。
磁碟分區
添加一塊磁碟創建6個分區
1p+1e(5L):/dev/sdb1,/dev/sdb5,/dev/sdb6,/dev/sdb7,dev/sdb8,dev/deb9
分區:設置分區表
格式化:創建文件系統
查看磁碟信息
- [root@oldboylinux ~]# fdisk -l
- Disk /dev/sda: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 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: 0x000ec58f
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 26 204800 83 Linux
- Partition 1 does not end on cylinder boundary.
- /dev/sda2 26 91 524288 82 Linux swap / Solaris
- Partition 2 does not end on cylinder boundary.
- /dev/sda3 91 1045 7658496 83 Linux
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 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: 0x00000000
- [root@oldboylinux ~]# fdisk -cu /dev/sdb
- Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
- Building a new DOS disklabel with disk identifier 0xf7a4dd89.
- Changes will remain in memory only, until you decide to write them.
- After that, of course, the previous content won't be recoverable.
- Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- Command (m for help): m #查看幫助
- Command action
- a toggle a bootable flag
- b edit bsd disklabel
- c toggle the dos compatibility flag
- d delete a partition #刪除創建的分區
- l list known partition types #列出分區類型
- m print this menu #查看幫助
- n add a new partition #創建分區
- o create a new empty DOS partition table
- p print the partition table #查看分區
- q quit without saving changes #退出,不保存
- s create a new empty Sun disklabel
- t change a partition's system id #更改分區的系統id
- u change display/entry units
- v verify the partition table
- w write table to disk and exit #保存,寫入分區表
- x extra functionality (experts only)
- Command (m for help):
- Command (m for help): p #查看分區情況
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0xf7a4dd89
- Device Boot Start End Blocks Id System #沒有分區信息
- Command (m for help): n #創建分區
- Command action
- e extended
- p primary partition (1-4)
- p #選擇分區類型
- Partition number (1-4): 1 #選擇分區標號
- First sector (2048-2097151, default 2048): #扇區
- Using default value 2048
- Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M #指定大小
- Command (m for help): p #查看分區情況
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0xf7a4dd89
- Device Boot Start End Blocks Id System #目前的分區情況
- /dev/sdb1 2048 206847 102400 83 Linux
- Command (m for help):
- Command (m for help): n #創建分區
- Command action
- e extended
- p primary partition (1-4)
- e #選擇分區類型
- Partition number (1-4): 2 #選擇分區標號
- First sector (206848-2097151, default 206848):
- Using default value 206848
- Last sector, +sectors or +size{K,M,G} (206848-2097151, default 2097151): #預設全部大小
- Using default value 2097151
- Command (m for help): p #查看分區情況
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0xf7a4dd89
- Device Boot Start End Blocks Id System
- /dev/sdb1 2048 206847 102400 83 Linux
- /dev/sdb2 206848 2097151 945152 5 Extended #擴展分區
- Command (m for help):
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- p
- Partition number (1-4): 3
- No free sectors available #沒有扇區
- Command (m for help):
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- l #邏輯分區
- First sector (208896-2097151, default 208896):
- Using default value 208896
- Last sector, +sectors or +size{K,M,G} (208896-2097151, default 2097151): +10M #指定大小
- Command (m for help): p
- Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0xf7a4dd89
- Device Boot Start End Blocks Id System