總覽
https://myfamily12345.pixnet.net/blog/post/404540683
sata 介紹
https://panel.pixnet.cc/#/articles/list?per_page=40
磁柱-磁頭-磁區(Cylinder-head-sector,CHS)是早期對硬碟機的每一個物理資料塊進行編址的一種方法。
磁頭 (Head)
=>硬碟讀寫頭。
磁軌 (Track)
=> 當磁盤旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁軌(Track)。
碟片(Platters)
=> 每個碟片都有兩面,因此也會相對應每碟片有2個磁頭。
磁柱 (Cylinder)
=> 在有多個碟片構成的盤組中,由不同碟片的面,但處於同一半徑圓的多個磁軌組成的一個圓柱面(Cylinder)。
磁區 (sector)
=> 磁盤上的每個磁軌被等分為若干個弧段,這些弧段便是硬碟的磁區(Sector)。 硬碟最小儲存物理量,約 目前主要有 512bytes 與 4K 兩種格式 。
磁軌容量 = 每磁軌上的磁區數 * 512 Bytes (4K)
磁柱容量 = 磁頭數 * 每磁軌上的磁區數 * 512 Bytes (4K)
硬碟容量 = C(磁柱數) * H(磁頭數) * S(每軌磁區數) * 512 Bytes (4K)
當初設計就是在類似磁碟盤同心圓上面切出一個一個的小區塊,這些小區塊整合成一個圓形,讓機器手臂上的讀寫頭去存取。
這個小區塊就是磁碟的最小物理儲存單位,稱之為磁區 (sector),那同一個同心圓的磁區組合成的圓就是所謂的磁軌(track)。
由於磁碟裡面可能會有多個磁碟盤,因此在所有磁碟盤上面的同一個磁軌可以組合成所謂的磁柱 (cylinder)。
原本硬碟的磁區都是設計成 512byte 的容量,但因為近期以來硬碟的容量越來越大,為了減少資料量的拆解,
所以新的高容量硬碟已經有 4Kbyte 的磁區設計!
Linux 磁碟的分區 MBR GPT
早期的磁碟分割主要以磁柱為最小分割單位,現在的分割通常使用磁區為最小分割單位(每個磁區都有其號碼喔,就好像座位一樣)
磁碟分割表主要有兩種格式,一種是限制較多的 MBR 分割表,一種是較新且限制較少的 GPT 分割表。
GPT 分割表除了分割數量擴充較多之外,支援的磁碟容量也可以超過 2TB。
MBR使用fdisk命令,GPT使用gdisk命令,parted命令適用於兩種分區格式,
硬碟的最小儲存單位是 sector
因為用 sector 來儲存太沒有效率了. 怎麼說呢? 因為一個 sector 只有 512 Bytes
為了克服這個效率上的困擾,所以就有邏輯區塊( Block )的產生了!
邏輯區塊是在 partition 進行 filesystem 的格式化時, 所指定的『最小儲存單位』,
這個最小儲存單位當然是架構在 sector 的大小上面( 因為 sector 為硬碟的最小物理儲存單位啊! ),
所以啦, Block 的大小為 sector 的 2 的次方倍數。此時,磁頭一次可以讀取一個 block ,
如果假設我們在格式化的時候, 指定 Block 為 4 KBytes (亦即由連續的八個 sector 所構成一個 block)
下完 fdisk -l /dev/sda
指令之後, 看到以下。 請畫出 /dev/sda 這顆硬碟的分割圖。
Device Boot Start End Blocks Id System /dev/sda1 2048 8390655 4194304 83 Linux /dev/sda2 8390656 29362175 10485760 83 Linux /dev/sda3 29362176 50333695 10485760 83 Linux /dev/sda4 50333696 976773167 463219736 5 Extended /dev/sda5 50335744 934830129 442247193 83 Linux /dev/sda6 934834176 955801648 10483736+ 83 Linux /dev/sda7 955805696 976773167 10483736 83 Linux
MBR 分割表中,第一個磁區最重要,裡面有:
主要開機區
其中 MBR 佔有 446 bytes, 而 partition table 則佔有 64 bytes,
MBR( Master boot record)
主開機紀錄(Master Boot Record,縮寫:MBR),又叫做主啟動磁區,是開機後存取硬碟時所必須要讀取的首個磁區,它在硬碟上的三維位址為(柱面,磁頭,磁區)=(0,0,1)。
Linux system 的啟動流程,
GRUB
GRUB是多重引導管理器
如果你的系統中安裝了多個核心,你可以選擇啟動哪一個
GRUB顯示了一個啟動畫面,等待幾秒鐘,如果你不輸入任何東西,它將載入在配置檔案中指定的預設核心
GRUB能夠了解檔案系統的資訊(老一代的LILO就沒有這個能力)
GRUB配置檔案是/boot/grub/grub.conf(/etc/grub.conf是它的一個連結檔案)。這是CentOS系統中grub.conf的樣例
核心
按照grub.conf中“root="配置來掛載根檔案系統
核心執行/sbin/init程式
既然這是被Linux核心執行的第一個程式,它的程序ID(PID)當然就是1了。執行”ps -ef | grep init"來檢視一下PID。
initrd表示Initial RAM Disk
initrd被核心用作臨時的根目錄,直到核心啟動完成並且真正的根目錄掛載成功。它也包括一些編譯好的必要的驅動程式,這些程式有助於它訪問硬碟和其他硬體。
磁碟分割完畢後還需要進行格式化(format),之後作業系統才能夠使用這個檔案系統。 為什麼需要進行『格式化』呢?
這是因為每種作業系統所設定的檔案屬性/權限並不相同, 為了存放這些檔案所需的資料,因此就需要將分割槽進行格式化,
以成為作業系統能夠利用的『檔案系統格式(filesystem)』。
每種作業系統能夠使用的檔案系統並不相同。 舉例來說, windows 98 以前的微軟作業系統主要利用的檔案系統是 FAT (或 FAT16),windows 2000 以後的版本有所謂的 NTFS 檔案系統 至於 Linux 的正統檔案系統則為 Ext2 (Linux second extended file system, ext2fs)這一個 ,
在預設的情況下, windows 作業系統是不會認識 Linux 的 Ext2 的
那麼檔案系統是如何運作的呢?這與作業系統的檔案資料有關。較新的作業系統的檔案資料除了檔案實際內容外, 通常含有非常多的屬性,例如 Linux 作業系統的檔案權限(rwx)與檔案屬性(擁有者、群組、時間參數等)。
檔案系統通常會將這兩部份的資料分別存放在不同的區塊,權限與屬性放置到 inode 中,至於實際資料則放置到 data block 區塊中。 另外,還有一個超級區塊 (superblock) 會記錄整個檔案系統的整體資訊,包括 inode 與 block 的總量、使用量、剩餘量等。
每個 inode 與 block 都有編號,至於這三個資料的意義可以簡略說明如下:
- superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關資訊等;
- inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的 block 號碼;
- block:實際記錄檔案的內容,若檔案太大時,會佔用多個 block 。
Superblock 是記錄整個 filesystem 相關資訊的地方, 沒有 Superblock ,就沒有這個 filesystem 了。他記錄的資訊主要有:
- block 與 inode 的總量;
- 未使用與已使用的 inode / block 數量;
- block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128bytes 或 256bytes);
- filesystem 的掛載時間、最近一次寫入資料的時間、最近一次檢驗磁碟 (fsck) 的時間等檔案系統的相關資訊;
- 一個 valid bit 數值,若此檔案系統已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。
Ext2 檔案系統在格式化的時候基本上是區分為多個區塊群組 (block group) 的,每個區塊群組都有獨立的 inode/block/superblock 系統。感覺上就好像我們在當兵時,一個營裡面有分成數個連,每個連有自己的聯絡系統, 但最終都向營部回報連上最正確的資訊一般!這樣分成一群群的比較好管理啦!整個來說,Ext2 格式化後有點像底下這樣:
我們將 inode 與 block 區塊用圖解來說明一下,如下圖所示,檔案系統先格式化出 inode 與 block 的區塊,假設某一個檔案的屬性與權限資料是放置到 inode 4 號(下圖較小方格內),而這個 inode 記錄了檔案資料的實際放置點為 2, 7, 13, 15 這四個 block 號碼,此時我們的作業系統就能夠據此來排列磁碟的讀取順序,可以一口氣將四個 block 內容讀出來! 那麼資料的讀取就如同下圖中的箭頭所指定的模樣了。
資料來源:
https://zh.wikipedia.org/wiki/%E6%9F%B1%E9%9D%A2-%E7%A3%81%E5%A4%B4-%E6%89%87%E5%8C%BA
https://lionrex.pixnet.net/blog/post/118529271
https://dywang.csie.cyut.edu.tw/dywang/linuxSystem/node14.html
https://blog.xuite.net/wliomsky/wliomsky/21453820-%E7%A1%AC%E7%A2%9F%E5%A4%A7%E5%B0%8F%E4%BA%8B
http://linux.vbird.org/linux_basic/0105computers.php#pc_hd
https://hongxiaohong.gitbooks.io/linux-handle-book/ying_die_yu_ying_die_fen_ge_qu.html