1. 程式人生 > >Linux7/Centos7磁盤分區、格式化及LVM管理

Linux7/Centos7磁盤分區、格式化及LVM管理

Linux Centos 系統 運維

RHEL7如何對磁盤進行分區和格式化以及如何配置LVM,與以前版本的RHEL區別不大,可以通過disk工具(在圖形桌面中運行)或命令工具(如:fdisk、gdisk、parted)管理硬盤設備。fdisk可以配置MBR格式; gdisk配置gpt格式, parted可以自己選擇。
傳統的硬盤分區都是MBR格式,MBR分區位於0扇區,他一共512字節,前446字節是grub引導程序,這個會在後面學習;中間64字節是分區表,每個分區需要16個字節表示,因此主分區和擴展分區一共只能有4個分區,超過4個的分區只能從擴展分區上再設置邏輯分區來表示。每個分區的大小無法超過2T。 MBR的最後2個字節是結束符號
GPT格式,打破了MBR的限制,可以設置多達128個分區,分區的大小根據操作系統的不同有所變化,但是都突破了2T空間的限制。支持高達 18EB (1EB=1024PB,1PB=1024TB) 的卷大小,允許將主磁盤分區表和備份磁盤分區表用於冗余,還支持唯一的磁盤和分區 ID (GUID)。
與 MBR 分區的磁盤不同,GPT的分區信息是在分區中,而不象MBR一樣在主引導扇區。為保護GPT不受MBR類磁盤管理軟件的危害,GPT在主引導扇區建立了一個保護分區 (Protective MBR)的MBR分區表,這種分區的類型標識為0xEE,這個保護分區的大小在Windows下為128MB,Mac OS X下為200MB,在Window磁盤管理器裏名為GPT保護分區,可讓MBR類磁盤管理軟件把GPT看成一個未知格式的分區,而不是錯誤地當成一個未分區的磁盤
在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲著系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出於兼容性考慮,硬盤的第一個扇區仍然用作MBR,之後才是GPT頭。
GPT的結構如下圖:

技術分享圖片

首先看看當前的硬盤信息
技術分享圖片

可以在/proc/partitions這個文件查看當前的分區

技術分享圖片

先試試MBR格式的分區,fdisk選項如下所示
輸入n,可以創建新的MBR分區,然後輸入p可以顯示當前的分區狀態
重復n的操作,添加其他分區。
註:MBR格式磁盤最多可以創建4個主分區或3個主分區1個擴展分區,在擴展分區中可以創建若幹個邏輯分區。
註意id代表了磁盤的用途,可以通過t來改變

看看分區記錄

技術分享圖片
gdisk和fdisk非常類似
技術分享圖片

創建新分區的時候可以看見可以有128個分區
parted,和前兩個相比,更靈活,可以自行設定MBR或GPT格式和分區
通過mklabel msdos可以設定為MBR格式,然後可以通過mkpart來劃分分區

技術分享圖片
msdos設定為MBR格式,gpt設定為GPT格式
primary代表主分區,extended代表擴展分區,logical代表邏輯分區。
set number flag state用於設置分區的用途,flag:boot、lvm、raid。State:on/off表示開啟或關閉。
parted工具分完區後無需保存,輸入q退出即可。
劃分好分區之後,還需要格式化才能使用。可以通過 mkfs/mkswap來格式化文件系統
#mkfs.xfs /dev/分區設備名或#mkfs -t xfs /dev/分區設備名
可以修改fstab實現自動加載

技術分享圖片
測試是否能自動掛載

技術分享圖片
通過df -h查看已經掛載了的設備
-T選項可以顯示設備的文件系統類
有的掛載點路徑比較長,自動分2行顯示,可以-P強制一行顯示
如同進程有pid,用戶有uid,每個文件系統也有自己的id,稱為uuid,但是不是每個分區都有;如果某個分區沒有文件系統,那麽這個分區是沒有uuid的。
可以通過 blkid(block id)來查看。註意uuid標記的是文件系統,而不是分區。
uuid的好處在於可以通過uuid這個唯一值來掛載系統,
這樣可以避免因為刪除硬盤造成的錯位,sda6變成了sda5等等
技術分享圖片

我們可以通過xfs_admin -U 來手動更改文件系統的uuid
技術分享圖片

附:在目錄裏面可以通過 ls -ld查看目錄的屬性,ls -la查看內容的屬性,但是-ld顯示的目錄大小只有4K,這僅僅是目錄本身的大小,要想查看目錄和其內容的整個大小,可以通過du來查看,如果只想看最終結果,使用-s(summary)就行了

技術分享圖片

下面我們來看看swap分區如何手動創建。swap類似windows的虛擬內存/page file,當內存不足的時候,數據保存在swap中。
有兩種方式可以使用:

第一種單獨用一個分區來作為swap

技術分享圖片

創建一個分區(如:/dev/sdb3),並更改分區ID為82
執行partx –a /dev/sdb命令,使分區修改生效

在分區上創建swap文件系統

