機械硬碟及分割槽的基礎知識
最近剛學到硬碟及分割槽的基礎知識,就想著按照要求將其寫成一篇部落格,因水平有限,有錯誤之處,還望指出。
1、硬碟的介面型別及組成
一般的機械硬碟外部組成如圖所示

external.png
介面型別:
由介面傳輸方式不同分為:串列埠傳輸和並口傳輸
其中串列埠傳輸的有: SATA:6Gbps SAS:6Gbps USB:480MB/s 其中並口傳輸的有: IDE:133MB/s==>介面速率 SCSI:640MB/s ==>常見 linux中磁碟裝置的裝置檔案命名方式: IDE:/dev/hd# SCSI、SATA、SAS,USB:/dev/sd# 不同裝置的標識:a-z 同一裝置上的不同分割槽的標識:1,2…… 其中:主分割槽:1-4 邏輯分割槽:5-……
2、硬碟的內部組成

internal.png
3、硬碟的基礎概念
磁軌(track):圍繞著圓心的一圈圈的灰色同心圓就是磁軌。
扇區(sector):從圓心向外做射線,將磁軌分成一個一個的有寬度的弧形叫做扇區,扇區一般大小為512byte。

image.png
柱面(cylinder):由同一編號(位置)的磁軌組成了柱面。
磁頭:讀取資料的關鍵部件,每個盤面各一個。

