近來,隨着課程的深刻,開始接觸到lvm邏輯卷。由開始的不懂,到如今的半知半懂,慢慢的感覺到了lvm邏輯卷由內而外散發出的魅力。做爲一個小白,爲了能更好地學習和理解lvm邏輯卷的知識,特趁着可貴的休息時間,總結一下本身所學的關於lvm邏輯卷的知識,有錯誤的地方,請各位大神指正,共同窗習!node
本人認爲lvm邏輯卷主要有兩大魅力:數據庫
一、邏輯卷的邊界是可變化的。
bash
二、lvm支持快照(snapshot)。服務器
各位看官彆着急,且聽小生慢慢說來:app
前言ide
首先,讓咱們思考一個問題:爲何會出現LVM技術?
工具
本人是這樣認爲的:對於咱們經常使用PC的人來講,咱們老是不得不對磁盤執行分區。硬盤分區是一種使人厭煩,但公認是使操做系統設置和運行進程不可或缺的一部分。由於要作好工做,就要精確地估計每一個分區須要的空間,因此硬盤分區很煩人。若是估計失誤了,分得太大,會浪費空間;分得太少了,空間又不夠用。爲了解決這個問題,你甚至可能須要執行整個系統備份、將硬盤清除乾淨,而後將全部數據恢復到新的(可能比原來好一些)分區佈局中。對於服務器來講,也是如此。傳統的這種方法極爲不便,不能動態地擴展或縮減分區的大小,因此就有了後來的lvm的出現。佈局
1、lvm、相關概念以及兩大魅力簡介學習
一、lvm簡介 ui
LVM: Logical Volumn Manager (邏輯卷管理器),它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4內核上實現,目前最新版本爲:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版。它於1998年發佈到Linux社區中,它容許你在Linux系統上用簡單的命令行管理一個完整的邏輯卷管理環境。
LVM實質上是將一個或多個底層塊設備組織一個邏輯的工具。
二、lvm重要概念
重要的概念有:Physical volume (PV):物理卷, Physical extent (PE):盤區,Volume group (VG):卷組,Logical volume(LV) :邏輯卷
如下是概念的詳細解釋:
物理存儲介質(The physical media):這裏指系統的存儲設備,如硬盤/分區,是存儲系統最低層的存儲單元。
物理卷(PV) : LVM的基本存儲邏輯塊,通常會把硬盤/分區作成物理卷,甚至底層塊設備是raid也能被作成物理卷。PV不一樣於基本的物理存儲介質(如分區、磁盤等),它包含有與LVM相關的管理參數。(物理卷不能被格式化,它沒有文件系統的概念。)
物理盤區(PE) : 就是一塊磁盤空間,物理卷被劃分紅多個同等大小的PE。大小固定,通常爲4M或8M(一個PE只能屬於一個邏輯卷)。
卷組(VG):LVM卷組徹底相似於擴展分區,不能被直接使用必須進行再次劃分。能夠在卷組上建立一個或多個「LVM分區」(邏輯卷),卷組由多個物理卷(PV)組成。
邏輯卷(LV):LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統,也就是從VG中劃分的邏輯分區。
下面以一個簡單的圖說明一下物理卷、卷組、邏輯卷之間的關係:
建立邏輯卷的過程說明:
(1)先把磁盤/分區轉換爲pv(物理卷)。因爲物理卷沒有文件系統的概念,不能被格式化,因此轉換爲物理卷後,原磁盤/分區的文件系統不能被保留。
(2)建立卷組,把多個物理卷添加到卷組中。實質上,建立卷組會默認或可指定PE的大小,物理卷加入卷組後,會被分割成一個個固定大小的PE。
(3)卷組至關於擴展分區,不能被直接使用,因而要在卷組中建立邏輯卷。實質上,建立指定大小的邏輯卷是在卷組中把可用的多個PE分配給邏輯卷,因爲PE的大小是固定的,因此建立出的邏輯卷的大小會有誤差。由此可知,邏輯卷只能看到卷組中的PE,而沒法看不到底層中有多少塊物理卷。邏輯卷至關於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統。
三、lvm的兩大魅力簡介
到這裏,咱們能夠知道:
(1)因爲lvm可把物理卷分割成PE和劃分邏輯卷的特性,可知lvm邏輯卷的邊界是能夠動態擴展和縮減的。實質上,邏輯卷邊界的動態擴展和縮減是分爲兩層的:物理邊界和邏輯邊界各自的擴展和縮減。這裏不細講,如下會有詳細事例進一步說明。
(2)lvm若是僅有邏輯卷這麼一個功能,就不可能那麼受歡迎了。lvm使人興奮的是,它還支持快照的功能。有了快照後,咱們對於數據庫的備份就會變得很是簡單+easy了。這裏也不細說,如下會進一步說明。
2、lvm邏輯卷建立過程詳解
lvm邏輯卷建立的整個過程大體以下:
分區 --> PV --> VG --> LV --> 將分區格式化(爲分區建立文件系統)--> 掛載邏輯分區
下面,用一個實例來加深各位對lvm的理解。
一、分區
使用分區工具fdisk分區,爲了使其能被lvm支持,須要把分區的系統ID改成8e(注:不把分區的系統ID設爲8e也能將其轉換爲物理卷)。
另外一個分區的建立就不貼圖了,各位小夥伴能夠去嘗試一下,很好玩的!-_-
二、建立物理卷(PV)
[root@localhost ~]# pvcreate /dev/sda3 /dev/sdb1 Physical volume "/dev/sda3" successfully created Physical volume "/dev/sdb1" successfully created
物理卷(pv)相關命令介紹:
pvcreate : 建立pv(物理卷)
pvs, pvdisplay : 查看pv
pvremove : 移除pv
pvmove : 移動pv(把該物理捲上的數據移到卷組的其餘物理捲上)
pvscan : 掃描有哪些pv
三、建立卷組(VG)
[root@localhost ~]# vgcreate -s 8 myvg /dev/sda3 /dev/sdb1 Volume group "myvg" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 10.02g 10.02g vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# vgdisplay --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 10.02 GiB PE Size 8.00 MiB #指定PE的大小爲8M Total PE 1282 Alloc PE / Size 640 / 5.00 GiB Free PE / Size 642 / 5.02 GiB VG UUID 5cHXI4-WSz9-ACFQ-IiQj-iUIW-vcxd-gahSK8
卷組(VG)相關命令介紹:
vgcreate : 建立卷組,-s 選項能夠指定PE的大小
vgs, vgdisplay :查看卷組的信息
vgremove : 移除卷組
vgextend : 擴展卷組的空間
vgreduce : 縮減卷組的空間
縮減卷組中的空間,通常都是經過移除某一個物理捲來完成的。
須要注意的是:
移除卷組中的某一物理卷時,應該先使用pvmove命令把該物理捲上的數據移到卷組上別的分區,而後才用vgreduce命令指定移除該物理卷
vgscan:掃描有哪些卷組
四、建立邏輯卷(LV)
邏輯卷(LV)相關命令介紹:
lvcreate : 建立邏輯卷(lv)
-n lv_name (指定邏輯卷的名稱)
-L #UNIT{mMgGtT} (指定邏輯卷的大小)
lvs,lvdisplay :查看邏輯卷的信息
lvremove : 移除指定的邏輯卷
lvextend : 擴展邏輯卷
lvreduce : 縮減邏輯卷
lvscan :掃描有哪些邏輯卷
五、格式化邏輯卷
mke2fs:用來格式化分區(爲分區建立文件系統)
-t 指定文件系統類型
六、掛載分區
mount :用於掛載分區
掛載mylv邏輯分區後,就能在該邏輯分區上存儲數據了!
怎樣?是否是很簡單啊!好了,下面讓咱們進一步深刻lvm 吧!
如下所講的是咱們高級班的內容,要學請轉入咱們的高級班,只要999元!!!
-_- ,說笑的~
3、邏輯卷的擴展與縮減
lvm存儲空間邊界分爲兩類:
物理邊界:物理磁盤的存儲大小
邏輯邊界:邏輯卷的空間大小
以下圖所示:
內圓範圍是文件系統(邏輯),外圓範圍是存儲空間(物理)。
文件系統是在存儲空間上抹上一層軟件級別的管理方案。於是文件系統空間大小不能大於存儲空間的大小。
所以咱們知道邏輯卷擴展和縮減是有要求的:
擴展:物理 --> 邏輯(先擴展物理卷,而後才擴展邏輯卷。)
縮減:邏輯 --> 物理(先縮減邏輯卷,而後才縮減物理卷。)
縮減不能少於已經存儲的全部數據空間的大小!!!(縮減須謹慎!!!)
一、擴展邏輯卷
(1)先肯定擴展的目標大小;並確保對應的卷組中有足夠的空閒空間可用;
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 1 0 wz--n- 10.02g 5.02g vg0 1 4 0 wz--n- 59.99g 7.99g
(2)擴展物理邊界
增長新的分區:
把分區轉換成PV:
把新的物理卷加入卷組:
[root@localhost ~]# vgextend myvg /dev/sdb2 # vgextend擴展邏輯卷的大小 Volume group "myvg" successfully extended [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 3 1 0 wz--n- 15.02g 10.02g vg0 1 4 0 wz--n- 59.99g 7.99g
擴展物理邊界:
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 5.00g root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost ~]# lvextend -L 10G /dev/myvg/mylv # 注意:-L 10G 是指定擴展後的邏輯卷大小爲10G,並非+10G的意思 Extending logical volume mylv to 10.00 GiB # -L指定的擴展後的邏輯卷大小不能比原來邏輯卷的大小還小 Logical volume mylv successfully resized [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 10.00g root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g
(3)擴展邏輯邊界
[root@localhost ~]# blkid /dev/myvg/mylv # blkid命令能夠查看塊設備的UUID號,也能夠查看該塊設備的文件系統類型 /dev/myvg/mylv: UUID="b9301aad-ca3b-497a-88e2-22e121247914" TYPE="ext4" [root@localhost ~]# resize2fs /dev/myvg/mylv # resize2fs命令表示從新調整文件系統的大小(根據物理邊界的大小,自動調整) resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/myvg/mylv to 2621440 (4k) blocks. The filesystem on /dev/myvg/mylv is now 2621440 blocks long. [root@localhost ~]# blkid /dev/myvg/mylv /dev/myvg/mylv: UUID="b9301aad-ca3b-497a-88e2-22e121247914" TYPE="ext4" [root@localhost ~]# ls /mnt # 擴展邏輯卷mylv後,數據沒丟失 fstab lost+found
二、縮減邏輯卷
注意:a、縮減邏輯卷的操做是很危險的,操做不當,頗有可能會使得數據丟失。請慎重!!!
b、縮減邏輯卷時,邏輯卷要離線,不能處在掛載當中!
(1)先肯定縮減後的目標大小;並確保對應的目標邏輯卷大小中有足夠的空間可容納原有全部數據;
[root@localhost ~]# lvs /dev/myvg/mylv LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 10.00g
(2)先卸載文件系統,並要執行強制檢測
[root@localhost ~]# mount # mount命令能查看當前系統中掛載的設備 /dev/mapper/myvg-mylv on /mnt type ext4 (rw) [root@localhost ~]# umount /dev/myvg/mylv # umount命令可卸載所指定的已掛載的設備 [root@localhost ~]# e2fsck -f /dev/myvg/mylv # e2fsck -f ,強制檢測邏輯卷mylv的文件系統 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/myvg/mylv: 12/655360 files (0.0% non-contiguous), 76784/2621440 blocks
(3)縮減邏輯邊界
[root@localhost ~]# resize2fs /dev/myvg/mylv 5G # 這表示自動調整邏輯卷mylv的文件系統大小到5G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/myvg/mylv to 1310720 (4k) blocks. The filesystem on /dev/myvg/mylv is now 1310720 blocks long.
(4)縮減物理邊界
[root@localhost ~]# lvreduce -L 5G /dev/myvg/mylv # 這表示縮減邏輯卷mylv的存儲空間到5G WARNING: Reducing active logical volume to 5.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce mylv? [y/n]: y # 注意:這裏會提示你當前的操做有可能會使得數據丟失,問你是否要繼續?(想清楚額,後果自付!!!) Reducing logical volume mylv to 5.00 GiB Logical volume mylv successfully resized
(5)從新把邏輯卷掛載上去,查看數據是否丟失
呼!!!看到這裏,各位看官是否是都有點視覺疲勞了?
革命還沒有成功,同志仍須繼續!
不過,寫到這裏篇幅已經不夠了,本人決定另起一篇博客(是這篇博客的續寫)繼續寫下去。
欲知後事如何,且聽下回分解!