- 磁盤結構
- head:磁頭,磁頭數量等于盤面數量
- track:磁道,磁盤的一圈為一條磁道
- cylinder:柱面,柱面由磁盤的所有同一磁道組成,0磁道組成0柱面,1磁道組成1柱面….
- secotr:扇區,512bytes
- 磁盤與扇區的進化
- 不同磁道的扇區數是否相同(磁盤的記錄方式有兩種)
- 舊式——非分區記錄方式(不同磁道扇區數相同)這圖是舊的記錄方式,越往外面,扇區的面積越大,每個磁道所擁有的扇區數量都是一樣的,而且每個扇區所能容納的數據量是相同的,都是512字節,而數據量需要平均分配在扇區面積的每個角落,所以外面扇區的數據密度低,里面扇區的速度密度高,可以這樣理解,同樣512個人,全站在籃球場上人口密度變高,但站在足球場上人口密度會變低,這樣結果是浪費了外圍扇區的大面積,也就是能容納上千人的足球場只站了512個人,所以有了另外一種解決方案,分區記錄方式(ZBR)
- 舊式磁盤的容量公式為:?存儲容量 = 磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數
- 新式——分區記錄方式(不同磁道扇區數不同),現在的硬盤都使用ZBR(ZonedBitRecording分區域記錄)技術;新的解決方式認為,既然磁盤越往外面積越大,那就應該劃分出更多的扇區,每個扇區的面積都是一樣的,容納的數據量也是一樣的
- 例:如果有一塊空硬盤,寫入一個文件,是不是先寫滿同一個磁道的所有扇區,然后再換一個磁道寫入?
- 是的,而且寫入的方式是從外到內,先寫滿最外的磁道,接著再寫里面的磁道,為什么硬盤用久了讀寫速度會變慢?因為外面的磁道使用完了,開始用里面的磁道,越是里面的磁道讀寫速度越慢,同樣的時間,讀寫頭在外面磁道可以掃過10個扇區的面積,讀寫10個扇區的數據,但在里面的磁道只能掃過1個扇區的面積,讀寫1個扇區的數據,所以這時該做磁盤整理或者格式化,這會使外面的磁道得到使用
- 不同磁道的扇區數是否相同(磁盤的記錄方式有兩種)
- 磁盤分區
- 在磁盤上以扇區為單位劃分,是在磁盤上建立的邏輯邊界,可以在每個分區中創建不同的文件系統,以前劃分分區是按照柱面來劃分分區,現在從centos6后就以扇區為單位來劃分分區
- 磁盤分區的劃分方式:MBR式,GPT式
- MBR:82年時候古老的分區方式,用2^32表示扇區數,分區不超過2T
- GPT:
- MBR方式劃分法:主引導記錄(512bytes)在磁盤的0盤面0磁道0扇區(MBR不屬于磁盤分區),如果一個操作系統的bootloader已經占據了MBR,要再裝入另外的操作系統B,則B的bootloader和分區表可以在前一個操作系統所占據分區的bootblock(bootblock的位置在任何一個分區的第0個塊,多系統互存時使用,這個塊不能被使用,是引導塊)中,但是如果MBR中沒有數據,即便是bootblock中有操作系統的bootloader,這個bootblock中的操作系統也啟動不起來
- MBR的三個部分:
- bootloader引導加載器(446bytes):是grub第一階段引導程序代碼所在位置,可以引導操作系統啟動如果有多塊硬盤,bootloader只放在第一塊磁盤的第一個分區的0號扇區,其他磁盤的第一個分區的0號扇區不存放bootloader,只放分區表,前面446字節不會使用
- 分區表(64bytes),只存放主分區和擴展分區的信息,不放邏輯分區:
- 每16bytes標識一個分區的起始位置,結束位置(一共只能標識四個分區,所以硬盤上只能劃分四個主分區),主分區 + 擴展分區 <= 4
- 為什么需要擴展分區:如果磁盤200G,四個主分區都是20G,則剩下的空間就無法使用
- 怎么來實現擴展分區:將其中的16bytes用來存儲一個指針,而不存放分區信息,指針指向磁盤的更大的空間,這個更大的空間用來放的額外的分區信息,這樣的分區就變成了擴展分區(擴展分區在一個系統上只能有一個)
- 55AA :Magic number(2bytes),標記MBR是否有效
- 查看磁盤的MBR:hexdump -C -n 512 /dev/sda
- 備份MBR:dd if=/dev/sda of=/backup/mbr bs=1 count=512
- 克隆sda的分區表到另外的磁盤:dd if=/dev/sda of=/dev/sdb bs=1 count=66 skip=446 seek=446
- 只是將分區表復制到了別的磁盤,系統能夠識別被復制磁盤的分區,但沒有真正的分區
- MBR分區方式的結構圖:
- MBR的三個部分:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101735