硬盤是計算機必備組成部分,現在的硬盤分固態硬盤和傳統機械硬盤,這里要介紹的是傳統機械硬盤。
一.硬盤最基本結構
1.硬盤是由堅硬金屬材料制成的涂以磁性介質的盤片,不同容量硬盤的盤片數不等。每個盤片有兩面,都可記錄信息。每個磁道被分成許多扇形的區域,每個區域叫一個扇區,每個扇區可存儲128×2的N次方(N=0.1.2.3)字節信息。在DOS中每扇區是128×2的2次方=512字節,盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道。硬盤中,不同盤片相同半徑的磁道所組成的圓柱稱為柱面,如下圖所示:
2.MBR
MBR:Master Boot Record,即硬盤的主引導記錄,位于0磁道0扇區,大小512bytes。
boot loader:引導加載器存放在MBR的前446bytes,用于引導操作系統。
分區表:存放在boot loader之后的64bytes,用于存放分區信息。
2bytes: 55AA(分區有效標識)
二.磁盤的分區管理
1. 由于分區表只有64bytes,一個分區占用大小16bytes,所以只能創建4個分區,通常使用 3主分區+1擴展(N個邏輯分區) 的分區模式。使用fdisk命令工具進行分區。
fdisk -l [device…] 查看設備分區情況
fdisk device 進入對設備磁盤進行操作
常用的操作指令如下:
d delete a partition 這是刪除一個分區的動作;
l list known partition types 是列出分區類型,以供我們設置相應分區的類型;
m print this menu 是列出幫助信息;
n add a new partition 添加一個分區;
p print the partition table 列出分區表;
q quit without saving changes 不保存退出;
t change a partition's system id 改變分區類型;
w write table to disk and exit 把分區表寫入硬盤并退出;
2.創建分區步驟:
1).先輸入n創建分區
2).選擇分區 e擴展分區 p主分區
3).確認創建的分區號
4).確認起始和終止柱面
5).調整分區類型,L查看分區類型
6).最后w把分區表寫入硬盤并退出
3.把分區信息同步到內核
partx -a /dev/DEVICE
上述錯誤是正?,F象用cat /proc/partitions 查看內核中是否已存在該分區信息
三.文件系統
在告知系統我的 partition 所在的起始與結束磁柱之后,之后則需要將 partition 格式化為我的操作系統認識的文件系統,常用的文件系統如下:
Linux文件系統: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2
分布式文件系統:ceph, moosefs, mogilefs, GlusterFS, Lustre
linux默認都支持ext文件系統,當一個 ext2 的 filesystem 被建立時, 他擁有 superblock / group description / block bitmap / inode bitmap / inode table / data blocks 等等區域。要注意的是,每個ext2 filesystem 在被建立的時候,會依據 partition 的大小, 給予數個 block group ,而每個 block group 就有上述的這些部分。整個 filesystem 的架構可以下圖展現:
為了簡化,假設一個文件系統僅有1個blockgroup。
block:用來儲存數據的最小單元,Block 的大小為 扇區 的 2 的次方倍數。
inode:每個文件都對應著一個inode,inode存儲著文件的元數據
SuperBlock:記錄整個 filesystem 相關信息,block和inode的總量和使用情況等等。
Group Description:記錄 blockgroup 由何處開始記錄。
Block bitmap:記錄哪個 block 有沒有被使用。
Inode bitmap:此處記錄那個 inode 有沒有被使用。
Inode table:記錄每個inode number對應文件所對應的metadata(元數據)。
Data Blocks: block 數據存放區。
可以通過dumpe2fs 分區 查看上述描述的信息。
當我們新增一個文件或目錄時:
1. 根據 inode bitmap / block bitmap 的信息,找到尚未被使用的 inode 與 block , 進而將檔案的屬性與數據分別記載進 inode 與 block ;
2. 將剛剛被利用的 inode 與 block 的號碼 (number) 告知 superblock、inode bitmap、block bitmap 等,讓這些 metadata 更新信息。
原創文章,作者:zxhy,如若轉載,請注明出處:http://www.www58058.com/18340