Linux磁盤管理與文件系統

磁盤基礎

硬盤(Hard Disk Driver,簡稱HDD)是計算機常用的存儲設備之一。

磁盤的結構

硬盤的物理結構

盤片:硬盤有多個盤片,每個盤片2面
磁頭:每面一個磁頭

硬盤的數據結構

扇區:盤面被分成多個扇形區域,每個扇區存放512個字節的數據,硬盤的第一個扇區,叫做引導扇區
磁道:同一盤片不同半徑的同心圓(當磁盤旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁道(Track))

柱面:不同盤片相同半徑構成的圓柱面(在有多個盤片構成的盤組中,由不同盤片的面,但處於同一半徑圓的多個磁道組成的一個圓柱面(Cylinder))
在這裏插入圖片描述

存儲容量

硬盤存儲容量=磁頭數 x 磁道(柱面)數 x 每道扇區數 x 每扇區字節數
可以用柱面/磁頭/扇區來確定唯一定位磁盤上每一個區域,用fdisk -l查看分區信息

[root@localhost ~]# fdisk -l

磁盤 /dev/sda:322.1 GB, 322122547200 字節,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x000d477d

   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200     6295551     2098176   82  Linux swap / Solaris
/dev/sda3         6295552   629145599   311425024   83  Linux

磁盤 /dev/sdb:322.1 GB, 322122547200 字節,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

硬盤的接口

  • IDE、SATA、SCSI、SAS、光纖通道
    硬盤按照數據接口不同,分爲以下幾種(接口速率不是實際硬盤數據傳輸的速度)
    ATA(IDE(並口)):並口數據線連接主板與硬盤,抗干擾性太差,且排線佔用空間較大,不利於電腦內部散熱,逐漸被SATA所取代
    SATA(串口):全稱是Serial ATA,抗干擾性強,支持熱插熱拔等功能,速度快,糾錯能力強。
    SCSI:全稱是 Small Computer System Interface(小型機系統接口),SCSI硬盤廣爲工作站級個人電腦以及服務器所使用的,資料傳輸時CPU佔用率較低,轉速快,支持熱插熱拔等
    SAS(Serial Attached SCSI):是新一代的SCSI技術,和SATA硬盤相同,都是採取序列式技術以獲得更高的傳輸速度,可達到6Gb/s

磁盤分區表示

MBR

MBR是主引導記錄(Master Boot Record),位於硬盤第一個物理扇區處(引導扇區)
MBR中包含硬盤的主引導程序和硬盤分區表。分區表有4個分區記錄區,每個分區記錄區佔16個字節
MBR最多四個分區,可創建邏輯分區

磁盤分區的表示

常見的硬盤可以劃分爲主分區、擴展分區和邏輯分區,通常情況下主分區只有四個,而擴展分區可以看成時一個特殊的主分區類型,在擴展分區中可以建立邏輯分區。主分區一般用來安裝操作系統,拓展分區多用來儲存文件數據。
Linux中將硬盤、分區等設備均表示爲文件

  • 硬盤:對於IDE接口的硬盤設備,表示爲“hdX”形式的文件名。而對於SCSI接口的硬盤設備,則表示爲“sdX”形式的文件名。其中"X"可以爲a,b,c,d等字母序號。例如:將系統中的第一個IDE設備(硬盤)表示爲“hda”,將第二個SCSI設備表示爲“sdb”
  • 分區:表示分區時,以硬盤設備的文件名作爲基礎,然後在後面添加該分區(主分區,擴展分區,邏輯分區)對應的數字序號即可。例如:第一個IDE硬盤中的第一個分區表示爲"hda1",第二個分區表示爲"hda2"。第二個SCSI硬盤中的第三個分區表示爲"sdb3",第五個分區表示爲"sdb5"
    在這裏插入圖片描述

磁盤分區結構

  • 硬盤中的主分區數目只有4個
  • 因此主分區和擴展分區的序號也就限制在1-4
  • 擴展分區再分爲邏輯分區
  • 邏輯分區的序號將始終從5開始
    在這裏插入圖片描述

文件系統類型

