Linux磁盤(pán)管理與LVM用法及說(shuō)明
在Linux運(yùn)維的日常工作中,磁盤(pán)管理是繞不開(kāi)的核心技能。無(wú)論是新服務(wù)器上架后的磁盤(pán)初始化、業(yè)務(wù)增長(zhǎng)后的分區(qū)擴(kuò)容,還是解決系統(tǒng)磁盤(pán)空間不足的緊急故障,掌握磁盤(pán)管理的全流程操作都能讓你從容應(yīng)對(duì)。
一、磁盤(pán)的“底層邏輯”:物理結(jié)構(gòu)與數(shù)據(jù)組織
要學(xué)好磁盤(pán)管理,首先得知道磁盤(pán)到底是怎么存儲(chǔ)數(shù)據(jù)的。
我們可以把一塊物理硬盤(pán)想象成一個(gè)“數(shù)據(jù)倉(cāng)庫(kù)”,只有搞清楚倉(cāng)庫(kù)的“建筑結(jié)構(gòu)”,才能高效地存放和取出數(shù)據(jù)。
1.1 硬盤(pán)的物理結(jié)構(gòu):看得見(jiàn)摸得著的部件
一塊機(jī)械硬盤(pán)的核心部件主要包括盤(pán)片、磁頭、主軸電機(jī)、磁臂這幾部分,它們的分工明確,缺一不可:
- 盤(pán)片:這是硬盤(pán)存儲(chǔ)數(shù)據(jù)的“載體”,相當(dāng)于倉(cāng)庫(kù)里的“貨架”。硬盤(pán)通常由多個(gè)盤(pán)片疊加組成,每個(gè)盤(pán)片的上下兩個(gè)表面都能存儲(chǔ)數(shù)據(jù)。盤(pán)片的材質(zhì)是硬質(zhì)合金,表面覆蓋著一層磁性材料,數(shù)據(jù)就是以“磁信號(hào)”的形式記錄在這些磁性材料上的。
- 磁頭:這是硬盤(pán)的“讀寫(xiě)工具”,相當(dāng)于倉(cāng)庫(kù)里的“搬運(yùn)工”。每個(gè)盤(pán)片的每個(gè)表面都對(duì)應(yīng)一個(gè)磁頭,磁頭的作用是讀取盤(pán)片上的磁信號(hào)(讀數(shù)據(jù)),或者向盤(pán)片寫(xiě)入磁信號(hào)(寫(xiě)數(shù)據(jù))。值得注意的是,磁頭在工作時(shí)并不會(huì)直接接觸盤(pán)片表面,而是會(huì)懸浮在盤(pán)片上方極近的距離,這樣可以避免劃傷盤(pán)片。
- 主軸電機(jī):它的作用是帶動(dòng)所有盤(pán)片高速旋轉(zhuǎn),相當(dāng)于給倉(cāng)庫(kù)的“貨架”裝上了“傳送帶”。盤(pán)片的旋轉(zhuǎn)速度越快,磁頭讀寫(xiě)數(shù)據(jù)的效率就越高。常見(jiàn)的硬盤(pán)轉(zhuǎn)速有7200轉(zhuǎn)/分鐘(家用級(jí)硬盤(pán))和15000轉(zhuǎn)/分鐘(企業(yè)級(jí)服務(wù)器硬盤(pán))。
- 磁臂:磁臂是連接磁頭的“機(jī)械手臂”,可以帶動(dòng)磁頭在盤(pán)片的徑向移動(dòng),從而讓磁頭能夠到達(dá)盤(pán)片的不同位置,讀取或?qū)懭氩煌瑓^(qū)域的數(shù)據(jù)。
1.2 硬盤(pán)的數(shù)據(jù)結(jié)構(gòu):看不見(jiàn)但很關(guān)鍵的“存儲(chǔ)規(guī)則”
盤(pán)片上的數(shù)據(jù)并不是雜亂無(wú)章存放的,而是按照嚴(yán)格的規(guī)則組織起來(lái)的,這個(gè)規(guī)則就是硬盤(pán)的數(shù)據(jù)結(jié)構(gòu)。
核心概念包括扇區(qū)、磁道、柱面,這三個(gè)概念是理解磁盤(pán)分區(qū)的基礎(chǔ)。
1.2.1 扇區(qū)(Sector):硬盤(pán)的“最小存儲(chǔ)單元”
扇區(qū)是硬盤(pán)能夠讀寫(xiě)的最小數(shù)據(jù)單位,相當(dāng)于倉(cāng)庫(kù)貨架上的“最小格子”。
每個(gè)扇區(qū)的大小是固定的,默認(rèn)是512字節(jié)。
無(wú)論你向硬盤(pán)寫(xiě)入1字節(jié)還是511字節(jié)的數(shù)據(jù),都會(huì)占用一個(gè)完整的扇區(qū)。
當(dāng)寫(xiě)入的數(shù)據(jù)超過(guò)512字節(jié)時(shí),就會(huì)占用多個(gè)扇區(qū)。
1.2.2 磁道(Track):盤(pán)片上的“同心圓軌跡”
當(dāng)盤(pán)片在主軸電機(jī)的帶動(dòng)下高速旋轉(zhuǎn)時(shí),磁頭會(huì)在盤(pán)片表面劃出一個(gè)同心圓軌跡,這個(gè)軌跡就是磁道。
如果把盤(pán)片想象成一張唱片,磁道就相當(dāng)于唱片上的紋路。
每個(gè)盤(pán)片表面都有數(shù)百條甚至數(shù)千條磁道,磁道的編號(hào)從盤(pán)片的外圈向內(nèi)圈依次遞增。
1.2.3 柱面(Cylinder):多個(gè)盤(pán)片的“同心磁道組”
柱面是一個(gè)“立體概念”,它指的是所有盤(pán)片上半徑相同的磁道組合而成的圓柱面。
比如,每個(gè)盤(pán)片的第100條磁道,組合起來(lái)就是第100個(gè)柱面。
在早期的磁盤(pán)分區(qū)工具中(比如fdisk),分區(qū)的劃分就是以柱面為單位的,因?yàn)檫@樣可以讓磁頭在讀寫(xiě)數(shù)據(jù)時(shí)減少移動(dòng)距離,提高效率。
1.2.4 硬盤(pán)容量的計(jì)算方法
了解了扇區(qū)、磁道、柱面的概念后,我們就能算出一塊硬盤(pán)的理論容量了,公式很簡(jiǎn)單:
硬盤(pán)容量 = 磁頭數(shù) × 柱面數(shù) × 每道扇區(qū)數(shù) × 每扇區(qū)字節(jié)數(shù)
△舉個(gè)例子:一塊硬盤(pán)有4個(gè)磁頭,1000個(gè)柱面,每個(gè)磁道有63個(gè)扇區(qū),每個(gè)扇區(qū)512字節(jié),那么它的容量就是:
4 × 1000 × 63 × 512 = 128,000,000 字節(jié) ≈ 122MB
當(dāng)然,這只是理論容量,實(shí)際硬盤(pán)的標(biāo)稱(chēng)容量會(huì)因?yàn)橛?jì)算方式的不同(廠(chǎng)家按1000進(jìn)制,系統(tǒng)按1024進(jìn)制)而略有差異,這就是為什么我們買(mǎi)的1TB硬盤(pán),在系統(tǒng)中顯示只有931GB左右的原因。
1.3 硬盤(pán)的接口類(lèi)型:硬盤(pán)與主板的“連接橋梁”
硬盤(pán)需要通過(guò)接口與主板連接才能正常工作,不同的接口類(lèi)型決定了硬盤(pán)的傳輸速度和兼容性。
常見(jiàn)的硬盤(pán)接口有以下幾種,我們只需要掌握主流的類(lèi)型即可:
1.3.1 SATA接口:家用與中小企業(yè)服務(wù)器的主流選擇
SATA的全稱(chēng)是串行高級(jí)技術(shù)附件,是目前最普及的硬盤(pán)接口。它的優(yōu)點(diǎn)是傳輸速度快、支持熱插拔、接線(xiàn)簡(jiǎn)單。
SATA接口分為多個(gè)版本,不同版本的傳輸速度不同:
- SATA 1.0:傳輸速度1.5Gbps
- SATA 2.0:傳輸速度3.0Gbps
- SATA 3.0:傳輸速度6.0Gbps
我們?nèi)粘J褂玫墓虘B(tài)硬盤(pán)(SSD)和機(jī)械硬盤(pán)(HDD)大多采用SATA 3.0接口,完全能滿(mǎn)足家用和中小企業(yè)的業(yè)務(wù)需求。
1.3.2 SAS接口:企業(yè)級(jí)服務(wù)器的“性能擔(dān)當(dāng)”
SAS的全稱(chēng)是串行連接SCSI,是專(zhuān)門(mén)為企業(yè)級(jí)服務(wù)器設(shè)計(jì)的接口。
它的優(yōu)點(diǎn)是傳輸速度更快、穩(wěn)定性更高、支持多設(shè)備串聯(lián)。
SAS接口的傳輸速度可以達(dá)到12Gbps甚至更高,而且兼容SATA硬盤(pán),這意味著在SAS控制器上可以同時(shí)連接SAS硬盤(pán)和SATA硬盤(pán),靈活性非常高。
1.3.3 NVMe接口:固態(tài)硬盤(pán)的“性能天花板”
NVMe的全稱(chēng)是非易失性?xún)?nèi)存快速訪(fǎng)問(wèn),是專(zhuān)門(mén)為固態(tài)硬盤(pán)設(shè)計(jì)的接口協(xié)議。
與SATA接口不同,NVMe接口直接通過(guò)PCIe總線(xiàn)與CPU通信,跳過(guò)了傳統(tǒng)的南橋芯片,大大降低了數(shù)據(jù)傳輸?shù)难舆t。
NVMe固態(tài)硬盤(pán)的傳輸速度可以達(dá)到3000MB/s以上,是SATA固態(tài)硬盤(pán)的數(shù)倍,目前廣泛應(yīng)用于高性能計(jì)算、游戲主機(jī)等場(chǎng)景。
1.4 Linux系統(tǒng)中的磁盤(pán)設(shè)備命名:如何識(shí)別硬盤(pán)?
在Linux系統(tǒng)中,一切皆文件,硬盤(pán)和分區(qū)也不例外,它們都以文件的形式存在于 /dev 目錄下。
不同接口的硬盤(pán),設(shè)備名的命名規(guī)則也不同,掌握這些規(guī)則,就能快速識(shí)別系統(tǒng)中的硬盤(pán)設(shè)備。
1.4.1 SATA/SAS/USB硬盤(pán)的命名規(guī)則
對(duì)于SATA、SAS接口的硬盤(pán),以及通過(guò)USB連接的移動(dòng)硬盤(pán)/U盤(pán),Linux系統(tǒng)會(huì)以sd 作為設(shè)備名的前綴,后面跟著一個(gè)字母和數(shù)字:
- 字母部分:表示硬盤(pán)的序號(hào),按硬盤(pán)接入系統(tǒng)的順序依次分配,比如 a 代表第一塊硬盤(pán), b 代表第二塊硬盤(pán),以此類(lèi)推。
- 數(shù)字部分:表示硬盤(pán)上的分區(qū)序號(hào),主分區(qū)和擴(kuò)展分區(qū)的序號(hào)是1-4,邏輯分區(qū)的序號(hào)從5開(kāi)始。
舉個(gè)例子:
- /dev/sda :表示系統(tǒng)中的第一塊SATA/SAS硬盤(pán)
- /dev/sda1 :表示第一塊硬盤(pán)的第一個(gè)主分區(qū)
- /dev/sdb5 :表示第二塊硬盤(pán)的第一個(gè)邏輯分區(qū)
- /dev/sdc1 :表示通過(guò)USB連接的第一塊U盤(pán)的第一個(gè)分區(qū)
1.4.2 NVMe固態(tài)硬盤(pán)的命名規(guī)則
對(duì)于NVMe接口的固態(tài)硬盤(pán),Linux系統(tǒng)會(huì)以nvme作為設(shè)備名的前綴,命名規(guī)則相對(duì)復(fù)雜一些:
- /dev/nvme0 :表示系統(tǒng)中的第一塊NVMe固態(tài)硬盤(pán)
- /dev/nvme0n1 :表示第一塊NVMe固態(tài)硬盤(pán)的第一個(gè)命名空間(可以理解為硬盤(pán)的一個(gè)邏輯分區(qū))
- /dev/nvme0n1p1 :表示第一塊NVMe固態(tài)硬盤(pán)第一個(gè)命名空間的第一個(gè)分區(qū)
1.4.3 傳統(tǒng)IDE硬盤(pán)的命名規(guī)則
IDE接口是比較老舊的硬盤(pán)接口,現(xiàn)在已經(jīng)基本淘汰。
對(duì)于IDE接口的硬盤(pán),Linux系統(tǒng)會(huì)以hd作為設(shè)備名的前綴,比如 /dev/hda 表示第一塊IDE硬盤(pán), /dev/hda2 表示第一塊IDE硬盤(pán)的第二個(gè)主分區(qū)。
現(xiàn)在的Linux系統(tǒng)已經(jīng)很少見(jiàn)到這種命名方式了,只需要了解即可。
二、磁盤(pán)分區(qū)的“核心”:MBR與GPT分區(qū)表詳解
買(mǎi)到一塊新硬盤(pán)后,我們不能直接往里面寫(xiě)數(shù)據(jù),必須先進(jìn)行分區(qū)。分區(qū)就相當(dāng)于給倉(cāng)庫(kù)劃分不同的“功能區(qū)域”,比如辦公區(qū)、倉(cāng)儲(chǔ)區(qū)、休息區(qū)等。而分區(qū)表就是記錄這些“區(qū)域劃分規(guī)則”的文件,它位于硬盤(pán)的第一個(gè)扇區(qū)(主引導(dǎo)扇區(qū))。
目前主流的分區(qū)表有兩種:MBR分區(qū)表和GPT分區(qū)表,它們的特點(diǎn)和適用場(chǎng)景完全不同。
2.1 MBR分區(qū)表:傳統(tǒng)的分區(qū)方案
MBR的全稱(chēng)是主引導(dǎo)記錄,是一種非常古老的分區(qū)表格式,早在1983年就被提出。它曾經(jīng)是PC機(jī)的標(biāo)準(zhǔn)分區(qū)表格式,直到今天仍然被一些老舊的系統(tǒng)使用。
2.1.1 MBR分區(qū)表的核心特點(diǎn)
1. 分區(qū)數(shù)量限制:MBR分區(qū)表最多支持4個(gè)主分區(qū),或者3個(gè)主分區(qū)+1個(gè)擴(kuò)展分區(qū)。擴(kuò)展分區(qū)本身不能直接使用,必須在擴(kuò)展分區(qū)內(nèi)劃分邏輯分區(qū),邏輯分區(qū)的數(shù)量沒(méi)有限制。這是MBR分區(qū)表最大的缺點(diǎn),因?yàn)殡S著硬盤(pán)容量的增大,4個(gè)主分區(qū)往往不夠用。
2. 容量限制:MBR分區(qū)表只支持最大2TB的硬盤(pán)容量。這是因?yàn)镸BR分區(qū)表用32位二進(jìn)制數(shù)來(lái)記錄扇區(qū)地址,最大能表示的扇區(qū)數(shù)是2^32,乘以每個(gè)扇區(qū)512字節(jié),就是2TB。如果你的硬盤(pán)容量超過(guò)2TB,就不能使用MBR分區(qū)表了。
3. 主引導(dǎo)記錄的組成:MBR分區(qū)表位于硬盤(pán)的第一個(gè)扇區(qū)(扇區(qū)0),這個(gè)扇區(qū)的大小是512字節(jié),包含三個(gè)部分:
- 主引導(dǎo)程序(占446字節(jié)):負(fù)責(zé)引導(dǎo)操作系統(tǒng)啟動(dòng)
- 分區(qū)表(占64字節(jié)):記錄分區(qū)的信息,每個(gè)分區(qū)的信息占16字節(jié),所以最多只能記錄4個(gè)分區(qū)
- 分區(qū)結(jié)束標(biāo)志(占2字節(jié)):固定為 0x55AA ,表示這個(gè)扇區(qū)是有效的主引導(dǎo)扇區(qū)
2.1.2 MBR分區(qū)的類(lèi)型:主分區(qū)、擴(kuò)展分區(qū)、邏輯分區(qū)
MBR分區(qū)表的分區(qū)分為三種類(lèi)型,我們需要搞清楚它們的區(qū)別:
- 主分區(qū):可以直接格式化并掛載使用,也可以安裝操作系統(tǒng)。MBR分區(qū)表最多只能創(chuàng)建4個(gè)主分區(qū)。
- 擴(kuò)展分區(qū):它是一個(gè)“容器”,本身不能直接使用,必須在里面劃分邏輯分區(qū)。擴(kuò)展分區(qū)的作用是突破MBR分區(qū)表“最多4個(gè)分區(qū)”的限制。
- 邏輯分區(qū):在擴(kuò)展分區(qū)內(nèi)創(chuàng)建的分區(qū),數(shù)量沒(méi)有限制,可以直接格式化并掛載使用。邏輯分區(qū)的編號(hào)從5開(kāi)始,比如 /dev/sda5 、 /dev/sda6 等。
舉個(gè)例子:如果我們有一塊500GB的MBR硬盤(pán),想要?jiǎng)澐?個(gè)分區(qū),就可以這樣操作:創(chuàng)建3個(gè)主分區(qū)+1個(gè)擴(kuò)展分區(qū),然后在擴(kuò)展分區(qū)內(nèi)創(chuàng)建2個(gè)邏輯分區(qū),這樣總共就有5個(gè)可用分區(qū)了。
2.2 GPT分區(qū)表:現(xiàn)代的分區(qū)方案
GPT的全稱(chēng)是全局唯一標(biāo)識(shí)分區(qū)表,是為了解決MBR分區(qū)表的缺點(diǎn)而設(shè)計(jì)的。它是目前主流的分區(qū)表格式,支持大容量硬盤(pán)和更多的分區(qū)數(shù)量,是新裝機(jī)和服務(wù)器系統(tǒng)的首選。
2.2.1 GPT分區(qū)表的核心特點(diǎn)
1. 分區(qū)數(shù)量無(wú)限制(理論上):GPT分區(qū)表在理論上支持創(chuàng)建無(wú)限多個(gè)分區(qū),但實(shí)際上受限于操作系統(tǒng)的限制。比如Windows系統(tǒng)最多支持128個(gè)GPT分區(qū),Linux系統(tǒng)對(duì)GPT分區(qū)的數(shù)量沒(méi)有嚴(yán)格限制,完全能滿(mǎn)足我們的需求。
2. 容量限制極大:GPT分區(qū)表使用64位二進(jìn)制數(shù)來(lái)記錄扇區(qū)地址,最大支持的硬盤(pán)容量是18EB(1EB=1024PB,1PB=1024TB)。這個(gè)容量遠(yuǎn)遠(yuǎn)超過(guò)了目前硬盤(pán)的最大容量,所以對(duì)于我們來(lái)說(shuō),GPT分區(qū)表幾乎沒(méi)有容量限制。
3. 更高的安全性:GPT分區(qū)表有備份機(jī)制,它的分區(qū)表信息不僅存儲(chǔ)在硬盤(pán)的第一個(gè)扇區(qū),還會(huì)存儲(chǔ)在硬盤(pán)的最后一個(gè)扇區(qū)。這樣即使第一個(gè)扇區(qū)的分區(qū)表?yè)p壞,也可以通過(guò)最后一個(gè)扇區(qū)的備份恢復(fù),大大提高了數(shù)據(jù)的安全性。
4. 支持UEFI啟動(dòng):GPT分區(qū)表需要配合UEFI主板使用,才能發(fā)揮最大的優(yōu)勢(shì)。UEFI啟動(dòng)模式相比傳統(tǒng)的BIOS啟動(dòng)模式,啟動(dòng)速度更快,支持更大的硬盤(pán)容量,還能支持安全啟動(dòng)等功能。
2.2.2 MBR與GPT分區(qū)表的對(duì)比:怎么選?
為了方便大家選擇合適的分區(qū)表,我們做一個(gè)簡(jiǎn)單的對(duì)比:
- 特性 MBR分區(qū)表 GPT分區(qū)表
- 最大支持硬盤(pán)容量 2TB 18EB
- 最多支持分區(qū)數(shù)量 4個(gè)主分區(qū) / 無(wú)限邏輯分區(qū) 理論無(wú)限(系統(tǒng)限制128個(gè))
- 啟動(dòng)模式支持 BIOS UEFI+BIOS(部分兼容)
- 安全性 無(wú)備份, 易損壞 有備份,安全性高
- 適用場(chǎng)景 老舊系統(tǒng)、2TB以下硬盤(pán) 新系統(tǒng)、2TB以上硬盤(pán)、服務(wù)器
選擇建議:如果你的硬盤(pán)容量≤2TB,且主板是老式的BIOS,選擇MBR分區(qū)表。
如果你的硬盤(pán)容量>2TB,或者主板支持UEFI,優(yōu)先選擇GPT分區(qū)表。
三、磁盤(pán)分區(qū)工具實(shí)戰(zhàn):fdisk與gdisk的使用方法
了解了分區(qū)表的類(lèi)型后,接下來(lái)我們就要?jiǎng)邮植僮髁?。Linux系統(tǒng)提供了多個(gè)分區(qū)工具,其中fdisk和gdisk是最常用的兩個(gè)。fdisk主要用于MBR分區(qū)表,gdisk主要用于GPT分區(qū)表。下面我們分別講解它們的使用方法。
3.1 fdisk工具:MBR分區(qū)表的“專(zhuān)屬工具”
fdisk是Linux系統(tǒng)中最經(jīng)典的分區(qū)工具,適用于MBR分區(qū)表的創(chuàng)建、修改和刪除。它是一個(gè)命令行工具,操作簡(jiǎn)單,功能強(qiáng)大。
3.1.1 前提條件:確認(rèn)硬盤(pán)設(shè)備名
在使用fdisk之前,我們需要先確認(rèn)要操作的硬盤(pán)設(shè)備名。可以使用 lsblk 或 fdisk -l 命令查看系統(tǒng)中的硬盤(pán)設(shè)備:
lsblk
執(zhí)行命令后,會(huì)顯示系統(tǒng)中所有的塊設(shè)備(硬盤(pán)、U盤(pán)等),比如:
- plaintext
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 500G 0 disk
- sda1 8:1 0 100G 0 part /
- sda2 8:2 0 200G 0 part /data
- sda3 8:3 0 200G 0 part
- sdb 8:16 0 1TB 0 disk
從輸出中可以看到, /dev/sdb 是一塊1TB的硬盤(pán),目前沒(méi)有分區(qū)(沒(méi)有 sd b1 、 sd b2 等子設(shè)備),這就是我們要操作的目標(biāo)硬盤(pán)。
3.1.2 fdisk的基本操作流程
我們以 /dev/sdb 為例,講解如何使用fdisk創(chuàng)建MBR分區(qū)。
步驟1:進(jìn)入fdisk交互界面
- 執(zhí)行以下命令,進(jìn)入fdisk的交互模式,操作目標(biāo)硬盤(pán) /dev/sdb :
- fdisk /dev/sdb
- 執(zhí)行命令后,會(huì)出現(xiàn)提示符 Command (m for help): ,表示已經(jīng)進(jìn)入fdisk的交互界面。輸入 m 可以查看所有可用的命令。
步驟2:查看當(dāng)前分區(qū)表
- 在提示符后輸入 p ,可以查看當(dāng)前硬盤(pán)的分區(qū)表信息:
- Command (m for help): p
- 對(duì)于新硬盤(pán)來(lái)說(shuō),輸出會(huì)顯示 Disk /dev/sdb doesn't contain a valid partition table ,表示硬盤(pán)沒(méi)有有效的分區(qū)表。
步驟3:創(chuàng)建新分區(qū)
在提示符后輸入 n ,開(kāi)始創(chuàng)建新分區(qū)。fdisk會(huì)引導(dǎo)我們完成分區(qū)的創(chuàng)建:
1. 選擇分區(qū)類(lèi)型:輸入 p 表示創(chuàng)建主分區(qū),輸入 e 表示創(chuàng)建擴(kuò)展分區(qū)。這里我們先創(chuàng)建一個(gè)主分區(qū),輸入 p 。
2. 選擇分區(qū)編號(hào):主分區(qū)的編號(hào)范圍是1-4,這里輸入 1 。
3. 設(shè)置起始扇區(qū):直接按回車(chē)鍵,使用默認(rèn)的起始扇區(qū)(通常是2048)。
4. 設(shè)置結(jié)束扇區(qū):可以輸入分區(qū)的大小,比如輸入 +100G 表示創(chuàng)建一個(gè)100GB的分區(qū),然后按回車(chē)鍵。
步驟4:修改分區(qū)類(lèi)型(可選)
- 默認(rèn)情況下,fdisk創(chuàng)建的分區(qū)類(lèi)型是 Linux。如果我們要?jiǎng)?chuàng)建Swap分區(qū),就需要修改分區(qū)類(lèi)型。
- 1. 在提示符后輸入 t ,選擇要修改的分區(qū)編號(hào)(比如 1 )。
- 2. 輸入分區(qū)類(lèi)型代碼:Swap分區(qū)的類(lèi)型代碼是 82 ,輸入 82 即可。
步驟5:保存分區(qū)表并退出
- 所有分區(qū)創(chuàng)建完成后,在提示符后輸入 w ,保存分區(qū)表并退出fdisk交互界面。如果不想保存修改,輸入 q 可以直接退出。
步驟6:讓系統(tǒng)識(shí)別新分區(qū)
- 保存分區(qū)表后,需要讓內(nèi)核重新讀取分區(qū)信息,否則系統(tǒng)可能無(wú)法識(shí)別新創(chuàng)建的分區(qū)。執(zhí)行以下命令:
- partprobe /dev/sdb
- 這個(gè)命令會(huì)通知內(nèi)核更新分區(qū)表,無(wú)需重啟系統(tǒng)。
3.1.3 fdisk的常用命令總結(jié)
在fdisk交互界面中,常用的命令如下,記住這些命令就能應(yīng)對(duì)大部分操作:
- p :查看分區(qū)表信息
- n :創(chuàng)建新分區(qū)
- d :刪除指定分區(qū)
- t :修改分區(qū)類(lèi)型
- w :保存修改并退出
- q :不保存修改并退出
- m :查看幫助信息
3.2 gdisk工具:GPT分區(qū)表的“專(zhuān)屬工具”
gdisk是fdisk的升級(jí)版,專(zhuān)門(mén)用于GPT分區(qū)表的創(chuàng)建和管理。它的操作流程和fdisk類(lèi)似,只是一些細(xì)節(jié)上有所不同。
3.2.1 前提條件:確認(rèn)硬盤(pán)設(shè)備名
同樣,我們需要先確認(rèn)要操作的硬盤(pán)設(shè)備名,比如 /dev/sdc 是一塊2TB的新硬盤(pán),我們要在它上面創(chuàng)建GPT分區(qū)。
3.2.2 gdisk的基本操作流程
步驟1:進(jìn)入gdisk交互界面
- 執(zhí)行以下命令,進(jìn)入gdisk的交互模式,操作目標(biāo)硬盤(pán) /dev/sdc :
- gdisk /dev/sdc
- 執(zhí)行命令后,會(huì)出現(xiàn)提示符 Command (? for help): ,輸入 ? 可以查看所有可用的命令。
步驟2:創(chuàng)建GPT分區(qū)表
- 對(duì)于新硬盤(pán)來(lái)說(shuō),gdisk會(huì)提示 Partition table scan: MBR: not present ,表示硬盤(pán)沒(méi)有MBR分區(qū)表。我們需要?jiǎng)?chuàng)建一個(gè)GPT分區(qū)表,輸入 o :
- Command (? for help): o
- 輸入 y 確認(rèn)創(chuàng)建GPT分區(qū)表,這樣硬盤(pán)就會(huì)被格式化為GPT分區(qū)表格式。
步驟3:創(chuàng)建新分區(qū)
輸入 n 開(kāi)始創(chuàng)建新分區(qū),gdisk會(huì)引導(dǎo)我們完成操作:
- 1. 選擇分區(qū)編號(hào):默認(rèn)從1開(kāi)始,直接按回車(chē)鍵。
- 2. 設(shè)置起始扇區(qū):使用默認(rèn)值,按回車(chē)鍵。
- 3. 設(shè)置結(jié)束扇區(qū):輸入 +200G 表示創(chuàng)建一個(gè)200GB的分區(qū),按回車(chē)鍵。
- 4. 選擇分區(qū)類(lèi)型:默認(rèn)是 Linux filesystem (類(lèi)型代碼8300),直接按回車(chē)鍵即可。如果需要?jiǎng)?chuàng)建其他類(lèi)型的分區(qū),可以輸入對(duì)應(yīng)的類(lèi)型代碼。
步驟4:保存分區(qū)表并退出
- 輸入 w 保存分區(qū)表并退出gdisk交互界面,輸入 y 確認(rèn)保存。然后執(zhí)行 partprobe /dev/sdc 讓系統(tǒng)識(shí)別新分區(qū)。
3.2.3 gdisk與fdisk的操作區(qū)別
gdisk和fdisk的操作流程基本一致,但有幾個(gè)關(guān)鍵點(diǎn)需要注意:
gdisk創(chuàng)建GPT分區(qū)表需要先輸入 o 命令,而fdisk創(chuàng)建MBR分區(qū)表不需要額外命令。
gdisk的分區(qū)類(lèi)型代碼是4位數(shù)字(如8300),而fdisk的分區(qū)類(lèi)型代碼是2位數(shù)字(如83)。
gdisk支持更大的硬盤(pán)容量和更多的分區(qū)數(shù)量,這是它的核心優(yōu)勢(shì)。
四、文件系統(tǒng):給分區(qū)“格式化”的規(guī)則
創(chuàng)建完分區(qū)后,我們還不能直接使用分區(qū),因?yàn)榉謪^(qū)只是一個(gè)“空盒子”,需要給它設(shè)置文件系統(tǒng),才能存儲(chǔ)文件和目錄。
文件系統(tǒng)就相當(dāng)于給盒子設(shè)置的“擺放規(guī)則”,規(guī)定了文件如何命名、如何存儲(chǔ)、如何查找。
4.1 Linux系統(tǒng)中常見(jiàn)的文件系統(tǒng)類(lèi)型
Linux系統(tǒng)支持多種文件系統(tǒng)類(lèi)型,不同的文件系統(tǒng)有不同的特點(diǎn)和適用場(chǎng)景。我們主要掌握以下幾種主流的文件系統(tǒng):
4.1.1 ext4:Linux系統(tǒng)的“傳統(tǒng)主力”
ext4是第四代擴(kuò)展文件系統(tǒng),是ext3的升級(jí)版,也是目前Linux系統(tǒng)中最常用的文件系統(tǒng)之一。它的優(yōu)點(diǎn)是穩(wěn)定性高、兼容性好、支持大容量文件和分區(qū)。
最大支持的單個(gè)文件大小:16TB
最大支持的分區(qū)大?。?EB
適用場(chǎng)景:系統(tǒng)分區(qū)( / )、數(shù)據(jù)分區(qū)等大部分場(chǎng)景
4.1.2 XFS:高性能的“日志型文件系統(tǒng)”
XFS是一種高性能的日志型文件系統(tǒng),由SGI公司開(kāi)發(fā),后來(lái)被納入Linux內(nèi)核。它的優(yōu)點(diǎn)是讀寫(xiě)速度快、支持大容量分區(qū)、恢復(fù)速度快,非常適合用于大文件存儲(chǔ)和高并發(fā)的場(chǎng)景。
最大支持的單個(gè)文件大小:8EB
最大支持的分區(qū)大?。?EB
適用場(chǎng)景:服務(wù)器的數(shù)據(jù)分區(qū)、視頻存儲(chǔ)、數(shù)據(jù)庫(kù)存儲(chǔ)等
4.1.3 Swap:系統(tǒng)的“內(nèi)存擴(kuò)展”
Swap文件系統(tǒng)并不是用來(lái)存儲(chǔ)普通文件的,而是作為虛擬內(nèi)存使用。當(dāng)系統(tǒng)的物理內(nèi)存不足時(shí),內(nèi)核會(huì)將部分不常用的數(shù)據(jù)從物理內(nèi)存轉(zhuǎn)移到Swap分區(qū)中,從而釋放物理內(nèi)存供活躍進(jìn)程使用。
適用場(chǎng)景:所有Linux系統(tǒng)都需要?jiǎng)?chuàng)建Swap分區(qū),建議大小為物理內(nèi)存的1.5-2倍(物理內(nèi)存大于8GB時(shí),Swap分區(qū)大小可以等于物理內(nèi)存)。
4.1.4 FAT32/NTFS:與Windows系統(tǒng)的“兼容橋梁”
FAT32:是一種老舊的文件系統(tǒng),支持跨平臺(tái)使用(Linux和Windows都能識(shí)別),但缺點(diǎn)是最大支持單個(gè)文件4GB,最大支持分區(qū)32GB。適合用于U盤(pán)等小型存儲(chǔ)設(shè)備。
NTFS:是Windows系統(tǒng)的主流文件系統(tǒng),支持大容量文件和分區(qū)。Linux系統(tǒng)需要安裝 ntfs-3g 工具才能識(shí)別和讀寫(xiě)NTFS分區(qū),適合用于與Windows系統(tǒng)共享數(shù)據(jù)的場(chǎng)景。
4.2 格式化分區(qū):創(chuàng)建文件系統(tǒng)的命令
格式化分區(qū)的命令是 mkfs (make filesystem的縮寫(xiě)),不同的文件系統(tǒng)有不同的命令選項(xiàng)。下面我們講解常用文件系統(tǒng)的格式化命令。
4.2.1 格式化ext4文件系統(tǒng)
使用 mkfs.ext4 命令格式化分區(qū)為ext4文件系統(tǒng),比如格式化 /dev/sdb1 :
mkfs.ext4 /dev/sdb1
執(zhí)行命令后,系統(tǒng)會(huì)自動(dòng)在分區(qū)上創(chuàng)建ext4文件系統(tǒng),過(guò)程中會(huì)顯示一些進(jìn)度信息,等待完成即可。
4.2.2 格式化XFS文件系統(tǒng)
使用 mkfs.xfs 命令格式化分區(qū)為XFS文件系統(tǒng),比如格式化 /dev/sdb2 :
mkfs.xfs /dev/sdb2
XFS文件系統(tǒng)的格式化速度非???,即使是大容量分區(qū),也能在短時(shí)間內(nèi)完成。
4.2.3 創(chuàng)建Swap文件系統(tǒng)
創(chuàng)建Swap文件系統(tǒng)需要使用 mkswap 命令,比如將 /dev/sdb3 格式化為Swap分區(qū):
mkswap /dev/sdb3
格式化完成后,需要使用 swapon 命令啟用Swap分區(qū):
swapon /dev/sdb3
使用 swapoff /dev/sdb3 命令可以停用Swap分區(qū)。
4.2.4 格式化FAT32文件系統(tǒng)
使用 mkfs.vfat 命令格式化分區(qū)為FAT32文件系統(tǒng),比如格式化U盤(pán)分區(qū) /dev/sdc1 :
mkfs.vfat /dev/sdc1
這個(gè)命令常用于格式化U盤(pán),方便在Linux和Windows系統(tǒng)之間共享數(shù)據(jù)。
4.3 注意事項(xiàng):格式化前的重要提醒
格式化會(huì)清空數(shù)據(jù):格式化分區(qū)會(huì)刪除分區(qū)上的所有數(shù)據(jù),因此在格式化之前,一定要確認(rèn)分區(qū)上沒(méi)有重要數(shù)據(jù),或者已經(jīng)做好了備份。
選擇合適的文件系統(tǒng):根據(jù)分區(qū)的用途選擇合適的文件系統(tǒng),比如系統(tǒng)分區(qū)用ext4或XFS,Swap分區(qū)用Swap,U盤(pán)用FAT32。
不要格式化系統(tǒng)正在使用的分區(qū):比如不要格式化 /dev/sda1 (如果它是系統(tǒng)的根分區(qū)),這樣會(huì)導(dǎo)致系統(tǒng)崩潰。
五、掛載與卸載:讓分區(qū)“真正可用”的關(guān)鍵步驟
格式化完分區(qū)后,我們還需要將分區(qū)掛載到Linux系統(tǒng)的目錄樹(shù)上,才能通過(guò)目錄訪(fǎng)問(wèn)分區(qū)中的數(shù)據(jù)。掛載就相當(dāng)于給分區(qū)分配一個(gè)“入口地址”,這個(gè)地址就是掛載點(diǎn)。
5.1 掛載的基本概念:目錄與分區(qū)的“關(guān)聯(lián)關(guān)系”
Linux系統(tǒng)的目錄樹(shù)是一個(gè)單一的樹(shù)形結(jié)構(gòu),所有的分區(qū)、設(shè)備都需要掛載到這個(gè)樹(shù)形結(jié)構(gòu)的某個(gè)目錄上,才能被訪(fǎng)問(wèn)。
掛載點(diǎn):是一個(gè)普通的目錄,比如 /data 、 /mnt/usb 等。掛載點(diǎn)目錄必須是空目錄,如果目錄中有文件,掛載后這些文件會(huì)被暫時(shí)隱藏,直到分區(qū)被卸載。
臨時(shí)掛載:使用 mount 命令掛載的分區(qū),在系統(tǒng)重啟后會(huì)失效,需要重新掛載。
永久掛載:將掛載信息寫(xiě)入 /etc/fstab 文件,系統(tǒng)開(kāi)機(jī)時(shí)會(huì)自動(dòng)掛載分區(qū),無(wú)需手動(dòng)操作。
5.2 臨時(shí)掛載:mount命令的使用方法
mount 命令是Linux系統(tǒng)中用于掛載分區(qū)的核心命令,基本語(yǔ)法如下:
mount [選項(xiàng)] 設(shè)備名 掛載點(diǎn)
5.2.1 基本掛載操作
我們以 /dev/sdb1 (ext4文件系統(tǒng))為例,講解如何臨時(shí)掛載分區(qū):
步驟1:創(chuàng)建掛載點(diǎn)目錄
首先創(chuàng)建一個(gè)空目錄作為掛載點(diǎn),比如 /data :
sudo mkdir -p /data
p 選項(xiàng)表示如果目錄不存在,就創(chuàng)建它;如果目錄已經(jīng)存在,不會(huì)報(bào)錯(cuò)。
步驟2:執(zhí)行掛載命令
將 /dev/sdb1 掛載到 /data 目錄:
sudo mount /dev/sdb1 /data
執(zhí)行命令后,沒(méi)有報(bào)錯(cuò)就表示掛載成功。此時(shí),訪(fǎng)問(wèn) /data 目錄就相當(dāng)于訪(fǎng)問(wèn) /dev/sdb1 分區(qū)中的數(shù)據(jù)。
5.2.2 掛載時(shí)指定文件系統(tǒng)類(lèi)型
默認(rèn)情況下, mount 命令會(huì)自動(dòng)檢測(cè)分區(qū)的文件系統(tǒng)類(lèi)型,但有時(shí)候檢測(cè)可能不準(zhǔn)確,我們可以通過(guò) -t 選項(xiàng)手動(dòng)指定文件系統(tǒng)類(lèi)型:
sudo mount -t ext4 /dev/sdb1 /data
常用的文件系統(tǒng)類(lèi)型有 ext4 、 xfs 、 vfat 、 swap 等。
5.2.3 掛載FAT32分區(qū)并支持中文文件名
掛載FAT32格式的U盤(pán)時(shí),默認(rèn)可能不支持中文文件名,會(huì)顯示亂碼。我們可以通過(guò) -o 選項(xiàng)添加字符編碼參數(shù),解決中文亂碼問(wèn)題:
sudo mount -t vfat -o iocharset=utf8 /dev/sdc1 /mnt/usb
iocharset=utf8 表示使用UTF-8字符編碼,這樣就能正確顯示中文文件名了。
5.2.4 查看掛載狀態(tài)
執(zhí)行以下命令,可以查看系統(tǒng)中所有已掛載的分區(qū)信息:
df -hT
h 選項(xiàng)表示以人類(lèi)可讀的格式顯示容量, -T 選項(xiàng)表示顯示文件系統(tǒng)類(lèi)型。
輸出示例如下:
- plaintext
- Filesystem Type Size Used Avail Use% Mounted on
- /dev/sda1 ext4 100G 20G 80G 20% /
- /dev/sdb1 ext4 200G 0G 200G 0% /data
- /dev/sdc1 vfat 32G 2G 30G 7% /mnt/usb
從輸出中可以看到, /dev/sdb1 已經(jīng)成功掛載到 /data 目錄,文件系統(tǒng)類(lèi)型是ext4,容量200GB。
5.3 永久掛載:配置/etc/fstab文件
臨時(shí)掛載的分區(qū)在系統(tǒng)重啟后會(huì)失效,要實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)掛載,需要將掛載信息寫(xiě)入 /etc/fstab 文件。
/etc/fstab 是系統(tǒng)的自動(dòng)掛載配置文件,每行記錄一個(gè)掛載項(xiàng)。
5.3.1 /etc/fstab文件的格式
/etc/fstab 文件的每一行包含6個(gè)字段,字段之間用空格或制表符分隔,格式如下:
plaintext
設(shè)備名/UUID 掛載點(diǎn) 文件系統(tǒng)類(lèi)型 掛載參數(shù) dump備份標(biāo)記 fsck自檢順序
詳細(xì)解釋每個(gè)字段的含義:
1. 設(shè)備名/UUID:可以是分區(qū)的設(shè)備名(如 /dev/sdb1 ),也可以是分區(qū)的UUID。推薦使用UUID,因?yàn)樵O(shè)備名可能會(huì)隨著硬盤(pán)接入順序的變化而變化,而UUID是唯一的,不會(huì)改變。
2. 掛載點(diǎn):分區(qū)要掛載到的目錄,如 /data 。
3. 文件系統(tǒng)類(lèi)型:如 ext4 、 xfs 、 vfat 等。
4. 掛載參數(shù):常用的參數(shù)有 defaults (默認(rèn)參數(shù))、 ro (只讀掛載)、 rw (讀寫(xiě)掛載)等。 defaults 包含了 rw 、 suid 、 dev 等參數(shù),適合大部分場(chǎng)景。
5. dump備份標(biāo)記: 0 表示不備份, 1 表示需要備份。通常設(shè)置為 0 。
6. fsck自檢順序: 0 表示開(kāi)機(jī)不自檢, 1 表示優(yōu)先自檢(根分區(qū)通常設(shè)置為1), 2 表示其次自檢。非根分區(qū)通常設(shè)置為 2 。
5.3.2 查看分區(qū)的UUID
要使用UUID配置 /etc/fstab ,首先需要查看分區(qū)的UUID。執(zhí)行以下命令:
blkid /dev/sdb1
輸出示例如下:
plaintext /dev/sdb1: UUID="a1b2c3d4-1234-5678-90ab-cdef01234567" TYPE="ext4"
其中, UUID="a1b2c3d4-1234-5678-90ab-cdef01234567" 就是 /dev/sdb1 的UUID。
5.3.3 配置/etc/fstab文件
我們以 /dev/sdb1 為例,配置永久掛載:
步驟1:編輯/etc/fstab文件
使用 vi 編輯器打開(kāi) /etc/fstab 文件:
sudo vi /etc/fstab
步驟2:添加掛載項(xiàng)
在文件末尾添加一行,內(nèi)容如下(替換為你的UUID和掛載點(diǎn)):
plaintext UUID=a1b2c3d4-1234-5678-90ab-cdef01234567 /data ext4 defaults 0 2
步驟3:驗(yàn)證配置是否正確
執(zhí)行以下命令,重新讀取 /etc/fstab 文件,并掛載所有未掛載的分區(qū):
sudo mount -a
如果沒(méi)有報(bào)錯(cuò),就表示配置正確。此時(shí), /dev/sdb1 會(huì)被自動(dòng)掛載到 /data 目錄,系統(tǒng)重啟后也會(huì)自動(dòng)掛載。
5.4 卸載分區(qū):umount命令的使用方法
當(dāng)我們需要拔掉U盤(pán)或者卸載某個(gè)分區(qū)時(shí),需要使用 umount 命令,基本語(yǔ)法如下:
umount 設(shè)備名/掛載點(diǎn)
5.4.1 基本卸載操作
比如卸載掛載在 /data 目錄的分區(qū),可以使用以下兩種命令:
sudo umount /data # 或者 sudo umount /dev/sdb1
兩種命令的效果是一樣的,推薦使用掛載點(diǎn)卸載,因?yàn)樵O(shè)備名可能會(huì)變化。
5.4.2 解決“設(shè)備忙”的問(wèn)題
有時(shí)候執(zhí)行 umount 命令會(huì)提示 device is busy ,表示分區(qū)正在被使用,無(wú)法卸載。解決方法如下:
1. 退出掛載點(diǎn)目錄:如果當(dāng)前終端的工作目錄在掛載點(diǎn)(如 /data ),需要先切換到其他目錄(如 /home ),再執(zhí)行卸載命令。
2. 關(guān)閉使用分區(qū)的進(jìn)程:使用 fuser 命令查看正在使用分區(qū)的進(jìn)程:
sudo fuser -mv /data
然后使用 kill 命令終止這些進(jìn)程,再執(zhí)行卸載命令。
3. 強(qiáng)制卸載(不推薦):使用 umount -f 命令可以強(qiáng)制卸載分區(qū),但可能會(huì)導(dǎo)致數(shù)據(jù)損壞,只建議在緊急情況下使用。
5.5 掛載的常見(jiàn)問(wèn)題與解決方法
1. 掛載后目錄看不到文件:如果掛載點(diǎn)目錄原本有文件,掛載后這些文件會(huì)被隱藏,卸載分區(qū)后才能看到。這是正?,F(xiàn)象,不是故障。
2. 開(kāi)機(jī)后分區(qū)沒(méi)有自動(dòng)掛載:檢查 /etc/fstab 文件的配置是否正確,字段之間的分隔符是否正確,UUID是否寫(xiě)錯(cuò)。執(zhí)行 mount -a 驗(yàn)證配置。
3. FAT32分區(qū)中文文件名亂碼:掛載時(shí)添加 -o iocharset=utf8 參數(shù),即可解決中文亂碼問(wèn)題。
六、LVM邏輯卷管理:動(dòng)態(tài)擴(kuò)容的“終極方案”
傳統(tǒng)的分區(qū)方案有一個(gè)致命的缺點(diǎn):分區(qū)大小一旦創(chuàng)建就無(wú)法動(dòng)態(tài)調(diào)整。如果分區(qū)空間不足,只能備份數(shù)據(jù)后刪除分區(qū),重新創(chuàng)建更大的分區(qū),再恢復(fù)數(shù)據(jù),這個(gè)過(guò)程非常繁瑣。而LVM(邏輯卷管理)就完美解決了這個(gè)問(wèn)題,它可以讓你在不丟失數(shù)據(jù)的情況下,動(dòng)態(tài)調(diào)整分區(qū)的大小,還能將多個(gè)硬盤(pán)的空間合并成一個(gè)大的“存儲(chǔ)池”。
6.1 LVM的核心概念:物理卷、卷組、邏輯卷
LVM的核心是將物理硬盤(pán)/分區(qū)抽象為物理卷,然后將多個(gè)物理卷合并為卷組,最后從卷組中劃分出邏輯卷供用戶(hù)使用。這三個(gè)概念是理解LVM的關(guān)鍵,解釋?zhuān)?/p>
物理卷(PV):相當(dāng)于“磚塊”,是LVM的最小存儲(chǔ)單元,可以是整個(gè)硬盤(pán),也可以是硬盤(pán)上的一個(gè)分區(qū)。
卷組(VG):相當(dāng)于“墻”,由多個(gè)“磚塊”(物理卷)砌成,是一個(gè)大的存儲(chǔ)池。卷組的大小等于所有組成它的物理卷的大小之和。
邏輯卷(LV):相當(dāng)于“墻上的窗戶(hù)”,從“墻”(卷組)中劃分出來(lái)的一塊區(qū)域,可以直接格式化并掛載使用。邏輯卷的大小可以動(dòng)態(tài)調(diào)整,還可以跨多個(gè)物理卷。
6.2 LVM的優(yōu)勢(shì):為什么要使用LVM?
相比傳統(tǒng)的分區(qū)方案,LVM有以下幾個(gè)顯著的優(yōu)勢(shì):
1. 動(dòng)態(tài)擴(kuò)容/縮容:邏輯卷的大小可以根據(jù)需要?jiǎng)討B(tài)調(diào)整,無(wú)需刪除分區(qū)和備份數(shù)據(jù)。
2. 跨磁盤(pán)合并空間:可以將多個(gè)不同大小的硬盤(pán)的空間合并成一個(gè)卷組,然后劃分出邏輯卷,充分利用硬盤(pán)空間。
3. 快照功能:可以為邏輯卷創(chuàng)建快照,用于數(shù)據(jù)備份和恢復(fù)。當(dāng)數(shù)據(jù)損壞時(shí),可以通過(guò)快照恢復(fù)到之前的狀態(tài)。
4. 靈活的管理:可以隨時(shí)添加新的物理卷到卷組中,擴(kuò)展卷組的容量,滿(mǎn)足業(yè)務(wù)增長(zhǎng)的需求。
6.3 LVM的完整操作流程:從創(chuàng)建到擴(kuò)容
下面我們以 /dev/sdb 和 /dev/sdc 兩塊硬盤(pán)為例,講解LVM的完整操作流程,包括創(chuàng)建物理卷、卷組、邏輯卷,以及動(dòng)態(tài)擴(kuò)容邏輯卷。
6.3.1 步驟1:準(zhǔn)備物理卷(PV)
首先,我們需要將硬盤(pán)或分區(qū)轉(zhuǎn)換為物理卷??梢灾苯邮褂谜麄€(gè)硬盤(pán)(如 /dev/sdb ),也可以使用硬盤(pán)上的分區(qū)(如 /dev/sdb1 )。這里我們使用整個(gè)硬盤(pán)。
1. 創(chuàng)建物理卷
執(zhí)行 pvcreate 命令,將 /dev/sdb 和 /dev/sdc 轉(zhuǎn)換為物理卷:
sudo pvcreate /dev/sdb /dev/sdc
執(zhí)行命令后,系統(tǒng)會(huì)在硬盤(pán)上創(chuàng)建LVM的元數(shù)據(jù),標(biāo)記這些硬盤(pán)為物理卷。
2. 查看物理卷信息
執(zhí)行 pvdisplay 命令,可以查看物理卷的詳細(xì)信息:
sudo pvdisplay
輸出會(huì)顯示物理卷的名稱(chēng)、大小、所屬卷組(未分配卷組時(shí)顯示為 [free] )等信息。
6.3.2 步驟2:創(chuàng)建卷組(VG)
卷組是由一個(gè)或多個(gè)物理卷組成的存儲(chǔ)池。我們需要給卷組起一個(gè)名字,比如 vg_data 。
1. 創(chuàng)建卷組
執(zhí)行 vgcreate 命令,將 /dev/sdb 和 /dev/sdc 添加到卷組 vg_data 中:
sudo vgcreate vg_data /dev/sdb /dev/sdc
執(zhí)行命令后,卷組 vg_data 就創(chuàng)建成功了,它的大小等于 /dev/sdb 和 /dev/sdc 的大小之和。
2. 查看卷組信息
執(zhí)行 vgdisplay 命令,可以查看卷組的詳細(xì)信息:
sudo vgdisplay vg_data
輸出會(huì)顯示卷組的名稱(chēng)、大小、剩余空間等信息。
6.3.3 步驟3:創(chuàng)建邏輯卷(LV)
邏輯卷是從卷組中劃分出來(lái)的虛擬分區(qū),我們可以指定邏輯卷的大小和名稱(chēng)。比如創(chuàng)建一個(gè)名為 lv_data 、大小為500GB的邏輯卷。
1. 創(chuàng)建邏輯卷
- 執(zhí)行 lvcreate 命令,創(chuàng)建邏輯卷 lv_data :
- sudo lvcreate -L 500G -n lv_data vg_data
參數(shù)說(shuō)明:
- -L 500G :指定邏輯卷的大小為500GB
- -n lv_data :指定邏輯卷的名稱(chēng)為 lv_data
- vg_data :指定邏輯卷所屬的卷組名稱(chēng)
2. 查看邏輯卷信息
執(zhí)行 lvdisplay 命令,可以查看邏輯卷的詳細(xì)信息:
sudo lvdisplay /dev/vg_data/lv_data
輸出會(huì)顯示邏輯卷的路徑( /dev/vg_data/lv_data 或 /dev/mapper/vg_data-lv_data )、大小、文件系統(tǒng)類(lèi)型等信息。
3. 格式化并掛載邏輯卷
邏輯卷創(chuàng)建完成后,需要格式化并掛載才能使用。比如格式化為XFS文件系統(tǒng),掛載到 /data 目錄:
sudo mkfs.xfs /dev/vg_data/lv_data sudo mkdir -p /data sudo mount /dev/vg_data/lv_data /data
執(zhí)行命令后,邏輯卷就可以正常使用了,訪(fǎng)問(wèn) /data 目錄就相當(dāng)于訪(fǎng)問(wèn)邏輯卷中的數(shù)據(jù)。
4. 配置永久掛載
將邏輯卷的掛載信息寫(xiě)入 /etc/fstab 文件,實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)掛載:
sudo blkid /dev/vg_data/lv_data
獲取UUID后,編輯 /etc/fstab 文件,添加以下內(nèi)容:
plaintext UUID=xxxx-xxxx-xxxx-xxxx /data xfs defaults 0 2
執(zhí)行 mount -a 驗(yàn)證配置。
6.3.4 步驟4:動(dòng)態(tài)擴(kuò)容邏輯卷
當(dāng) /data 目錄的空間不足時(shí),我們可以動(dòng)態(tài)擴(kuò)容邏輯卷,無(wú)需卸載分區(qū)和備份數(shù)據(jù)。假設(shè)卷組 vg_data 還有剩余空間,我們將邏輯卷 lv_data 的大小擴(kuò)容到800GB。
1. 擴(kuò)容邏輯卷
- 執(zhí)行 lvextend 命令,將邏輯卷的大小增加300GB(從500GB擴(kuò)容到800GB):
- sudo lvextend -L +300G /dev/vg_data/lv_data
- 參數(shù) -L +300G 表示增加300GB的容量,如果直接寫(xiě) -L 800G ,表示將邏輯卷的大小設(shè)置為800GB。
2. 刷新文件系統(tǒng)
擴(kuò)容邏輯卷后,文件系統(tǒng)的大小并沒(méi)有自動(dòng)更新,我們需要執(zhí)行對(duì)應(yīng)的命令刷新文件系統(tǒng):
XFS文件系統(tǒng):使用 xfs_growfs 命令,后面跟掛載點(diǎn):
sudo xfs_growfs /data
ext4文件系統(tǒng):使用 resize2fs 命令,后面跟邏輯卷路徑:
sudo resize2fs /dev/vg_data/lv_data
3. 驗(yàn)證擴(kuò)容結(jié)果
執(zhí)行 df -hT /data 命令,查看擴(kuò)容后的分區(qū)大小,確認(rèn)擴(kuò)容成功。
6.3.5 步驟5:添加新的物理卷擴(kuò)展卷組
如果卷組 vg_data 的空間不足,我們可以添加新的硬盤(pán)(如 /dev/sdd )到卷組中,擴(kuò)展卷組的容量。
1. 創(chuàng)建新的物理卷
sudo pvcreate /dev/sdd
2. 將物理卷添加到卷組
sudo vgextend vg_data /dev/sdd
3. 查看卷組信息,確認(rèn)容量增加
sudo vgdisplay vg_data
此時(shí),卷組 vg_data 的容量就增加了 /dev/sdd 的大小,我們可以再次擴(kuò)容邏輯卷。
6.4 LVM的常用命令總結(jié)
LVM的常用命令整理如下:
物理卷(PV)
1. pvcreate /dev/sdb
將目標(biāo)磁盤(pán)或分區(qū)初始化為物理卷,寫(xiě)入LVM元數(shù)據(jù),使其被LVM系統(tǒng)識(shí)別。
2. pvdisplay /dev/sdb
查看指定物理卷的詳細(xì)信息,包括容量、所屬卷組、剩余空間等。
3. pvremove /dev/sdb
刪除物理卷上的LVM元數(shù)據(jù),使其不再被LVM系統(tǒng)識(shí)別,可用于回收磁盤(pán)。
4. pvscan
掃描系統(tǒng)中所有物理卷,快速列出所有可用的物理卷及其狀態(tài)。
卷組(VG)
1. vgcreate vg_data /dev/sdb /dev/sdc
創(chuàng)建名為 vg_data 的卷組,并將 /dev/sdb 和 /dev/sdc 兩個(gè)物理卷加入其中。
2. vgdisplay vg_data
查看指定卷組的詳細(xì)信息,包括總?cè)萘?、已用空間、剩余空間、包含的物理卷等。
3. vgextend vg_data /dev/sdd
將新的物理卷 /dev/sdd 添加到卷組 vg_data 中,擴(kuò)展卷組的總?cè)萘俊?/p>
4. vgreduce vg_data /dev/sdd
從卷組 vg_data 中移除物理卷 /dev/sdd ,需確保該物理卷上無(wú)邏輯卷數(shù)據(jù)。
5. vgremove vg_data
刪除整個(gè)卷組 vg_data ,需先刪除卷組內(nèi)所有邏輯卷才能執(zhí)行。
邏輯卷(LV)
1. lvcreate -L 500G -n lv_data vg_data
在卷組 vg_data 中創(chuàng)建名為 lv_data 、大小為500GB的邏輯卷。
2. lvdisplay /dev/vg_data/lv_data
查看指定邏輯卷的詳細(xì)信息,包括路徑、大小、所屬卷組、文件系統(tǒng)類(lèi)型等。
3. lvextend -L +300G /dev/vg_data/lv_data
為邏輯卷 lv_data 增加300GB容量,也可直接寫(xiě) -L 800G 將容量設(shè)為800GB。
4. lvreduce -L -100G /dev/vg_data/lv_data
為邏輯卷 lv_data 減少100GB容量,需謹(jǐn)慎操作,建議先備份數(shù)據(jù)。
5. lvremove /dev/vg_data/lv_data
刪除指定邏輯卷,需先卸載該邏輯卷的掛載點(diǎn)。
文件系統(tǒng)刷新
1. xfs_growfs /data
刷新XFS文件系統(tǒng)大小,使系統(tǒng)識(shí)別邏輯卷擴(kuò)容后的新容量,需指定掛載點(diǎn)。
2. resize2fs /dev/vg_data/lv_data
刷新ext4文件系統(tǒng)大小,使系統(tǒng)識(shí)別邏輯卷擴(kuò)容后的新容量,需指定邏輯卷路徑。
6.5 LVM的注意事項(xiàng)
1. 縮容需謹(jǐn)慎:邏輯卷的縮容操作比擴(kuò)容復(fù)雜,而且容易導(dǎo)致數(shù)據(jù)損壞。如果需要縮容,建議先備份數(shù)據(jù),然后卸載分區(qū),再執(zhí)行縮容命令,最后刷新文件系統(tǒng)。
2. 快照功能的使用:LVM的快照功能可以為邏輯卷創(chuàng)建一個(gè)“只讀副本”,用于數(shù)據(jù)備份。創(chuàng)建快照的命令是 lvcreate -s -L 10G -n lv_snap /dev/vg_data/lv_data ,其中 -s 表示創(chuàng)建快照。
3. 數(shù)據(jù)備份:雖然LVM的動(dòng)態(tài)擴(kuò)容很方便,但仍然建議定期備份重要數(shù)據(jù),以防意外發(fā)生。
七、磁盤(pán)管理的“避坑指南”:新手常見(jiàn)問(wèn)題與解決方法
在磁盤(pán)管理的操作過(guò)程中,新手很容易遇到各種問(wèn)題。下面我們總結(jié)了一些常見(jiàn)的問(wèn)題和解決方法,幫助大家避開(kāi)這些“坑”。
7.1 問(wèn)題1:fdisk無(wú)法創(chuàng)建大于2TB的分區(qū)
原因:fdisk是用于MBR分區(qū)表的工具,而MBR分區(qū)表最大支持2TB的硬盤(pán)容量。
解決方法:使用gdisk工具創(chuàng)建GPT分區(qū)表,GPT分區(qū)表支持最大18EB的硬盤(pán)容量。
7.2 問(wèn)題2:掛載分區(qū)時(shí)提示“unknown filesystem”
原因:分區(qū)沒(méi)有格式化,或者格式化的文件系統(tǒng)類(lèi)型不被系統(tǒng)識(shí)別。
解決方法:先使用 mkfs 命令格式化分區(qū)為系統(tǒng)支持的文件系統(tǒng)(如ext4、XFS),再執(zhí)行掛載命令。
7.3 問(wèn)題3:umount提示“device is busy”
原因:分區(qū)正在被使用,比如終端的工作目錄在掛載點(diǎn),或者有進(jìn)程正在讀寫(xiě)分區(qū)中的文件。
解決方法:退出掛載點(diǎn)目錄,關(guān)閉使用分區(qū)的進(jìn)程,再執(zhí)行卸載命令。
7.4 問(wèn)題4:邏輯卷擴(kuò)容后,文件系統(tǒng)大小沒(méi)有變化
原因:擴(kuò)容邏輯卷后,沒(méi)有刷新文件系統(tǒng),文件系統(tǒng)仍然使用原來(lái)的大小。
解決方法:根據(jù)文件系統(tǒng)類(lèi)型,執(zhí)行 xfs_growfs (XFS)或 resize2fs (ext4)命令,刷新文件系統(tǒng)大小。
7.5 問(wèn)題5:系統(tǒng)開(kāi)機(jī)后無(wú)法掛載分區(qū),提示“mount: can't find UUID=xxx”
原因: /etc/fstab 文件中填寫(xiě)的UUID錯(cuò)誤,或者分區(qū)的UUID發(fā)生了變化。
解決方法:使用 blkid 命令重新查看分區(qū)的UUID,修改 /etc/fstab 文件中的UUID,然后執(zhí)行 mount -a 驗(yàn)證配置。
八、總結(jié):磁盤(pán)管理的核心流程與學(xué)習(xí)建議
8.1 磁盤(pán)管理的核心流程
通過(guò)本文的學(xué)習(xí),我們可以總結(jié)出Linux磁盤(pán)管理的核心流程:
- 1. 磁盤(pán)初始化:了解磁盤(pán)的物理結(jié)構(gòu)和接口類(lèi)型,識(shí)別系統(tǒng)中的磁盤(pán)設(shè)備。
- 2. 分區(qū)操作:根據(jù)需求選擇MBR或GPT分區(qū)表,使用fdisk或gdisk工具創(chuàng)建分區(qū)。
- 3. 格式化分區(qū):使用 mkfs 命令為分區(qū)創(chuàng)建文件系統(tǒng)。
- 4. 掛載分區(qū):使用 mount 命令臨時(shí)掛載分區(qū),或配置 /etc/fstab 實(shí)現(xiàn)永久掛載。
- 5. 動(dòng)態(tài)擴(kuò)容:使用LVM邏輯卷管理,實(shí)現(xiàn)分區(qū)的動(dòng)態(tài)擴(kuò)容,滿(mǎn)足業(yè)務(wù)增長(zhǎng)需求。
掌握了磁盤(pán)管理的技能,你就能從容應(yīng)對(duì)Linux系統(tǒng)中的各種存儲(chǔ)問(wèn)題,為后續(xù)的運(yùn)維工作打下堅(jiān)實(shí)的基礎(chǔ)。希望本文能幫助你真正吃透Linux磁盤(pán)管理,成為一名合格的Linux運(yùn)維工程師!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux使用其他用戶(hù)(非root用戶(hù))設(shè)置root權(quán)限及免密(Centos7為例)
這篇文章主要介紹了Linux使用其他用戶(hù)(非root用戶(hù))設(shè)置root權(quán)限及免密(Centos7為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
在Linux下以www-data用戶(hù)運(yùn)行Crontab的方法步驟
在Linux系統(tǒng)中,cron守護(hù)進(jìn)程用于定時(shí)執(zhí)行命令或腳本,默認(rèn)情況下,cron作業(yè)以root用戶(hù)運(yùn)行,但是,有時(shí)需要以非root用戶(hù)的身份運(yùn)行cron作業(yè),例如 www-data 用戶(hù),在本文中,我們將討論在Linux系統(tǒng)中以www-data用戶(hù)的身份運(yùn)行crontab的正確方法2025-12-12
Linux Bash調(diào)用Python和Java代碼過(guò)程
本文介紹了如何在Linux和Windows系統(tǒng)中使用Bash調(diào)用Python和Java程序,并詳細(xì)解釋了Bash腳本中的命令與路徑判斷、調(diào)用Python和Java代碼以及重點(diǎn)語(yǔ)法解析2025-11-11
ubuntu16.04 升級(jí)內(nèi)核的方法步驟
這篇文章主要介紹了ubuntu16.04 升級(jí)內(nèi)核的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
ubuntu開(kāi)啟SSH服務(wù)遠(yuǎn)程登錄操作的實(shí)現(xiàn)
這篇文章主要介紹了ubuntu開(kāi)啟SSH服務(wù)遠(yuǎn)程登錄操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Linux中部署MeterSphere實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn)
MeterSphere是一站式開(kāi)源持續(xù)測(cè)試平臺(tái), 涵蓋測(cè)試跟蹤、接口測(cè)試、UI 測(cè)試和性能測(cè)試等功能,全面兼容 JMeter、Selenium 等主流開(kāi)源標(biāo)準(zhǔn),有效助力開(kāi)發(fā)和測(cè)試團(tuán)隊(duì)充分利用云彈性進(jìn)行高度可擴(kuò)展的自動(dòng)化測(cè)試,2023-10-10
本文介紹Linux中部署MeterSphere實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn)MeterSphere界面
詳解xshell遠(yuǎn)程連接自動(dòng)斷開(kāi)的問(wèn)題解決辦法
這篇文章主要介紹了詳解xshell遠(yuǎn)程連接自動(dòng)斷開(kāi)的問(wèn)題解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