image.png
塊/簇:邏輯上由多個(2^n)相鄰的扇區共同組成的一個整體,方便作業系統對整體進行資料的讀寫操作,以提高訪問效率。
Windows中ntfs檔案系統中稱為簇,Linux中ext4等檔案系統中稱為塊。 大小均是2^n次方。 扇區:整個硬碟最小的讀寫單位 柱面:對硬碟進行分割槽的最小單位 塊/簇:作業系統對硬碟進行資料讀寫的最小單位
4、硬碟儲存容量的計算
總容量=磁頭數(即盤面數) 磁軌數 扇區數*每個扇區的大小
上圖中:
盤面數:6
磁軌數:7,ps:此處灰色的磁軌數量為7
扇區數:12
每個扇區大小:512byte
總容量:6 7 12*512= 258048byte
5、MBR及分割槽
準則:以柱面為基本單位進行硬碟分割槽,其中整個硬碟的分割槽資訊都儲存在0柱面0磁軌1扇區的MBR裡面。
下面簡單介紹MBR(Main Boot Record):
MBR,即主引導記錄,負責告訴計算機到此硬碟的那個地方去尋找作業系統,其中包含著硬碟的分割槽資訊。
大小:512byte,其中包含著:
446 byte:boot loader,包含最基本的載入程式,即呼叫作業系統的機器碼 64 byte:分割槽資訊,其中一個分割槽資訊為16byte,故主分割槽一個只能有64/16=4個,一般是3P+1E(N個邏輯分割槽) 在每個分割槽資訊的16 byte中,後4個byte標誌著主分割槽扇區的總個數,即一個主分割槽的扇區總個數為2^32個扇區,每個扇區512byte,則每個主分割槽的大小不超過2T。 2 byte:0x55和0xAA,則此裝置可以用於系統啟動,若不是這2個位元組,則表明不能用於系統啟動。 PS:當磁碟的容量大於2T時,多於2T的容量不會被MBR識別,因此當硬碟大於2T時,考慮使用GPT,一種新的分割槽表型別。
6、Linux中常見的分割槽命令
分割槽管理工具:fdisk、parted、sfdisk
fdisk:
特點:
1、對於一塊硬碟來說,最多管理15分割槽
2、只能分2T以下的硬碟,若大於2T,則可以掛載整個硬碟,但是不能分割槽,因此此時需要使用parted命令進行分割槽管理。
#fdisk -l==>列出指定所有裝置磁碟分割槽資訊 #fdisk 裝置名==>進行分割槽 #fdisk 裝置 子命令:管理功能 p:顯示已有分割槽 n:new 建立 d:delete 刪除 w:write,寫入磁碟並退出 q:quit,放棄更新並退出 m:獲取幫助 l:列表所分割槽ID t:調整分割槽ID 分割槽後先檢視,若核心未同步,則使用命令將分割槽資訊同步到核心: 方式一: 檢視核心是否已經識別新的分割槽: cat /proc/partations 通知核心重新讀取硬碟分割槽表: partx -a/dev/DEVICE 不理會報錯 方式二: 使用file命令:file /dev/sdb2 若結果沒有block,則說明Linux核心沒有同步,可使用 #partprobe==>進行核心同步 方式三:關機重啟
7、檔案系統
檔案系統是將檔案儲存於裝置上一種特定的方法和資料結構。根據方法和資料結構的不同,在Linux中將檔案系統分為:
ext2 、ext3、ext4、xfs
swap:交換分割槽,將磁碟當記憶體使用
光碟:iso9660
檔案系統的格式化工具
在對硬碟分割槽後,我們往往對分割槽進行格式化,使分割槽變成我們想要的檔案系統,以便儲存檔案。
在Linux中的格式化命令:
#mkfs.FS_TYPE-L '卷標'/dev/分割槽名稱(不能使擴充套件分割槽)==>此步驟將某個分割槽以FS_TYPE進行格式化 其中FS_TYPE常見的型別有: ext2 ext3 ext4 xfs btrfs vfat 另外ext2、3、4檔案系統的專用格式化命令: mke2fs -t [ext2|ext3|ext4] -L '卷標' /dev/分割槽 #blkid 分割槽== >格式化後,用於檢視此分割槽的資訊,例如(格式,卷標,UUID等) [root@centos ~]# blkid /dev/sdb5 /dev/sdb5: LABEL="i am ext4" UUID="0fe92389-239a-417b-a679-2f32ac98865f" TYPE="ext4" #e2labelDEVICE_NAME'LABEL_NAME'==>更改裝置的label
當我們感覺到系統中的swap分割槽不夠用時,可以進行swap分割槽的擴充套件。
#mkswap/dev/分割槽==>建立swap分割槽 前提:在此分割槽的分割槽ID號必須得是82,即Linux swap
檔案系統的檢測工具
fsck_FS_TYPE 或fsck -t FS_TYPE 注:FS_TYPE一定要與分割槽上已有檔案型別相同 ext專用修復工具: e2fsck -fDEVICE_NAME.==>強制修復DEVICE_NAME
8、檔案系統的掛載
當檔案系統格式後,我們可以通過將其與系統上的某個目錄關聯,通過目錄進行檔案系統中檔案的訪問,‘關聯’這個動作就是掛載。
注:當目錄中有檔案時,掛載後,檔案暫時隱藏,解除安裝後,檔案恢復
相關命令:
#mountDEVICE_NAMEMOUNT_POINT 其中device可以為: 1、裝置檔案 /dev/sda5 2、卷標:-L 'LABEL',例如:-L 'MYDATA' 3、UUID,-U 'UUID',例如:-U 'xxxxxxxxxxxxxxxx' 4、偽檔案系統:proc,sysfs,devtmpfs,configfs mount常用選項: -a : 自動掛載/etc/fstab裡面的裝置 -L ‘LABEL’ :以卷標指明要掛載的裝置 -o OPTION OPTION的選項,用此規定要被掛載的檔案系統的一些屬性,例如:只讀,非同步…… async : 掛載使用非同步模式 sync:同步模式,記憶體中資料改變後,會立即儲存到硬碟中,非同步是不立即改變。 atime/noatime:每一次訪問檔案都會更新時間戳/不更新,包含目錄和檔案。 diratime/nodiratime:目錄的訪問時間戳 auto/noauto:是否支援自動掛載 exec/noexec:是否支援將檔案系統上的應用程式執行為程序(執行程式為程序) dev/nodev:是否支援在此檔案系統上使用裝置檔案 suid/nosuid: remount:重新掛載 ro:只讀 rw:讀寫 user/nouser:是否允許普通使用者掛載此裝置 acl:啟用此檔案系統上的acl功能 預設(defaults):相當於 rw, suid, dev, exec, auto, nouser, async #umount DEVICE/MOUNT_POINT 解除安裝時2選一即可�
交換分割槽的掛載
當我們使用命令mkswap將分割槽設定為swap格式後,然後需要將swap分割槽掛載後才能正常使用。
命令:
swapon/dev/DEVICE===>將swap格式的分割槽進行啟用 swapon-aDEVICE_NAME :將裝置上所有的swap分割槽全部啟用 swapoff/dev/DEVICE===>將swap格式的分割槽進行休眠

image.png