文章目錄
前言
磁盤(disk)是指利用磁記錄技術存儲數據的存儲器。磁盤是計算機主要的存儲介質,可以存儲大量的二進制數據,並且斷電後也能保持數據不丟失。早期計算機使用的磁盤是軟磁盤(soft disk,簡稱軟盤),如今常用的磁盤是硬磁盤(hard disk,簡稱硬盤)。
文件系統是操作系統用於明確存儲設備(常見的是磁盤,也有基於NAND Flash的固態硬盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。
一:磁盤基礎
硬盤(Hard Disk Driver,簡稱HDD)是計算機常用的存儲設備之一。
1.1:磁盤結構
1.1.1:硬盤的物理結構
盤片:硬盤有多個盤片,每個盤片2面
磁頭:每面一個磁頭
1.1.2:硬盤的數據結構
扇區:盤面被分成多個扇形區域,每個扇區存放512個字節的數據
PS:硬盤的第一個扇區,叫做引導扇區
磁道:同一盤片不同半徑的同心圓(當磁盤旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁道(Track))
柱面:不同盤片相同半徑構成的圓柱面(在有多個盤片構成的盤組中,由不同盤片的面,但處於同一半徑圓的多個磁道組成的一個圓柱面(Cylinder))
PS:固態硬盤:電子芯片存儲,速度快,但是數據丟失無法恢復
機械硬盤:磁道存儲,速度一般,數據丟失有機率恢復
1.1.3:存儲容量
硬盤存儲容量=磁頭數 x 磁道(柱面)數 x 每道扇區數 x 每扇區字節數
可以用柱面/磁頭/扇區來確定唯一定位磁盤上每一個區域
用fdisk -l查看分區信息
1.1.4:硬盤的接口
硬盤按照數據接口不同,分爲以下幾種(接口速率不是實際硬盤數據傳輸的速度)
ATA(IDE(並口)):現在已經很少見到,逐漸被SATA所取代
SATA(串口):全稱是Serial ATA,抗干擾性強,支持熱插熱拔等功能,速度快,糾錯能力強。
SCSI:全稱是 Small Computer System Interface(小型機系統接口),SCSI硬盤廣爲工作站級個人電腦以及服務器所使用的,資料傳輸時CPU佔用率較低,轉速快,支持熱插熱拔等
SAS(Serial Attached SCSI):是新一代的SCSI技術,和SATA硬盤相同,都是採取序列式技術以獲得更高的傳輸速度,可達到6Gb/s
1.2:MBR與磁盤分區表示
1.2.1:MBR
MBR是主引導記錄(Master Boot Record),位於硬盤第一個物理扇區處(引導扇區)
MBR中包含硬盤的主引導程序和硬盤分區表。分區表有4個分區記錄區,每個分區記錄區佔16個字節
MBR最多四個分區,可創建邏輯分區
1.2.2磁盤分區的表示
常見的硬盤可以劃分爲主分區,擴展分區和邏輯分區,通常情況下主分區只有四個,而擴展分區可以看成是一個特殊的主分區類型,在擴展分區中可以建立邏輯分區。
主分區一般用來安裝操作系統,擴展分區則多用來存儲文件數據(不能直接存儲數據,存儲在邏輯分區上)。
Linux中將硬盤,分區等設備均表示爲文件
硬盤:對於IDE接口的硬盤設備,表示爲“hdX”形式的文件名。而對於SCSI接口的硬盤設備,則表示爲“sdX”形式的文件名。其中"X"可以爲a,b,c,d等字母序號。例如:將系統中的第一個IDE設備(硬盤)表示爲“hda”,將第二個SCSI設備表示爲“sdb”
分區:表示分區時,以硬盤設備的文件名作爲基礎,然後在後面添加該分區(主分區,擴展分區,邏輯分區)對應的數字序號即可。例如:第一個IDE硬盤中的第一個分區表示爲"hda1",第二個分區表示爲"hda2"。第二個SCSI硬盤中的第三個分區表示爲"sdb3",第五個分區表示爲"sdb5"
PS:硬盤中的主分區數目只有4個
因此主分區和擴展分區的序號也就限制在1-4
擴展分區再分爲邏輯分區
邏輯分區的序號將始終從5開始
1.2.3:Linux系統中使用的文件系統類型
文件系統(File System)類型決定了向分區中存放,讀取文件數據的方式和效率,在對分區進行格式化的時候需要選擇所用的文件系統類型
在Windows操作系統中,經常使用的文件系統類型包括FAT32 , NTFS等格式
Linux系統中,主要使用以下幾種格式
EXT4文件系統:
1.存放文件和目錄數據的分區
2.高性能的日誌型文件系統
3.CentOS 6系統中默認使用的文件系統
SWAP,交換文件系統
1.爲Linux系統建立的交換分區
2.交換分區相當於虛擬內存,能夠在一定程度上緩解物理內存不足的問題
3.一般建議將交換分區的大小設置爲物理內存的1.5-2倍。
Linux支持的其它文件系統類型
1.FAT16 , FAT32 , NTFS
2.EXT4 M JFS …
XFS
1.開啓了日誌功能,即使發生宕機也不怕數據遭到破壞,可以根據日誌記錄在短時間內進行數據恢復。
2.高性能的日誌文件系統,特別擅長處理大文件,可支持上百萬T字節的存儲空間
3.CentOS 7系統默認使用XFS文件系統
二:檢測並確認新硬盤
在Linux服務器中,當現有硬盤的分區規劃不能滿足要求(例如,根分區的剩餘空間過少,無法繼續安裝新的系統程序)時,就需要對硬盤中的分區進行重新規劃和調整,有時候還需要添加新的硬盤設備來擴展存儲空間
實現上述操作需要用到fdisk磁盤及分區管理工具,fdisk是大多數Linux系統中自帶的基本工具之一。
分區對應的系統ID號中,83表示Linux中的EXT4分區,8e 表示LVM邏輯卷
2.1:fdisk 命令–查看或管理磁盤分區
在硬盤設備中創建,刪除,更改分區等操作同樣通過fdisk命令進行,主要使用硬盤的設備文件作爲參數。
命令舉例
[root@localhost ~]# fdisk /dev/sda1
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x3556a5c2 創建新的 DOS 磁盤標籤。
命令(輸入 m 獲取幫助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
這麼多指令,我們就可以輸入指令實現自己的要求。
2.2:使用“n”命令
使用“n”命令可以進行創建分區的操作,包括主分區和擴展分區。
根據提示輸入“p”選擇創建主分區。
輸入“e”選擇創建擴展分區。
之後依次選擇分區序號,起始位置,結束爲止或分區大小即可完成新分區的創建。
選擇分區號時,主分區和擴展分區的序號只能爲1-4,分區起始位置一般有fdisk默認識別即可,結束位置或大小可以使用’’+sizeM‘或“+sizeG”的形式。如“+20G”表示將該分區的容量設置爲20GB。
例如:創建分區/dev/sdb1
[root@hostname ~]# fdisk /dev/sdb '//先用fdisk命令工具進入交互式的分區管理界面'
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x227f39cd 創建新的 DOS 磁盤標籤。
命令(輸入 m 獲取幫助):n '//開始創建分區'
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): '//直接回車,接受默認p:創建主分區'
Using default response p
分區號 (1-4,默認 1): '//直接回車,接受默認值1,主分區的編號爲1'
起始 扇區 (2048-41943039,默認爲 2048): '//直接回車,接受默認扇區大小2048'
將使用默認值 2048
Last 扇區, +扇區 or +size [K,M,G] (2048-41943039,默認爲 41943039): '//直接回車,將所有空間分配給創建的分區'
將使用默認值 41943039
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB
命令(輸入 m 獲取幫助):t '//設置分區對應的ID號:82代表設置爲交換文件系統'
已選擇分區 1
Hex 代碼(輸入 L 列出所有代碼):82
已將分區“Linux”的類型更改爲“Linux swap / Solaris”
命令(輸入 m 獲取幫助):p '//查看分區情況'
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x227f39cd
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 82 Linux swap / Solaris
命令(輸入 m 獲取幫助):wq //保存退出
三:創建文件系統
創建文件系統的過程也是格式化分區的過程,在Linux系統中使用mkfs(Make Filesystem,創建文件系統)命令格式可以格式化XFS , EXT4 ,FAT等不同類型的分區,而使用mkswap命令可以格式化Swap交換分區。
3.1:mkfs命令
實際上 mkfs命令是一個前端工具,可以自動加載不同的程序來創建各種類型的分區,而後端包括有多個與mkfs命令相關的工具程序,這些程序位於/sbin/目錄中,例如:支持XFS分區格式的mkfs.xfs程序等。
創建FAT32文件系統
一般來說,不建議在Linux系統中創建或使用Windows中的文件系統類型,包括FAT16 , FAT32等,一些特殊情況,如Windows系統不可用,U盤系統被餅圖破壞等除外。
若要在Linux系統中創建FAT32文件系統,可結合’-t vfat’選項指定類型,並添加’-F 32’選項指定FAT的版本。
3.2:mkswap命令
在Linux系統中,Swap分區的作用類似於Windows系統中的“虛擬內存”,可以在一定程度上緩解物理內存不足的情況。在當前Linux主機運行的服務較多,需要更多的交換空間支撐應用時,可以爲其增加新的交換分區。
使用mkswap命令工具可以在指定的分區上創建交換文件系統,目標分區應先通過fdisk工具將ID號設爲82.
make swap:創建交換文件系統
例如:將分區/dev/sdb1創建爲交換分區(先用fdisk命令工具將ID號設爲82)
[root@hostname ~]# fdisk /dev/sdb '//先用fdisk命令工具進入交互式的分區管理界面'
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x227f39cd 創建新的 DOS 磁盤標籤。
命令(輸入 m 獲取幫助):n '//開始創建分區'
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): '//直接回車,接受默認p:創建主分區'
Using default response p
分區號 (1-4,默認 1): '//直接回車,接受默認值1,主分區的編號爲1'
起始 扇區 (2048-41943039,默認爲 2048): '//直接回車,接受默認扇區大小2048'
將使用默認值 2048
Last 扇區, +扇區 or +size[K,M,G] (2048-41943039,默認爲 41943039): '//直接回車,將所有空間分配給創建的分區'
將使用默認值 41943039
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB
命令(輸入 m 獲取幫助):t '//設置分區對應的ID號:82代表設置爲交換文件系統'
已選擇分區 1
Hex 代碼(輸入 L 列出所有代碼):82
已將分區“Linux”的類型更改爲“Linux swap / Solaris”
命令(輸入 m 獲取幫助):p '//查看分區情況'
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x227f39cd
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 82 Linux swap / Solaris
命令(輸入 m 獲取幫助):w '//保存退出'
[root@hostname ~]# mkswap /dev/sdb1 '//將分區/dev/sdb1創建爲交換分區'
正在設置交換空間版本 1,大小 = 20970492 KiB
無標籤,UUID=5736a379-3e6c-4e12-9a5c-78cb6a586cf7
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" '//查看總交換空間的大小'
SwapTotal: 4194300 kB '//原本是4G多'
[root@hostname ~]# swapon /dev/sdb1 '//開啓交換分區/dev/sdb1'
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" '//再次查看總交換空間的大小'
SwapTotal: 25164792 kB '//現在變成了25G'
[root@hostname ~]# swapoff /dev/sdb1 '//關閉交換分區 /dev/sdb1'
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" '//再次查看總交換空間大小'
SwapTotal: 4194300 kB '//交換空間變成了原來的4G多'
四:掛載,卸載文件系統
在Linux系統中,對各種存儲設備中的資源訪問(如讀取,保存文件等)都是通過目錄結構進行的,雖然系統核心能夠通過“設備文件”的方式操縱各種設備,但是對於用戶來說,還需要增加一個“掛載”的過程,才能像正常訪問目錄一樣訪問存儲設備中的資源。
當然,在安裝Linux操作系統的過程中,自動建立或識別的分區通常會由系統自動完成掛載,如“/”分區,“boot”分區等。然而對於後來新增加的硬盤分區,光盤等設備,有時候還需要管理員手動進行掛載,實際上用戶訪問的是經過格式化後建立的文件系統。掛載一個分區時,必須爲其制定一個目錄作爲掛靠點(或稱爲掛載點),用戶通過這個目錄訪問設備中 的文件,目錄數據。
4.1:mount命令–掛載文件系統
掛載文件系統個,ISO鏡像到指定文件夾
文件系統類型通常可以省略,系統會自動識別
存儲設備即對應分區的設備文件名(如/dev/sdb1 , /dev/cdrom)或網絡資源路徑
掛載點即用戶指定用於掛載的目錄
光盤對應的設備文件通常使用’/dev/cdrom’,其實這是一個連接文件,連接到實際的光盤設備’/dev/sr0’。這兩個名稱都表示光盤設備。由於光盤是隻讀的存儲介質,因此在掛載時系統會出現’mounting read-only’的提示信息。
proc,sysfs,tmpfs等文件系統是Linux運行所需要的的臨時文件系統,並沒有實際的硬盤分區與其相對應,因此也成爲了’僞文件系統’。
例如:proc文件系統實際上映射了內存及CPU寄存器中的部分數據
在實際工作中,可能會經常從互聯網中下載一些軟件或應用系統的ISO鏡像文件,在無法刻錄光盤的情況下,需要將其解壓後才能瀏覽,使用其中的文件數據。若使用mount掛載命令,則無需解開文件包即可瀏覽,使用ISO鏡像文件中的數據。
ISO鏡像文件通常被視爲一種特殊的“迴環”文件系統,因此在掛載時需要添加“-o loop”選項
4.2:umount命令–卸載文件系統
卸載文件系統時,使用掛在單目錄或對應設備的文件名作爲卸載參數。
Linux系統中,由於同一個設備可以被掛載到多個目錄下,所以一般建議通過掛載點的目錄位置來進行卸載。
umount命令–卸載已掛載的文件系統
4.3:設置文件系統的自動掛載
系統中的/etc/fstab文件可以視爲mount命令的配置文件,其中存儲了文件系統的靜態掛載數據,Linux系統在每次開機時,會自動讀取這個文件的內容,自動掛載所指定的文件系統。
默認的fstab文件中包括了根分區,/boot分區,交換分區及proc,tmpfs等僞文件系統的掛載配置。
在/etc/fstab文件中,每一行記錄對應一個分區或設備的掛載配置信息,從左到右包括六個字段,含義如下
通過在“/etc/fstab”文件中添加相應的掛載配置,可以實現開機後自動掛載指定的分區。
4.4:df命令–查看磁盤使用情況
不帶選項和參數的mount命令可以顯示分區的掛載情況,若要了解系統中已經掛載各文件系統的磁盤使用情況(如剩餘磁盤空間等),可以使用df命令。
df命令使用文件或者設備作爲命令參數,較常用的選項爲“-h”"-T"。其中,“-h”選項可以顯示更容易讀的容量單位,而“-T”選項用於顯示對應文件系統的類型。