Linux--磁盤與文件管理——原理與實操雙結合(磁盤的原理,新硬盤的管理,文件系統的創建及掛載、卸載文件系統)

前言

  • 磁盤(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查看分區信息
[root@localhost ~]# fdisk -l
    下面是詳細信息
磁盤 /dev/sda:42.9 GB, 42949672960 字節,83886080 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x000a58c6

   設備 Boot      Start         End      Blocks   Id  System            
/dev/sda1   *        2048    12584959     6291456   83  Linux         ' //這是引導分區'
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux

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邏輯卷,82表示SWAP交換分區

2.1:fdisk 命令–查看或管理磁盤分區

在硬盤設備中創建,刪除,更改分區等操作同樣通過fdisk命令進行,主要使用硬盤的設備文件作爲參數。

fdisk -l [磁盤設備]
或
fdisk [磁盤設備]
查看時,帶有“*”標識的是引導分區

fdisk /dev/sdb  進入交互式的分區管理界面
常用指令
p		列出硬盤中的分區情況,信息顯示的格式與執行"fdisk -l"命令相同
n		創建新分區
d		刪除分區
t		變更分區類型,轉換格式
w		保持配置
q		退出
l       查看分區對應的系統ID號
命令舉例
[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命令

[root@hostname ~]# ls /sbin/mkfs*
/sbin/mkfs         /sbin/mkfs.ext2  /sbin/mkfs.fat    /sbin/mkfs.vfat
/sbin/mkfs.btrfs   /sbin/mkfs.ext3  /sbin/mkfs.minix  /sbin/mkfs.xfs
/sbin/mkfs.cramfs  /sbin/mkfs.ext4  /sbin/mkfs.msdos
  • mkfs命令:Make Filesystem,創建文件系統(格式化)
mkfs命令使用格式
mkfs -t 文件系統類型 分區設備
  • CentOS7默認xfs文件系統類型,所以我們現在常用這條命令
 -[root@localhost ~]# mkfs.xfs /dev/卷組名/邏輯卷名

創建EXT4文件系統時,結合"-t ext4"選項指定類型,並指定要被格式化的分區設備即可
例如:將分區 /dev/sdb2 格式化爲EXT4文件系統

[root@hostname ~]# mkfs -t ext4 /dev/sda2
 創建FAT32文件系統

一般來說,不建議在Linux系統中創建或使用Windows中的文件系統類型,包括FAT16 , FAT32等,一些特殊情況,如Windows系統不可用,U盤系統被餅圖破壞等除外。

若要在Linux系統中創建FAT32文件系統,可結合’-t  vfat’選項指定類型,並添加’-F 32’選項指定FAT的版本。
例如,將分區 /dev/sdb6 格式化爲FAT32文件系統(先通過fdisk工具添加/dev/sdb6分區,並且將ID號設爲6)
[root@hostname ~]# mkfs -t vfat -F 32 /dev/sdb6
或者
[root@hostname ~]# mkfs.vfat -F 32 /dev/sdb6
兩個命令是一個意思	

3.2:mkswap命令

在Linux系統中,Swap分區的作用類似於Windows系統中的“虛擬內存”,可以在一定程度上緩解物理內存不足的情況。在當前Linux主機運行的服務較多,需要更多的交換空間支撐應用時,可以爲其增加新的交換分區。

使用mkswap命令工具可以在指定的分區上創建交換文件系統,目標分區應先通過fdisk工具將ID號設爲82。

  • make swap:創建交換文件系統
命令使用的格式
mkswap 分區設備
cat /proc/meminfo | grep "SwapTotal"    ' //查看總交換空間大小'
swapon /dev/sdb1						'//開啓交換分區/dev/sdb1'
swapoff /dev/sdb1					'	//關閉交換分區/dev/sdb1'
例如:將分區/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鏡像到指定文件夾
mount命令基本格式
mount          顯示當前系統中已掛載的各個分區(文件系統)的相關信息,最近掛載的文件信息將顯示在最後面
mount [-t 文件系統類型] 存儲設備 掛載點目錄
mount -o loop ISO鏡像文件 掛載點目錄
mount -a  將現在所有能掛載的都掛載
  • 文件系統類型通常可以省略,系統會自動識別

  • 存儲設備即對應分區的設備文件名(如/dev/sdb1 , /dev/cdrom)或網絡資源路徑

  • 掛載點即用戶指定用於掛載的目錄

  • 光盤對應的設備文件通常使用’/dev/cdrom’,其實這是一個連接文件,連接到實際的光盤設備’/dev/sr0’。這兩個名稱都表示光盤設備。由於光盤是隻讀的存儲介質,因此在掛載時系統會出現’mounting read-only’的提示信息。

例如,將光盤設備掛載到/media/cdrom目錄 
[root@hostname ~]#mount /dev/cdrom /media/cdrom
  • 掛載Linux分區或U盤設備時的用法也一樣,只需要指定正確的設備位置和掛載目錄即可。
例如:將/dev/sdb1分區掛載到新建的/ccc目錄下
[root@hostname ~]#mkdir /ccc
[root@hostname ~]#mount /dev/sdb1 /ccc
  • 在Linux系統中,U盤設備被模擬成SCSI設備,因此與掛載普通的SCSI硬盤中的分區並沒有明顯的區別。U盤一般使用FAT16或FAT32的文件系統,若不確定U盤設備文件的位置,可以先執行‘fdisk -l’命令進行查看,確認。
例如:將位於/dev/sdc1的U盤設備掛載到新建的/ccc/usbdisk目錄下
[root@hostname ~]#mkdir /ccc/usbdisk
[root@hostname ~]#mount /dev/sdc1 /ccc/usbdisk
  • proc,sysfs,tmpfs等文件系統是Linux運行所需要的的臨時文件系統,並沒有實際的硬盤分區與其相對應,因此也成爲了’僞文件系統’。

例如:proc文件系統實際上映射了內存及CPU寄存器中的部分數據

  • 在實際工作中,可能會經常從互聯網中下載一些軟件或應用系統的ISO鏡像文件,在無法刻錄光盤的情況下,需要將其解壓後才能瀏覽,使用其中的文件數據。若使用mount掛載命令,則無需解開文件包即可瀏覽,使用ISO鏡像文件中的數據。

ISO鏡像文件通常被視爲一種特殊的“迴環”文件系統,因此在掛載時需要添加“-o loop”選項

例如:將下載的CentOS系統的DVD光盤鏡像文件“CentOS-7-x86_64-DVD-1611.iso”掛載到/media/mnt目錄下。
[root@hostname ~]#mount -o loop CentOS-7-x86_64-DVD-1611.iso /media/mnt

4.2:umount命令–卸載文件系統

卸載文件系統時,使用掛在單目錄或對應設備的文件名作爲卸載參數。

Linux系統中,由於同一個設備可以被掛載到多個目錄下,所以一般建議通過掛載點的目錄位置來進行卸載。

  • umount命令–卸載已掛載的文件系統
使用命令的基本格式
umount 存儲設備位置
umount 掛載點目錄
例如:通過umount命令卸載之前掛載的Linux分區,光盤設備
[root@hostname ~]#umount /ccc				'//通過掛載點目錄卸載對應的分區'
[root@hostname ~]#umount /dev/cdrom			'//通過設備文件卸載光盤'

4.3:設置文件系統的自動掛載

  • 系統中的/etc/fstab文件可以視爲mount命令的配置文件,其中存儲了文件系統的靜態掛載數據,Linux系統在每次開機時,會自動讀取這個文件的內容,自動掛載所指定的文件系統。

  • 默認的fstab文件中包括了根分區,/boot分區,交換分區及proc,tmpfs等僞文件系統的掛載配置。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ysHoUzQQ-1592392873601)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200616213134835.png)]

  • 在/etc/fstab文件中,每一行記錄對應一個分區或設備的掛載配置信息,從左到右包括六個字段,含義如下