技術分享圖片
修改fstab實現自動加載

技術分享圖片

第二種方式是創建一個文件塊,這個文件所占有的空間作為swap使用
技術分享圖片

對於普通的分區,擴展度不高,一旦分區格式化完成,很難靈活的再增加或者減少分區大小。為了解決這個問題,可以使用LVM(邏輯卷)。基本過程是把物理磁盤或者分區初始化稱為物理卷(PV),然後把PV加入VG(卷組),最後在VG上劃分邏輯的分區(LVM),LVM可以當做普通的分區進行格式化和掛載。

將準備的磁盤或分區創建PV

技術分享圖片

可以執行pvdisplay查看PV的詳細信息,pvremove刪除PV
創建完PV,之後,需要創建VG,然後添加PV到VG中

可以通過vgdisplay查看具體的信息,註意PE的Size是4M,這個是增減的最小計算單位
技術分享圖片

註:創建VG時:使用–s選項的作用是在創建時指定PE塊(物理擴展單元)的大小,默認是4M。
如:# vgcreate volGroup03 -s 8M /dev/sdb[12])
我們可以繼續往vg裏面添加新的分區

技術分享圖片

若事先沒有把sdb3轉化為pv,而是直接添加到vg裏面,不過一旦添加了他自動就初始化成pv了。
可以添加當然也可以減少pv。 #vgreduce vg00 /dev/sdb3

VG準備就緒,可以創建了LVM了

技術分享圖片

註意看他的大小其實是112M,因為PE的大小是4M,這個4M是最小單位,不能破開,因此28個PE就是112M

技術分享圖片
技術分享圖片

註:大L可以直接指定大小,小l是指定多少個PE的值

也可以設置剩余空間的百分比

技術分享圖片
刪除邏輯卷 #lvremove/dev/vg00/lv01

對已經創建的邏輯卷,可以當做普通分區一樣格式化和掛載

技術分享圖片

修改/etc/fstab文件實現開機自動掛載。

擴展一個邏輯卷,增加300M,首先要確保卷組有大於300M的空閑空間。

技術分享圖片

執行lvextend擴展邏輯卷大小

技術分享圖片

註意邏輯卷的文件系統仍然是109M沒有改變,我們還需要填充文件系統的空白。
RHEL7可以用xfs_growfs來擴大XFS文件系統,也可以直接用resize2fs 來處理設備

註意的是 XFS系統只能增長,不能減少!因此如果需要減少LVM的話,分區只能使用ext4了

技術分享圖片

執行df查看擴展後的文件系統

技術分享圖片
邏輯卷快照
LVM提供一個極妙的設備,它是snaphot。允許管理員創建一個新的塊裝置,在某個時間點提供了一個精確的邏輯卷副本,快照提供原始卷的靜態視圖LVM 快照通過把文件系統的改變記錄到一個快照分區,因此當你創建一個快照分區時,你不需要使用和你正創建快照的分區一樣大小的分區,所需的空間大小取決於快照的使用,所以沒有可循的方法來設置此大小。如果快照的大小等於原始卷的大小那麽快照永遠可用。
快照是特殊的邏輯卷,只可以對邏輯卷做快照。邏輯卷快照和需要做快照的邏輯卷必須在同一個卷組裏面
現在在我們的系統中有個邏輯卷/devg00/lv00,我們用lvdisplay來查詢一下這個邏輯卷

技術分享圖片
技術分享圖片

可以看到,這個邏輯卷/dev/vg00/lv00的大小是309M。我們將這個邏輯卷/dev/vg00/lv00掛載到/data下面。復制一些數據到/data裏面去。方便等下做試驗

技術分享圖片

現在我們就為邏輯卷/dev/vg00/lv00來做快照

技術分享圖片

執行lvscan查看創建好的邏輯卷

技術分享圖片

可以看到/dev/vg00/lv00是原始邏輯卷,而/dev/vg00/lvsp00是快照

執行lvdisplay或lvs命令查看邏輯信息

技術分享圖片
可以看到邏輯卷快照創建成功了,

註意:這個快照卷建好之後,是不需要格式化也不需要進行掛載的。格式化或掛載都會出現的錯誤提示的。

模擬將原邏輯卷中的數據刪除

技術分享圖片

如何恢復原邏輯卷的數據?有兩方式可以恢復刪除的數據

方式一是先將原邏輯卷卸除掛載#umount /dev/vg00/lv00

然後掛載邏輯卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常訪問數據了

技術分享圖片

方式二可以通過 lvconvert把快照的內容重新寫回原有的lvm

先將原邏輯卷卸除掛載#umount /dev/vg00/lv00

執行lvconvert將快照的數據合並到原邏輯卷 #lvconvert --merge /dev/vg00/lvsp00

最後掛載原邏輯卷,查看數據是否恢復成功

技術分享圖片

註:當我們把原邏輯卷裏面的數據給刪除了,邏輯卷快照裏面的數據還在,所以可以用快照恢復數據。而當我們在邏輯卷裏面添加數據,快照是不會發生改變的,是沒有這個文件的。因為快照只會備份當時邏輯卷的一瞬間。

