磁盤分區、格式化及LVM管理java
http://hongge.blog.51cto.com/windows
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個字節是結束符號centos
GPT格式,打破了MBR的限制,能夠設置多達128個分區,分區的大小根據操做系統的不一樣有所變化,可是都突破了2T空間的限制。支持高達 18EB (1EB=1024PB,1PB=1024TB) 的卷大小,容許將主磁盤分區表和備份磁盤分區表用於冗餘,還支持惟一的磁盤和分區 ID (GUID)。ide
與 MBR 分區的磁盤不一樣,GPT的分區信息是在分區中,而不象MBR同樣在主引導扇區。爲保護GPT不受MBR類磁盤管理軟件的危害,GPT在主引導扇區創建了一個保護分區 (Protective MBR)的MBR分區表,這種分區的類型標識爲0xEE,這個保護分區的大小在Windows下爲128MB,Mac OS X下爲200MB,在Window磁盤管理器里名爲GPT保護分區,可以讓MBR類磁盤管理軟件把GPT當作一個未知格式的分區,而不是錯誤地當成一個未分區的磁盤svg
在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲着系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出於兼容性考慮,硬盤的第一個扇區仍然用做MBR,以後纔是GPT頭。工具
GPT的結構以下圖:學習
首先看看當前的硬盤信息測試
能夠在/proc/partitions這個文件查看當前的分區ui
先試試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 快照經過把文件系統的改變記錄到一個快照分區,所以當你建立一個快照分區時,你不須要使用和你正建立快照的分區同樣大小的分區,所需的空間大小取決於快照的使用,因此沒有可循的方法來設置此大小。若是快照的大小等於原始卷的大小那麼快照永遠可用。
快照是特殊的邏輯卷,只能夠對邏輯卷作快照。邏輯卷快照和須要作快照的邏輯卷必須在同一個卷組裏面
如今在咱們的系統中有個邏輯卷/dev/vg00/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/RHEL 7上,你須要首先安裝系統存儲管理器。能夠經過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>