一,磁盤和分區簡介
1,磁盤的結構和工作原理
在 Linux 系統中,檔案系統是建立在硬碟上的,是以,要想徹底搞清楚檔案系統的管理機制,就要從了解硬碟開始。硬碟可分為機械硬碟(Hard Disk Drive, HDD)和固态硬碟(Solid State Disk, SSD),機械硬碟采用磁性碟片來存儲資料,而固态硬碟通過閃存顆粒來存儲資料。
機械硬碟主要由磁盤、磁道、扇區、磁頭、柱面與傳動軸等組成。
- 磁盤:磁盤一般有一個或多個盤片。每個盤片可以有兩面,即第一個盤片的正面為0面,反面為 1 面;第二個盤片的正面為 2 面…依次類推。
- 磁道:每個盤片的盤面被劃分成多個狹窄的同心圓環,資料就存儲在這樣的同心圓環上面,我們将這樣的圓環稱為磁道 (Track)。每個盤面可以劃分多個磁道,最外圈的磁道是0号磁道,向圓心增長依次為1磁道、2磁道…磁盤的資料存放就是從最外圈開始的。
- 扇區:根據硬碟的規格不同,磁道數可以從幾百到成千上萬不等。每個磁道可以存儲數 Kb 的資料,但是計算機不必要每次都讀寫這麼多資料。是以,再把每個磁道劃分為若幹個弧段,每個弧段就是一個扇區 (Sector),現在每個扇區可存儲 512 位元組資料已經成了業界的約定。也就是說,即使計算機隻需要某一個位元組的資料,但是也得把這個 512 個位元組的資料全部讀入記憶體,再選擇所需要的那個位元組。
- 磁頭:是硬碟讀取資料的關鍵部件,它的主要作用就是将存儲在硬碟盤片上的磁資訊轉化為電信号向外傳輸,而它的工作原理則是利用特殊材料的電阻值會随着磁場變化的原理來讀寫磁盤上的資料,磁頭的好壞在很大程度上決定着硬碟盤片的存儲密度。比較常用的是GMR(Giant Magneto Resistive)巨磁阻磁頭。
硬碟讀寫資料的過程
現代硬碟尋道都是采用CHS(Cylinder Head Sector)的方式,硬碟讀取資料時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁道的上方,這段時間稱為尋道時間(seek time)。因讀寫磁頭的起始位置與目标位置之間的距離不同,尋道時間也不同。目前硬碟一般為2到30毫秒,平均約為9毫秒。磁頭到達指定磁道後,然後通過盤片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱為旋轉延遲時間(rotational latencytime)一個7200(轉/每分鐘)的硬碟,每旋轉一周所需時間為60×1000÷7200=8.33毫秒,則平均旋轉延遲時間為8.33÷2=4.17毫秒(平均情況下,需要旋轉半圈)。平均尋道時間和平均選裝延遲稱為平均存取時間。
磁盤接口
目前,常見的機械硬碟接口有以下幾種:
- IDE 硬碟接口:(Integrated Drive Eectronics,并口,即電子內建驅動器)也稱作 "ATA硬碟" 或 "PATA硬碟",是早期機械硬碟的主要接口,ATA133 硬碟的理論速度可以達到 133MB/s(此速度為理論平均值)因為并口線的抗幹擾性太差,且排線占用空間較大,不利計算機内部散熱,已逐漸被SATA所取代。
- SATA接口:全稱Serial ATA,也就是使用序列槽的ATA接口,特點是抗幹擾性強,對資料線的要求比ATA低很多,且支援熱插拔等功能。SATA-II的接口速度為300MiB/s,而新的SATA-III标準可達到600MiB/s的傳輸速度。SATA的資料線也比ATA的細得多,有利于機箱内的空氣流通,整理線材也比較友善。
- SCSI接口:全稱Small Computer System Interface(小型機系統接口),經曆多代的發展,從早期的SCSI-II,到目前的Ultra320 SCSI以及Fiber-Channel(光纖通道),接口型式也多種多樣。SCSI硬碟廣為工作站級個人計算機以及伺服器所使用,是以會使用較為先進的技術,如碟片轉速15000rpm的高轉速,且資料傳輸時CPU占用率較低,但是單價也比相同容量的ATA及SATA硬碟更加昂貴。
- SAS接口:全稱Serial Attached SCSI,是新一代的SCSI技術,可相容SATA硬碟,都是采取序列式技術以獲得更高的傳輸速度,可達到12Gb/s。此外也透過縮小連接配接線改善系統内部空間等。
- FC接口:全稱Fibre Channel(光纖通道接口),擁有此接口的硬碟在使用光纖聯接時具有熱插拔性、高速帶寬(4Gb/s或10Gb/s)、遠端連接配接等特點;内部傳輸速率也比普通硬碟更高。但其價格高昂,是以FC接口通常隻用于高端伺服器領域
現在,普通機械盤接口多為SATA,固态盤接口多為SAS
2,Linux磁盤分區
Linux和現代大多數作業系統相同,把磁盤分割為多個分區,每個分區實際被當作一個獨立的磁盤,建立分區的過程叫做磁盤分區。
Linux通過不同的裝置節點來區分各個分區,節點名稱由磁盤名和分區号組成。例如,驅動器/dev/hda的第一個分區就叫做/dev/hda1,驅動器/dev/hdb的第六個分區就叫做/dev/hdb6。
不同的作業系統有固定的記錄磁盤分區的方式。最常見的分區方案是DOS分區。傳統的Linux分區方案與DOS分區方案類似。
(1)主引導記錄
每個磁盤的頭部分(512位元組)為主引導記錄(MBR,Master Boot Record)MBR包含以下内容
引導程式(Bootloader):在可引導磁盤的MBR中存放一個可執行檔案,叫做引導程式。在引導時,BIOS将控制權交給引導程式,并由引導程式負責裝載然後将控制轉交給合适的作業系統。
分區表(Partition Table) :在每個磁盤上,主引導記錄的64位元組被保留在分區表。這個分區表最多記錄4個分區的資訊,這4個分區叫做主分區(Primary Partition)。分區表會記錄每個分區的開始位置、結束位置和分區類型。
(2)主分區
每個磁盤最多可以分為4個主分區,其屬性記錄在MBR的分區表中。習慣上Linux将主分區編号為1~4.主分區的編号可以手動指定,也就是說,使用者看到一個分區的編号為3,并不意味着前面已經有兩個主分區了。
(3)擴充分區
為了友善使用者有更多的分區可以使用,DOS分區允許将擴充分區(Extended Partition)建在任何一個主分區上。擴充分區可以劃分成更多的邏輯分區(Logical Partition)。主分區一旦用作擴充分區,就不能再用作其他分區了。
擴充分區可有可無,如果覺得4個分區夠用,就無須建立擴充分區。若有必要,一般會選擇前三個分區作為主分區,剩下的第四個分區作為擴充分區。
(4)邏輯分區
在擴充分區裡可以建立多個邏輯分區,IDE硬碟邏輯分區不能多于63個,SCSI硬碟不能多于15個。Linux總是把第一個邏輯分區從5開始編号,無論前面有幾個主分區。
3,Linux常見裝置命名
在Linux中,一切裝置都是檔案,硬體也不例外。既然是檔案,就必然有檔案名稱。系統核心中的udev裝置管理器會自動規範硬體名稱,讓使用者可以通過裝置檔案的名稱知道裝置的大緻屬性和分區資訊等,這對陌生的裝置來說非常友善。
硬體裝置 | 檔案名稱 |
IDE裝置 | /dev/hd[a-d] |
SCSI/SATA/U盤 | /dev/sd[a-p] |
軟驅 | /dev/fd[0-1] |
列印機 | /dev/lp[0-15] |
光驅 | /dev/cdrom或者/dev/sr0 |
4,Linux分區命名
Windows使用C\D\E等來命名分區,而Linux使用“裝置名稱+分區編号”辨別硬碟的各個分區,主分區或擴充分區的編碼為1~4,邏輯分區的編碼從5開始。這樣的命名方式顯得更加清晰,可以避免增加或者解除安裝硬碟造成的盤符混亂。
IDE硬碟和光驅裝置将由内部連接配接來區分。第一個IDE信道的主(master)裝置辨別為/dev/hda,第一個給IDE信道的從(slave)裝置辨別為/dev/hdb。按照這個原則,第二個IDE信道的主、從裝置用/dev/hdc和/dev/hdd來辨別。
二,Linux檔案系統概述
Linux最有特色的就是Linux檔案系統,它從不同的作業系統中吸收了很多特性,一直在快速演變。Linux的發行版可以支援種類豐富的基于磁盤的檔案系統,如SGI的XFS,常見的EXT3,EXT4,較老的ReiserFS,以及IBM的JFS等。Linux還支援許多外來的檔案系統,比如,在windows上使用的FAT和NTFS,以及在CD-ROM上使用的ISO-9660檔案系統。
-
FAT
在Win 9X下,FAT16支援的分區最大為2GB。我們知道計算機将資訊儲存在硬碟上稱為“簇”的區域内。使用的簇越小,儲存資訊的效率就越高。在FAT16的情況下,分區越大簇就相應的要大,存儲效率就越低,勢必造成存儲空間的浪費。并且随着計算機硬體和應用的不斷提高,FAT16檔案系統已不能很好地适應系統的要求。在這種情況下,推出了增強的檔案系統FAT32。
-
NTFS
NTFS檔案系統是一個基于安全性的檔案系統,是Windows NT所采用的獨特的檔案系統結構,它是建立在保護檔案和目錄資料基礎上,同時照顧節省存儲資源、減少磁盤占用量的一種先進的檔案系統。使用非常廣泛的Windows NT 4.0采用的就是NTFS 4.0檔案系統,相信它所帶來的強大的系統安全性一定給廣大使用者留下了深刻的印象。Win 2000采用了更新版本的NTFS檔案系統NTFS 5.0,它的推出使得使用者不但可以像Win 9X那樣友善快捷地操作和管理計算機,同時也可享受到NTFS所帶來的系統安全性。
-
exFAT
全稱Extended File Allocation Table File System,擴充FAT,即擴充檔案配置設定表,是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一種适合于閃存的檔案系統,為了解決FAT32等不支援4G及其更大的檔案而推出。
-
RAW
RAW檔案系統是一種磁盤未經處理或者未經格式化産生的檔案系統,一般來說有這幾種可能造成正常檔案系統變成RAW檔案系統:沒有格式化、格式化中途取消操作、硬碟出現壞道、硬碟出現不可預知的錯誤、毒所緻。解決RAW檔案系統的最快的方法是立即格式化,并且使用防毒軟體全盤殺毒
-
Ext
Ext2:Ext是GNU/Linux 系統中标準的檔案系統,其特點為存取檔案的性能極好,對于中小型的檔案更顯示出優勢,這主要得利于其簇快取層的優良設計。
Ext3:是一種日志式檔案系統,是對ext2系統的擴充,它相容ext2。日志式檔案系統的優越性在于:由于檔案系統都有快取層參與運作,如不使用時必須将檔案系統卸下,以便将快取層的資料寫回磁盤中。是以每當系統要關機時,必須将其所有的檔案系統全部shutdown後才能進行關機
Ext4:Linux kernel 自 2.6.28 開始正式支援新的檔案系統 Ext4。Ext4 是 Ext3 的改進版,修改了 Ext3 中部分重要的資料結構,而不僅僅像 Ext3 對 Ext2 那樣,隻是增加了一個日志功能而已。Ext4 可以提供更佳的性能和可靠性,還有更為豐富的功能。
- XFS
- 是一種高性能的日志檔案系統,而且是 RHEL 7 中預設的檔案管理系統,它的 優勢在發生意外當機後尤其明顯,即可以快速地恢複可能被破壞的檔案,而且強大的 日志功能隻用花費極低的計算和存儲性能。并且它最大可支援的存儲容量為 18EB, 這幾乎滿足了所有需求。
-
HFS
分層檔案系統(Hierarchical File System,HFS)是一種由蘋果電腦開發,并使用在Mac OS上的檔案系統。最初被設計用于軟碟和硬碟,同時也可以在在隻讀媒體如CD-ROM上見到。
三,使用fdisk分區
在Linux下,最常用的分區工具是fdisk,這個工具簡單高效,可以在最基本的環境下使用。隻有root使用者才可以使用fdisk指令。
1,檢視硬碟及分區資訊
fdisk -l
fdisk分區的各列及其功能如下
列 | 功能 |
Device | 該分區的裝置節點,也作為名稱使用 |
Boot | 代表可引導分區 |
Start End | 分區開始和結束的柱面 |
Blocks | 以大小為1024位元組(1kb)的塊作為計算機關的分區大小 |
Id | 一個兩位的十六進制數,代表分區類型(用途) |
System | Id定義的分區類型的文本名稱 |
常見的Linux分區類型
Id | 标簽 | 标簽說明 |
b | Win95 FAT32 | FAT32檔案系統 |
7 | HPFS/NTFS | HPFS或NTFS檔案系統 |
5 | Extended | 擴充分區 |
83 | Linux | Linux EXT2、EXT3、EXT4、XFS檔案系統 |
82 | Linux SWAP | Linux交換空間 |
fd | Linux raid auto | Linux軟體RAID分區 |
8e | Linux LVM | Linux邏輯卷管理實體卷 |
2,使用fdisk編輯分區表
fdisk的主要功能是修改分區表,fdisk指令後面跟的是裝置,裝置後面不加數字
[root@bigdata ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Command action
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 # 更改分區類型Id
u change display/entry units
v verify the partition table
w write table to disk and exit # 寫入并退出
x extra functionality (experts only)
Command (m for help):
3,添加新分區
當确認磁盤還有未使用的空間時,可以添加新的分區。添加磁盤分區的順序一般是先建立主分區(Primary Partition),再建立擴充分區(Extended Partition),最後建立邏輯分區(Logical Partition)。
在使用fdisk指令時,系統會根據目前的分區情況,提示可以建立的分區類型,fdisk使用p代表主分區,e代表擴充分區,l代表邏輯分區
如果添加的是主分區或擴充分區,則輸入1~4這4個數字中的一個(必須輸入未被使用的數字,可以不按順序),如果添加的是邏輯分區,則編号自動從5開始
(1)添加主分區
添加一個10G大小的主分區,編号為1(因為已經建立過了,這裡再建立一個10G的主分區,編号為2)
[root@bigdata ~]# fdisk /dev/sdb (fdisk + 磁盤号)
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Command action
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)
Command (m for help): n # 添加分區
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p # 選擇主分區
Partition number (2-4, default 2): 2 # 分區号按預設的走,因為已經有1了,接下來是2
First sector (20973568-41943039, default 20973568): # 起始柱面号,使用預設,直接回車
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +5G # 分區容量設定5G 使用“+大小機關”(KB、MB、GB)
Partition 2 of type Linux and of size 5 GiB is set
Command (m for help):
(2)添加擴充分區
建立編号為4的擴充分區,将剩餘空間全部配置設定給擴充分區,在起始柱面和結束柱面中全部選擇預設,按Enter鍵即可
Command (m for help): m
Command action
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)
Command (m for help): n # 建立新分區
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e # 選擇擴充分區
Partition number (3,4, default 3): 4
First sector (31459328-41943039, default 31459328):
Using default value 31459328
Last sector, +sectors or +size{K,M,G} (31459328-41943039, default 41943039):
Using default value 41943039
Partition 4 of type Extended and of size 5 GiB is set
Command (m for help):
(3)添加邏輯分區
在擴充分區上建立一個2G大小的邏輯分區,邏輯分區無須指定編号
Command (m for help): m
Command action
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)
Command (m for help): n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (31461376-41943039, default 31461376):
Using default value 31461376
Last sector, +sectors or +size{K,M,G} (31461376-41943039, default 41943039): +2G
Partition 5 of type Linux and of size 2 GiB is set
Command (m for help):
(4)檢視分區表
在全部分區完成後,可以使用p指令檢視分區表,同時在分區完成後,記得輸入“w”将新的分區表寫入磁盤,否則新的分區表不起任何作用。
[root@bigdata ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a2dc0
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9d40606b
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 31459327 5242880 83 Linux
/dev/sdb4 31459328 41943039 5241856 5 Extended
/dev/sdb5 31461376 35655679 2097152 83 Linux
Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@bigdata ~]#
(5)删除分區
使用d指令,然後輸入需要删除的分區編号即可删除該分區,注意不能直接删除擴充分區,隻有将邏輯分區全部删除後才可删除擴充分區。
[root@bigdata ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Command action
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)
Command (m for help): d
Partition number (1,2,4,5, default 5): 2
Partition 2 is deleted
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@bigdata ~]#
再查一下分區清單,删除的已經不見了
[root@bigdata ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a2dc0
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9d40606b
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb4 31459328 41943039 5241856 5 Extended
/dev/sdb5 31461376 35655679 2097152 83 Linux
Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@bigdata ~]#
四,檔案系統管理
在分區完成後,硬碟仍然無法使用,需要格式化之後才能使用。格式化就是在指定的磁盤建立檔案系統。
1,建立檔案系統
建立檔案系統使用mkfs指令,在終端輸入mkfs後,按兩次Tab鍵,執行結果如下
[root@bigdata ~]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
mkfs指令把常用的檔案系統用字尾的方式儲存成多個指令檔案,使用起來非常簡單,格式如下
mkfs [-t 檔案系統類型] [選項] 分區名稱
在/dev/sdb1上建立XFS檔案系統,指令如下(示例)
mkfs.xfs /dev/sdb1
在dev/sdb1上建立EXT4檔案系統,指令如下(實踐)
[root@bigdata ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 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
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@bigdata ~]#
2,挂載與解除安裝
在完成分區和格式化操作後,就需要挂載并使用裝置了,這個操作過程非常簡單,首先建立一個目錄作為挂載點,然後使用mount指令将儲存設備與挂載點進行關聯。當挂載的磁盤不再使用時,若要恢複挂載點目錄的原有功能,則可以使用umount指令解除安裝裝置。
(1)挂載裝置
使用mount指令,在挂載前必須确認挂載點目錄存在,并且挂載點目錄目前沒有被使用,在挂載後目錄内原來的檔案會隐藏,mount指令格式如下
mount [選項] 裝置 挂載點
常用選項說明
- -t type 指定檔案系統的類型,通常不必指定,mount會自動選擇正确的類型
- -a 挂載fstab檔案中所有的檔案系統
- -r 以隻讀方式挂載
- -o options 主要用來描述裝置或檔案的挂載方式
常用參數說明如下
- loop 用來把一個檔案當成硬碟分區挂載到系統上
- ro 采用隻讀方式挂載裝置
- rw 采用讀寫方式挂載裝置
注:loop裝置是一種僞裝置,或者說是仿真裝置,它能使使用者像塊裝置一樣通路一個檔案。挂載就是将一個loop裝置和一個檔案進行連接配接,給使用者提供一個類塊裝置檔案的接口。
# 将CD光牒挂載到/mnt挂載點
mount -o loop,ro -t iso9660 /dev/sr0 /mnt
# 将U盤挂載到/mnt/usb挂載點,U盤為FAT32格式
mount -t vfat /dev/sdc1 /mnt/usb
建立一個挂載點,并将裝置挂載到挂載點
mkdir /test
[root@bigdata ~]# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.1G 16G 6% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.6G 0 3.6G 0% /dev/shm
tmpfs 3.6G 12M 3.6G 1% /run
tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 727M 0 727M 0% /run/user/0
[root@bigdata ~]# mount /dev/sdb1 /test
[root@bigdata ~]# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.1G 16G 6% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.6G 0 3.6G 0% /dev/shm
tmpfs 3.6G 12M 3.6G 1% /run
tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 727M 0 727M 0% /run/user/0
/dev/sdb1 9.8G 37M 9.2G 1% /test
(2)解除安裝裝置
解除安裝裝置使用umount指令,在解除安裝前必須确認磁盤不再使用,umount指令格式如下
umount [選項] [檔案系統]
常用選項及參數說明如下
- -a 解除安裝/etc/mtab中記錄的所有檔案系統
- -n 在解除安裝時不将資訊存入/etc/mtab檔案中
- -r 若無法成功解除安裝,則嘗試以隻讀的方式重新挂載檔案系統
- -v 在執行時顯示詳細的步驟
- [檔案系統] 除了直接指定檔案系統,也可以使用裝置名稱或挂載點來表示檔案系統
把前面挂載的/test的挂載點解除安裝掉
[root@bigdata ~]# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.1G 16G 6% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.6G 0 3.6G 0% /dev/shm
tmpfs 3.6G 12M 3.6G 1% /run
tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 727M 0 727M 0% /run/user/0
/dev/sdb1 9.8G 37M 9.2G 1% /test
[root@bigdata ~]# umount -v /dev/sdb1
umount: /test (/dev/sdb1) unmounted
(3)設定自動挂載
使用mount指令挂載的檔案系統,當計算機重新開機或者關機再開時仍然需要再次挂載才可使用,如果希望檔案系統在計算機重新開機時自動挂載,則可以通過修改/etc/fstab檔案來實作。
在/etc/fstab檔案中,每行從左向右有六個由空格隔開的字段,每行描述了一個檔案系統
[root@bigdata ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Sep 8 21:46:59 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=4762d1bc-1779-43ce-af37-fa3725b99c85 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/etc/fstab檔案的各字段說明
字段 | 示例 | 說明 |
1 | /dev/sda2 | 要挂載的裝置(分區号) |
2 | /home | 檔案系統的挂載點 |
3 | xfs | 所挂載檔案系統的類型,可使用auto讓系統自動檢測 |
4 | defaults | 檔案系統的挂載選項,用逗号隔開,例如:async(異步寫入),dev(允許建立裝置檔案),auto(自動載入),rw(讀寫權限),exec(可執行),nouser(普通使用者不可mount),suid(允許含有suid檔案格式),defaults表示同時具備以上參數,是以使用預設defaults。另外,還包括usrquota(使用者配額),grpquota(組配額) |
5 | 提供dump功能來備份洗頭工,0表示不使用dump,1表示使用dump,2也表示使用dump但重要性比1小 | |
6 | 指定計算機啟動時檔案系統的fsck(檔案系統檢查)次序,0表示不檢查,1表示最先檢查,2表示檢查但操作比1遲 |
例如,在以後系統每次運作時,将上述/dev/sdb1分區自動以defaults方式挂載到/test挂載點,可以在/etc/fstab檔案的末行添加如下内容
cat >>/etc/fstab
/dev/sdb1 /test xfs defaults 0 0
[Ctrl+D]
在系統重新開機後,會發現/dev/sdb1分區已經自動挂載,mount -a 指令會逐行讀取/etc/fstab檔案,并挂載所有該檔案内的分區裝置,同時mount -a 指令在系統啟動時會自動執行。
注:Linux下還有一個/etc/mtab檔案,用來記錄目前系統的挂載資訊,每次系統執行mount和umount指令都會更新/etc/mtab檔案的内容,讀者可自行驗證。
作者:樊同學