使用ssm(系統存儲管理器)進行邏輯管理

邏輯卷管理器(LVM)是一種極其靈活的磁盤管理工具,它讓用戶可以從多個物理硬驅創建邏輯磁盤卷,並調整大小,根本沒有停機時間。最新版本的CentOS/RHEL 7現在隨帶系統存儲管理器(又叫ssm),這是一種統一的命令行界面,由紅帽公司開發,用於管理各種各樣的存儲設備。目前,有三種可供ssm使用的卷管理後端:LVM、Btrfs和Crypt

準備ssm,在CentOS/RHEL7上,你需要首先安裝系統存儲管理器。可以通過rpm或yum工具安裝

技術分享圖片

首先我們來檢查關於可用硬盤和LVM卷的信息。下面這個命令將顯示關於現有磁盤存儲設備、存儲池、LVM卷和存儲快照的信息。

#ssm list
技術分享圖片

在這個例子中,有兩個物理設備(“/dev/sda”和“/dev/sdb”)、二個存儲池(“rhel和vg00”),以及存儲池rhel中創建的兩個LVM卷(“dev/rhel/root”和“/dev/rhel/swap”),存儲池vg00中創建的一個LVM卷(/dev/vg00/lv00)。

下面來講解如何通過ssm創建、管理邏輯卷和邏輯卷快照

至少新添加一塊磁盤,執行ssm命令顯示現有磁盤存儲設備、存儲池、LVM卷的信息

技術分享圖片

可以看到有兩塊空閑磁盤(sdc、sdd)

創建新的LVM池/卷

在這個示例中,不妨看一下如何在物理磁盤驅動器上創建新的存儲池和新的LVM卷。如果使用傳統的LVM工具,整個過程相當復雜,需要準備分區,需要創建物理卷、卷組、邏輯卷,最後還要建立文件系統。不過,若使用ssm,整個過程一蹴而就!

下面這個命令的作用是,創建一個名為mypool的存儲池,創建存儲池中名為lv01的500MB大小的LVM卷,使用XFS文件系統格式化卷,並將它掛載到/mnt/test下。

技術分享圖片

驗證ssm創建的結果

技術分享圖片

或執行ssm list
技術分享圖片

將物理磁盤(sdd)添加到LVM池
技術分享圖片

新設備添加到存儲池後,存儲池會自動擴大,擴大多少取決於設備的大小。檢查名為centos的存儲池的大小執行ssm list查看
技術分享圖片

接下來,我們來擴大現有的LVM卷

擴大LVM卷,不妨將/dev/mypool/lv01卷的大小增加300MB。

如果你在存儲池中有額外空間,可以擴大存儲池中現有的磁盤卷。為此,使用ssm命令的resize選項
技術分享圖片

執行ssm list查看擴大後邏輯卷

技術分享圖片

可以看到邏輯卷擴大到800M,即在原來的基礎上增加了300M,但文件系統大小(Fs size)還沒有改變,仍然是原來的大小。

為了讓文件系統識別增加後的卷大小,你需要“擴大”現有的文件系統本身。有不同的工具可用來擴大現有的文件系統,這取決於你使用哪種文件系統。比如說,有面向EXT2/EXT3/EXT4的resize2fs、面向XFS的xfs_growfs以及面向Btrfs的btrfs,不一而足。

在這個例子中,我們使用CentOS 7,XFS文件系統在默認情況下創建。因而,我們使用xfs_growfs來擴大現有的XFS文件系統。

技術分享圖片

擴大XFS文件系統後,查看結果
技術分享圖片

或執行#df -hT
技術分享圖片

可以看到LVM擴展成功

邏輯卷快照

對現有的LVM卷(比如/dev/mypool/lv01)生成快照

一旦快照生成完畢,它將作為一個特殊的快照卷存儲起來,存儲了原始卷中生成快照時的所有數據

技術分享圖片
技術分享圖片
技術分享圖片

每次原LVM中的數據更改,都可以手動執行ssm snapshot生成快照

當原LVM數據損壞就可以用快照恢復了

方式一是先將原邏輯卷卸除掛載 #umount /dev/vg00/lv00

然後掛載邏輯卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常訪問數據了

技術分享圖片

方式二可以通過 lvconvert把快照的內容重新寫回原有的lvm

先將原邏輯卷卸除掛載#umount /dev/vg00/lv00

執行lvconvert將快照的數據合並到原邏輯卷 #lvconvert --merge /dev/vg00/lvsp00

最後掛載原邏輯卷,查看數據是否恢復成功

技術分享圖片

有關ssm的具體用法可以參考ssm的幫助手刪頁

如:刪除LVM卷#ssm remove <volume>

刪除存儲池#ssm remove <pool-name>

如果對此有興趣,請掃下面二維碼免費獲取更多詳情
技術分享圖片

Linux7/Centos7磁盤分區、格式化及LVM管理