字段 解釋
第一字段 分區/設備名/設備卷標名
第二字段 掛載點,文件系統的掛載點目錄的位置
第三字段 文件系統類型,如xfs,Swap等
第四字段 掛載參數(包括權限和功能),即mount命令“-o”選項後可使用的參數。例如:default,rw,ro,noexec分別表示默認參數,可寫,只讀,禁用執行程序。
第五字段 表示文件系統是否需要dump備份(dump是一個備份工具),設爲1時表示需要,設爲0時將被dump忽略
第六字段 該字段用於決定系統啓動時進行磁盤檢查的順序。0:不進行檢查。1:優先檢查。2:其次檢查、對於根分區應設爲1,其他分區設爲2.
  • 通過在“/etc/fstab”文件中添加相應的掛載配置,可以實現開機後自動掛載指定的分區。
例如,添加自動掛載分區/dev/sdb1的配置
[root@hostname ~]# vi /etc/fstab
...//省略部分內容
/dev/sdb1       /ccc    xfs    default  0 0

4.4:df命令–查看磁盤使用情況

  • 不帶選項和參數的mount命令可以顯示分區的掛載情況,若要了解系統中已經掛載各文件系統的磁盤使用情況(如剩餘磁盤空間等),可以使用df命令。

  • df命令使用文件或者設備作爲命令參數,較常用的選項爲“-h”"-T"。其中,“-h”選項可以顯示更容易讀的容量單位,而“-T”選項用於顯示對應文件系統的類型。

例如:執行“df -hT”命令可以查看當前系統中掛載的各文件系統的磁盤使用情況
[root@hostname ~]# df -hT
文件系統       類型      容量  已用  可用 已用% 掛載點
/dev/sda2      xfs        20G  3.3G   17G   17% /
devtmpfs       devtmpfs  898M     0  898M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.0M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  174M  5.9G    3% /boot
tmpfs          tmpfs     183M   12K  183M    1% /run/user/42
tmpfs          tmpfs     183M     0  183M    0% /run/user/0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章