一、背景
linux系統中,當我們新加入一塊硬盤時,並不能直接使用。首先要對硬盤進行分區(fdisk),即對存儲空間的扇區進行空間划分。分區便於數據管理,各分區之間相互隔離,某個分區損壞也不會影響其他分區的功能,提高數據讀寫效率。分區之后需要進行格式化,規定數據的存儲和讀寫格式。分區上文件的組織方法和數據結構即為文件系統,不同的文件系統類型所規定的存儲文件的方式/大小等都有所不同,linux上主要有ext2/ext3/ext4/xfs等。做完格式化之后,仍然不可以進行數據存儲讀寫,因為分區格式化之后,/dev/sda1等只是一個文件,不是目錄,使用cd命令無法進入,因此硬盤仍然無法使用。需要進行掛載(mount),將存儲設備與原有目錄進行關聯,使得訪問目錄即訪問設備。掛載之后源目錄中的文件會被隱藏,只保留被掛載的設備中的文件。如果要取消關聯,卸載(umount)即可。
二、重點概念
1. 磁盤分區
磁盤分區是把物理的磁盤空間按照自己的要求分成N個不同大小的區域,以便OS更好更高效的進行文件存儲管理。像我們經常使用的Windows系統中的C、D、E、F盤...等盤符實際就是一個個的磁盤分區。分區與操作系統沒有任何關系,因為我們對磁盤分區可以在安裝操作系統之前進行。
磁盤分區類型:主分區、擴展分區(N個邏輯分區的集合)。
硬盤組成:硬盤主引導扇區+主分區+擴展分區
2.硬盤主要組成部分:磁頭、磁盤面、磁道、扇區、柱面(詳細見筆記“硬盤的DOS管理結構”)

3. 硬盤主引導扇區
以機械硬盤為例,其中硬盤主引導扇區位於硬盤的 0磁頭0柱面1扇區(也就是所謂的Boot Sector),它又分為:硬盤主引導記錄(MBR) + 硬盤分區表(DPT),共512個字節,其中MBR446字節、分區表64字節以及2字節的結束標志。
4. 硬盤主引導記錄(MBR)
位於磁盤最前邊的一段引導(Loader)代碼。它負責磁盤操作系統(DOS)對磁盤進行讀寫時分區合法性的判別、分區引導信息的定位,它由磁盤操作系統(DOS)在對硬盤進行初始化時產生的。
5.操作系統啟動過程簡述
電腦開機時,操作系統通過BIOS(BIOS實際是一個基礎輸入輸出系統,主要用於和計算機硬件打交道)程序把Boot Sector讀入內存,然后執行其中的MBR,這個時候BIOS是把啟動交給MBR控制, MBR在4個分區表中搜索標致為活動的分區,找到以后把活動分區的第一扇區讀入內存,然后開始執行它,以此來運行特定系統的啟動程序(LILO、GRUB、NT Loader),此時是操作系統的引導程序來控制系統的啟動。接着操作系統進行一系列的初始化工作,最后把系統交給系統內核進行管理,就完成了開機啟動的過程。
6.主分區、擴展分區、邏輯分區
操作系統必須安裝在主分區上,因為MBR中記錄着主分區信息,系統啟動的時候會到主分區來查找操作系統引導文件,否則系統將無法啟動。又因為磁盤分區表一共64個字節,並且每個主分區的分區信息占16個字節,所以一個磁盤最多能有4個主分區。那么問題來了,我們想要更多的分區怎么辦呢?這個時候擴展分區的作用就來了,把最后一個主分區作為擴展分區,再在這個分區下分割出多個邏輯分區,擴展分區實際上是一個類似容器的東西。擴展分區並不是一個真實存在的分區,它只是內存管理鏈表中的一個指針,指示出哪一塊區域是擴展分區。又因為這些擴展分區內的分區實際上都是在一個分區內,只是邏輯上分開,所以叫做邏輯分區。但這對於用戶來說看起來系統中有很多分區。
7.linux磁盤命名方式
IDE硬盤--->hda、hdb、hdc、hdd
SATA硬盤--->sda、sdb、sdc、sdd
8. linux分區命名方式
IDE硬盤--->hda(1-n)...hdb(1-n)...hdd(1-n)
SATA硬盤--->sda(1-n)...sdb(1-n)...sdd(1-n)
注:其中最后一位數字,主分區是1到4,而邏輯分區是5以上的數字。
9.Linux文件系統結構
Linux和Windows系統的文件系統不同,它是樹形結構的文件系統,其中/是系統的根目錄,其他所有目錄都是它的子節點,一般該目錄下掛載的是一個主分區。而且無論什么設備對於linux系統來說都是一個文件 。而且在linux系統中,我們看不到盤符的概念,就連分區的概念都被淡化了,分區在linux系統中也和其他設備一樣被當成了文件對待。那么也就是說,我們要想對一個磁盤分區進行操作,必須通過文件進行。
10.linux掛載
掛載就是把文件目錄和分區連接起來,與windows下盤符和分區進行映射的關系一樣,不同的是windows是把分區映射到一個盤符,而linux是把一個分區映射到一個目錄。掛載完成以后,我們在linux系統中對掛載的目錄的任何操作都是對對應的磁盤分區的操作,例如文件保存當然也是保存到對應的磁盤分區上。 其中/根目錄必須掛載在主分區上,否則啟動系統的時候會由於找不到啟動文件而啟動失敗。
三、常用命令
fdisk -l #查看系統分區詳細信息 fdisk /dev/sda #對sda磁盤進行分區 df #查看文件系統(-h 以合適的單位示系統大小 -T 顯示系統類型) du #查看文件夾大小,包含文件夾里面文件 du -s #僅僅查看文件夾大小 du -h #以M方式顯示大小,方便查看 ls -i 文件名 #查看文件存儲在哪個innode中 ls -id 文件夾名 #查看文件夾存儲在哪個innode中 filefrag -v 文件名 # 查看文件存儲block具體位置 dumpe2fs /dev/sda1 #查看分區superblock 和blockgroup等詳細信息 fsck /dev/sda #檢查硬盤情況 -C 顯示檢查過程 -f 強制檢查 badblocks /dev/sda5 #檢查硬盤壞道 -sv 顯示進度和結果 fuser -mv /mnt #當顯示設備正在忙的時候,可以使用這個命令查看使用進程 tune2fs -l /dev/sda #查看磁盤參數(-h 查看可選選項,進行選項更改)