文件系統(File System)類型決定了向分區中存放,讀取文件數據的方式和效率,在對分區進行格式化的時候需要選擇所用的文件系統類型,在Windows操作系統中,經常使用的文件系統類型包括FAT32 , NTFS等格式,而在Linux系統中,最常使用的文件系統主要包括以下幾種格式

  • EXT4文件系統:第四代拓展文件系統
    1.存放文件和目錄數據的分區
    2.高性能的日誌型文件系統
    3.Linux系統中默認使用的文件系統

  • 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邏輯卷

檢測並確認新的硬盤

掛載號新的硬盤設備並啓動主機後,Linux系統會自動檢測並加載該硬盤,無須額外安裝驅動。

fdisk命令 列出當前系統中所有硬盤設備及其分區的信息

  • 查看或管理磁盤分區
    fdisk -l [磁盤設備]
    fdisk [磁盤設備]

  • 交互模式中的常用指令
    m、p、n、d、t、w、q
    常用指令
    a toggle a bootable flag
    b edit bsd disklabel
    c toggle the dos compatibility flag
    d delete a partition ###常用 刪除分區
    l list known partition types ###常用 查看分區對應的系統ID號
    m print this menu ###常用 列出手冊
    n add a new partition ###常用 添加分區/創建新分區
    o create a new empty DOS partition table
    p print the partition table ###常用 列出硬盤中的分區情況,信息顯示的格式與執行"fdisk -l"命令相同
    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)

      [root@localhost ~]# fdisk -l
    
      磁盤 /dev/sda:322.1 GB, 322122547200 字節,629145600 個扇區
      Units = 扇區 of 1 * 512 = 512 bytes
      扇區大小(邏輯/物理):512 字節 / 512 字節
      I/O 大小(最小/最佳):512 字節 / 512 字節
      磁盤標籤類型:dos
      磁盤標識符:0x000d477d
      	
         設備 Boot      Start         End      Blocks   Id  System
      /dev/sda1   *        2048     2099199     1048576   83  Linux
      /dev/sda2         2099200     6295551     2098176   82  Linux swap / Solaris
      /dev/sda3         6295552   629145599   311425024   83  Linux
      
      磁盤 /dev/sdb:322.1 GB, 322122547200 字節,629145600 個扇區
      Units = 扇區 of 1 * 512 = 512 bytes
      扇區大小(邏輯/物理):512 字節 / 512 字節
      I/O 大小(最小/最佳):512 字節 / 512 字節
    

例如

[root@localhost ~]# fdisk /dev/sdb     //進入fidsk分區工具的交互操作界面
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x98aa708b 創建新的 DOS 磁盤標籤。

命令(輸入 m 獲取幫助):

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:322.1 GB, 322122547200 字節,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x98aa708b

   設備 Boot      Start         End      Blocks   Id  System

1)創建兩個主分區。
首先建立第一個主分區(/dev/sdb1),容量指定爲20G

命令(輸入 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-629145599,默認爲 629145599):+20G
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB

按照類似的操作步驟繼續創建第2個主分區(/dev/sdb2),容量也指定爲20GB,完成後可以輸入“p”指令查看分區情況

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,默認 2):2
起始 扇區 (41945088-629145599,默認爲 41945088):
將使用默認值 41945088
Last 扇區, +扇區 or +size{K,M,G} (41945088-629145599,默認爲 629145599):+20G
分區 2 已設置爲 Linux 類型,大小設爲 20 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:322.1 GB, 322122547200 字節,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x4fc461c7

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41945087    20971520   83  Linux
/dev/sdb2        41945088    83888127    20971520   83  Linux

2)創建一個拓展分區和兩個邏輯分區
接下來可以使用剩餘的硬盤空間創建擴展分區,然後在擴展分區中創建邏輯分區。需要注意的是,若主分區、邏輯分區均已創建完畢(四個主分區號已用完),這再次輸入“n”指令後將不再提示選擇分區類別。
首先建立擴展分區(/dev/sdb4),使用剩下的所有空間(全部空間分配完畢後,將無法再建立新的主分區)。

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e //選擇建立的爲擴展分區
分區號 (3,4,默認 3):4 //選擇4作爲擴展分區的編號
起始 扇區 (83888128-629145599,默認爲 83888128):
將使用默認值 83888128
Last 扇區, +扇區 or +size{K,M,G} (83888128-629145599,默認爲 629145599):
將使用默認值 629145599
分區 4 已設置爲 Extended 類型,大小設爲 260 GiB

