A. 扇區、磁碟塊、頁。磁碟是如何存儲數據的:磁碟的物理結構
扇區,sector
硬碟的讀寫以扇區為基本單位。磁碟上的每個磁軌被等分為若干個弧段,這些弧段稱之為扇區。硬碟的物理讀寫以扇區為基本單位。通常情況下每個扇區的大小是 512 位元組。linux 下可以使用 fdisk -l 了解扇區大小:
$ sudo /sbin/fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x7d9f5643
其中 Sector size,就是扇區大小,本例中為 512 bytes。
注意,扇區是磁碟物理層面的概念,操作系統是不直接與扇區交互的,而是與多個連續扇區組成的磁碟塊交互。由於扇區是物理層面的概念,所以無法在系統中進行大小的更改。
磁碟塊,IO Block
文件系統讀寫數據的最小單位,也叫磁碟簇。扇區是磁碟最小的物理存儲單元,操作系統將相鄰的扇區組合在一起,形成一個塊,對塊進行管理。每個磁碟塊可以包括 2、4、8、16、32 或 64 個扇區。磁碟塊是操作系統所使用的邏輯概念,而非磁碟的物理概念。磁碟塊的大小可以通過命令 stat /boot 來查看:
$ sudo stat /boot
File: /boot
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 655361 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-06 20:19:45.487160301 +0800
Modify: 2019-07-06 20:19:44.835160301 +0800
Change: 2019-07-06 20:19:44.835160301 +0800
Birth: -
其中 IO Block 就是磁碟塊大小,本例中是 4096 Bytes,一般也是 4K。
為了更好地管理磁碟空間和更高效地從硬碟讀取數據,操作系統規定一個磁碟塊中只能放置一個文件,因此文件所佔用的空間,只能是磁碟塊的整數倍,那就意味著會出現文件的實際大小,會小於其所佔用的磁碟空間的情況。
test2.txt是一個只包含一個字母的文本文檔。它的理論大小是一個位元組,但是由於系統的磁碟塊大小是4KB(文件的最小存儲大小單位),所以test2.txt占據的磁碟實際空間是4KB
操作系統不能對磁碟扇區直接定址操寫,主要原因是扇區數量龐大,因此才將多個連續扇區組合一起操作。磁碟塊的大小是可以通過blockdev命令更改的。
頁,page
內存的最小存儲單位。頁的大小通常為磁碟塊大小的 2^n 倍,可以通過命令 getconf PAGE_SIZE 來獲取頁的大小:
$sudo getconf PAGE_SIZE
4096
本例中為 4096 Bytes,與磁碟塊大小一致。
總結兩個邏輯單位:
頁,內存操作的基本單位
磁碟塊,磁碟操作的基本單位
命令索引
扇區大小,fdisk -l
磁碟塊大小,stat /boot
內存頁大小,getconf PAGE_SIZE
硬碟是如何存儲數據的:硬碟的物理結構
提示:硬碟分為機械硬碟和固態硬碟這2種。這里只講解機械硬碟,固態硬碟的存儲另當別論。
要想知道硬碟是如何存儲數據的,就先明白硬碟的物理結構。
1、名稱機械硬碟,由於信息載體為磁性物質,故又稱磁碟。 2、硬碟主要結構在硬碟盒裡面其實是由許許多多的圓形碟片、機械手臂、磁頭與主軸馬達所組成的。 3、工作情形實際的數據都是寫在具有磁性物質的碟片上,而讀寫主要是通過在機械手臂上的磁頭(head)來達成。實際運行時, 主軸馬達讓碟片轉動,然後機械手臂可伸展讓磁頭在碟片上頭進行讀寫的動作。
4、各主要部件說明(1)碟片和主馬達主馬達就是一個小電機,作用是讓碟片轉動起來。通常數據寫入當然就是以圓圈轉圈的方式讀寫啰!
對於機械硬碟,最重要的結構是這些兩面塗有磁性材料的碟片,在工作時會以每分鍾7200轉的速度旋轉。碟片的作用是記錄數據,在碟片上有序的排列了很多的小顆粒材料,它們都是磁性物質,可以被永久磁化和改變磁極,這兩個磁極就分別表示了計算機二進制中的0和1。由於碟片是轉動後讀寫數據的,所以,當初設計就是在類似碟片同心圓上面切出一個一個的小區塊,這些小區塊整合成一個圓形,讓機器手臂上的磁頭去存取。這個小區塊就是磁碟的最小物理儲存單位,稱之為扇區 (sector),那同一個同心圓的扇區組合成的圓就是所謂的磁軌(track)。 扇區容量:原本硬碟的扇區都是設計成 512Byte(即0.5KB) 的容量,但因為近期以來硬碟的容量越來越大,為了減少數據量的拆解,所以新的大容量硬碟已經有 4KByte(即4KB)的扇區設計! 由於單一碟片的容量有限,因此有的硬碟內部會有兩個以上的碟片喔!由於磁碟裡面可能會有多個碟片,因此在所有碟片上面的同一個磁軌可以組合成所謂的柱面 (cylinder)。 數據存儲在碟片上的一個個扇區中。
1)1個扇區(磁軌)可存儲512Bytes的數據量;
2)一個平面中同一半徑下的多個扇區共同組成了1個磁軌;
3)一個碟片有2個盤面,每個盤面都對應一個磁頭,負責讀寫數據;
4)一個硬碟可以有多個碟片;
5)同一半徑下的多個磁軌共同組成了1個柱面。
(2)磁頭和機械手臂機械手臂的作用是控制來回磁頭移動。磁頭的作用是在碟片上讀寫數據。磁頭通過改變碟片上小顆粒磁性物質的磁極方向來完成寫入數據的功能,通過感知碟片上磁性物質的磁極方向來完成讀取數據的功能。
5、扇區中是如何表示01數據的?
硬碟是在硬質碟片(一般是鋁合金,以前 IBM 也嘗試過使用玻璃)上塗敷薄薄的一層鐵磁性材料。這些磁粉被劃分成稱為磁軌的若干個同心圓,在每個同心圓的磁軌上就好像有無數的任 意排列的小磁鐵,它們分別代表著0和1的狀態。當這些小磁鐵受到來自磁頭的磁力影響時,其排列的方向會隨之改變。利用磁頭的磁力控制指定的一些小磁鐵方 向,使每個小磁鐵都可以用來儲存信息。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。
================================優美的分割線===================================
延伸:固態硬碟的存儲原理(微觀)
接下來來講固態硬碟,相比較於機械硬碟裡面的各種機械結構,固態硬碟就沒有太多的機械機構;它主要是靠FLASH晶元來作為儲存數據的介質;由主控晶元來承擔數據的中轉,還有調配數據儲存在快閃記憶體晶元上面
FLASH晶元儲存數據的方式也不是太難理解,就是FLASH晶元裡面分出了很多儲存單元,這些儲存單元裡面有電子的位置;當一顆電子的位置裡面沒有存放電子,它就是0;如果存放了電子,它就是1 參考:
https://zhuanlan.hu.com/p/117375905 https://www.cnblogs.com/andy9468/p/11091115.html
B. 硬碟是怎麼來存儲數據的
硬碟儲存數據的原理和盒式磁帶類似,只不過盒式磁帶上存儲是模擬格式的音樂,而硬碟上存儲的是數字格式的數據。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。
讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。
光碟和硬碟儲存原理不一樣,直接比較其儲存密度和介質的體積之間的關系沒有意義,例如硬碟和光碟都可以在更高的工藝水平和技術下大幅提高自己的儲存密度。
簡單說來,光儲是靠光線傳播的差異來儲存信息,包括反射光的強度,相位變化等,磁儲是靠磁體中磁疇(小磁針)的指向來記錄信息的。