接下來在擴展分區建立第1個邏輯分區(/dev/sdb5),容量指定爲2GB

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l //選擇創建的分區爲邏輯分區
添加邏輯分區 5
起始 扇區 (83890176-629145599,默認爲 83890176):
將使用默認值 83890176
Last 扇區, +扇區 or +size{K,M,G} (83890176-629145599,默認爲 629145599):+2G
分區 5 已設置爲 Linux 類型,大小設爲 2 GiB

按照類似的操作步驟繼續創建第2個邏輯分區(/dev/sdb6),容量指定爲10GB,完成後可以再次輸入“p”指令查看分區情況

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加邏輯分區 6
起始 扇區 (88086528-629145599,默認爲 88086528):
將使用默認值 88086528
Last 扇區, +扇區 or +size{K,M,G} (88086528-629145599,默認爲 629145599):+10G
分區 6 已設置爲 Linux 類型,大小設爲 10 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:322.1 GB, 322122547200 字節,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x4fc461c7

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41945087    20971520   83  Linux
/dev/sdb2        41945088    83888127    20971520   83  Linux
/dev/sdb4        83888128   629145599   272628736    5  Extended
/dev/sdb5        83890176    88084479     2097152   83  Linux
/dev/sdb6        88086528   109058047    10485760   83  Linux

命令(輸入 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系統中,使用fdisk工具在硬盤中建立分區之後,還需要對分區進行格式化並掛載到系統中的指定目錄,然後才能用於存儲文件、目錄等數據。

穿件文件系統

穿件文件系統的過程也即格式化分區的過程,在Linux系統中使用mkfs(Make filesystem,創建文件系統)命令工具可以格式化FXS、EXT4、FAT等不同類型的分區,爲使用mkswap命令可以格式化Swap交換分區

mkfs命令的使用

實際上mkfs命令是一個前端工具,可以自動加載不同的程序來創建各種雷西興的分區,而後端包括有多個與mkfs命令相關的程序,這些程序位於/sbin/目錄中,如支持EXT4分區格式的mkfs.ext4程序等

[root@localhost ~]# 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 -t 文件系統類型 分區設備
(1)創建EXT4文件系統
需要創建EXT4文件系統時,結合“-t ext4”選項指定類型,並指定要被格式化的分區設備即可。
把分區/dev/sdb1格式化爲EXT4文件系統

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

2)創建FAT32文件系統
一般來說,不建議在Linux系統中創建或使用Windows中的文件系統類型,包括FAT16、FAT32等,一些特殊情況,如Windows系統不可用、U盤系統被破壞除外。
若要在Linux系統中創建FAT32文件系統,可結合“-t vfat”選項指定類型,並添加“-F 32”選項指定FAT的版本。
centos7系統默認使用xfs文件系統

mkswap命令的使用

在Linux系統中,Swap分區的作用類似於Windows系統中的“虛擬內存”,可以在一定程度上緩解物理內存不足的情況。噹噹前Linux主機運行的服務較多,需要更多的交換空間支撐應用時,可以爲其增加新的交換分區。
使用mkswap命令工具可以在指定的分區上創建交換文件系統,目標分區應先通過fdisk工具將ID號設爲82。
將分區/dev/sdb5創建爲交換分區

[root@localhost ~]# fdisk -l /dev/sdb5

磁盤 /dev/sdb5:2147 MB, 2147483648 字節,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
[root@localhost ~]# mkswap /dev/sdb5
正在設置交換空間版本 1,大小 = 2097148 KiB
無標籤,UUID=35174256-b250-41c0-8257-d4c40bf7a647

對於新增加的交換分區,需要使用swapon命令進行啓用,反之使用swapoff命令可以停用指定的交換分區。

[root@localhost ~]# cat /proc/meminfo|grep "SwapTotal:"  //查看總交換空間的大小
SwapTotal:       2098172 kB  
[root@localhost ~]# swapon /dev/sdb5  //啓用交換分區 /dev/sdb5
[root@localhost ~]# cat /proc/meminfo|grep "SwapTotal:"  //確認交換分區大小已增加
SwapTotal:       4195320 kB
[root@localhost ~]# swapoff /dev/sdb5  //停用交換分區 /dev/sdb5

掛載、卸載文件系統

在Linux系統中,對各種儲存設備中的資源訪問(如讀取、保存文件等)都是通過怒路結構進行的,雖然系統核心能夠通過“設備文件”的方式操縱各種設備,但是對於用戶來說,還需要增加一個“掛載”的過程,才能像正常訪問目錄一樣訪問儲存設備中的資源。
當然,在安裝Linux操作系統的過程中,自動建立或識別的分區通常會由系統自動完成掛載,如“/”分區、“/boot”分區等。然而對於後來新增加的硬盤分區、光盤等設備,有時候還需要管理員手動進行掛載,實際上用戶訪問的是經過格式化後建立的文件系統。掛載一個分區時,必須爲其指定一個目錄作爲掛靠點(或稱爲掛載點),用戶通過這個目錄訪問設備中的文件、目錄數據。

掛載文件系統

mount 命令的基本使用格式
mount [-t 文件系統類型] 存儲設備掛載點
其中文件系統類型可以省略(有系統自動識別),存儲設備即對應分區的設備文件名(如/dev/sdb1、/dev/cdrom)或網絡資源路徑,掛載點即用戶指定用於掛載的目錄。
將光盤設備掛載到 /opt目錄。

mount命令基本格式
mount 顯示當前系統中已掛載的各個分區(文件系統)的相關信息,最近掛載的文件信息將顯示在最後面
mount [-t 文件系統類型] 存儲設備 掛載點目錄
mount -o loop ISO鏡像文件 掛載點目錄
mount -a 將現在所有能掛載的都掛載

[root@localhost ~]# mount /dev/cdrom /opt
mount: /dev/sr0 寫保護,將以只讀方式掛載

不使用任何參數或選項的mount命令時,將顯示出當前系統中已掛載的各個分區(文件系統)相關信息,最近掛載的文件系統顯示在最後邊。

[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=915784k,nr_inodes=228946,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
...... // 省略部分內容

掛載Linux分區或U盤設備時的用法也一樣,只需要指定正確的設備位置和掛載目錄即可。

卸載文件系統

需要卸載文件系統時,使用的命令爲umount,使用掛載點目錄或對用設備的文件名作爲卸載參數。Linux系統中,由於同一個設備可以被掛載到多個目錄下,所以一般建議通過掛載點的目錄位置來進行卸載。

使用命令的基本格式
umount 存儲設備位置
umount 掛載點目錄

[root@localhost ~]# umount /dev/cdrom //通過設備文件卸載光盤

設置文件系統的自動掛載

系統中的/etc/fstab 文件可以視爲 mount 命令的配置文件,其中存儲了文件系統的靜態掛載數據。Linux 操作系統在每次開機時,會自動讀取這個文件的內容,自動掛載所指定的文件系統。默認的 fstab 文件中包括了根分區、/boot 分區、交換分區掛載配置。

[root@localhost ~]# cat /etc/fstab
……//省略部分信息


/dev/mapper/cl-root	/	xfs	defaults	0 0
UUID=a36c9228-cded-4f3a-96b5-0c03ce2feb61 /boot xfs	defaults	0 0

在/etc/fstab 文件中,每一行記錄對應一個分區或設備的掛載配置信息,這些信息從左到右包括六個字段(使用空格或製表符分隔)
第 1 字段:設備名或設備卷標名。
第 2 字段:文件系統的掛載點目錄的位置。
第 3 字段:文件系統類型,如 XFS、Swap 等。
第 4 字段:掛載參數,即mount 命令“-o”選項後可使用的參數。例如,defaults、rw、ro、noexec 分別表示默認參數、可寫、只讀、禁用執行程序。
第 5 字段:表示文件系統是否需要 dump 備份(dump 是一個備份工具)。一般設爲 1 時表示需要,設爲 0 時將被 dump 忽略。
第 6 字段:該數字決定在系統啓動時進行磁盤檢查的順序。0 表示不進行檢查,1 表示優先檢查,2 表示其次檢查。根分區應設爲 1,其他分區設爲 2。
通過在/etc/fstab 文件中添加相應的掛載配置,可以實現開機後自動掛載指定的分區。

使用 mount、umount 進行掛載、卸載操作時,若在/etc/fstab 文件中已設置有對應的掛載記錄,則只需指定掛載點目錄或設備文件名中的一個作爲參數。例如,直接執行“mount
/dev/sdb1”或“mount /mailbox”命令,都可以將分區/dev/sdb1 掛載到/mailbox 目錄下。

查看磁盤使用情況

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

[root@localhost ~]# df -hT
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章