什么是LV邏輯卷些阅?
邏輯卷是將一個(gè)或多個(gè)物理分區(qū)或塊設(shè)備整合在一起形成一種邏輯層狐粱∫ㄔⅲ可以使獨(dú)立的硬盤,也可以是獨(dú)立的分區(qū)肌蜻。
邏輯卷結(jié)構(gòu)視圖
上圖畫的或許不是那么標(biāo)準(zhǔn)互墓,但是也能大體看出邏輯卷的結(jié)構(gòu)。下面從下而上簡單說明下:
1."
~]#
" 表示命令提示符
2."#/ /#
" 表示添加的注釋內(nèi)容
1.最下層是有一些硬盤或硬盤分區(qū)等組成宋欺;
2.下數(shù)第二層是物理卷(PV)轰豆;pvcreate
命令是生成物理卷的命令胰伍,后面跟那些物理分區(qū)或塊設(shè)備齿诞;
~]# pvcreate /dev/sd{b1,c,d2,e} #/ pvcreat 命令后面跟要做成物理卷的物理分區(qū)或塊設(shè)備 /#
~]# pvdisplay #/ "pvdisplay" 命令是詳細(xì)列出系統(tǒng)上面每個(gè)物理卷的信息 /#
3.下數(shù)第三層是卷組(VG)酸休;vgcreate
命令是把物理卷做成卷組的命令,后面跟卷組名稱(按實(shí)際情況自定義)和物理卷名稱祷杈;
~]# vgcreate vg0 -s 16M /dev/sd{b1,c,d2,e} #/ "vg0"是給卷組起的名稱斑司;"-s 16M" 是PE值大小 /#
~]# vgdisplay #/ 列出卷組的詳細(xì)信息 /#
4.最上面一層,就是我們的邏輯卷(LV)但汞;lvcreate
是從卷組生成邏輯卷的命令宿刮,后面寫邏輯卷的名稱、邏輯卷的大小和卷組名稱私蕾;
~]# lvcreate -n lv0 -l 666 /dev/vg0 #/ "-n"后面跟邏輯卷的名稱僵缺;"-l"后面跟PE的個(gè)數(shù);最后是卷組名稱踩叭; /#
~]# lvcreate -n lv0 -L 20G /dev/vg0 #/ "-L"大寫的后面是邏輯卷容量大锌某薄(M,G)/#
~]# lvdisplay #/ 列出邏輯卷的詳細(xì)信息 /#
上面差不多已經(jīng)講完了如何生成邏輯卷LV了!剩下的步驟不外乎就是:對LV做文件系統(tǒng)-->創(chuàng)建掛載點(diǎn)-->把LV掛載上去-->正常使用即可
~]# mkfs.ext4 /dev/vg0/lv0 #/ 特別注意:這里的邏輯卷名稱是LV的全名容贝!為什么自脯?請看lvdisplay結(jié)果 /#
~]# mkdir /mnt/lv0 #/ 創(chuàng)建掛載邏輯卷的掛載點(diǎn)目錄 /#
~]# mount /dev/vg0/lv0 /mnt/lv0 #/ 掛載邏輯卷 /#
為什么要用邏輯卷管理?
LVM的重點(diǎn)在于可以彈性調(diào)整文件系統(tǒng)的容量斤富!或者說它有在線可擴(kuò)展性膏潮!
大白話說的話,一個(gè)邏輯卷空間不夠了你可以從卷組中調(diào)出來一部分容量分給它满力;反過來也可以縮減它的空間大小等等可在線擴(kuò)展操作焕参。
以下是從百度百科搬過來的關(guān)于LVM優(yōu)點(diǎn)的說法,說的很對我就借花獻(xiàn)佛了~
LVM與直接使用物理存儲相比,有以下優(yōu)點(diǎn):
1. 靈活的容量
當(dāng)使用邏輯卷時(shí),文件系統(tǒng)可以擴(kuò)展到多個(gè)磁盤上,你可以聚合多個(gè)磁盤或磁盤分區(qū)成單一的邏輯卷.
2.可伸縮的存儲池
你可以使用簡單的命令來擴(kuò)大或縮小邏輯卷大小,不用重新格式化或分區(qū)磁盤設(shè)備.
3.在線的數(shù)據(jù)再分配
你可以在線移動(dòng)數(shù)據(jù),數(shù)據(jù)可以在磁盤在線的情況下重新分配.比如,你可以在線更換可熱插拔的磁盤.
4. 方便的設(shè)備命名
邏輯卷可以按你覺得方便的方式來起任何名稱.
5.磁盤條塊化.
你可以生成一個(gè)邏輯盤,它的數(shù)據(jù)可以被條塊化存儲在2個(gè)或更多的磁盤上.這樣可以明顯提升數(shù)據(jù)吞吐量
6.鏡像卷
邏輯卷提供方便的方法來鏡像你的數(shù)據(jù).
7.卷快照
使用邏輯卷,你可以獲得設(shè)備快照用來一致性備份或者測試數(shù)據(jù)更新效果而不影響真實(shí)數(shù)據(jù).
實(shí)驗(yàn):擴(kuò)展LV容量
下面我做做一個(gè)在線擴(kuò)展LV的實(shí)驗(yàn)體會體會LVM邏輯卷管理的特性還有相關(guān)命令的運(yùn)用
1."
~]#
" 表示命令提示符
2."#/ /#
" 表示添加的注釋內(nèi)容
第一步:用lsblk
命令查看有沒有空閑的硬盤可以讓我們拿來用于增加LV容量
~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
#/---------此處省略----------/#
sdb 8:16 0 20G 0 disk
└─vgtest-lvtest 253:0 0 30G 0 lvm
sdc 8:32 0 50G 0 disk #/ 發(fā)現(xiàn)sdc盤是50G的空間滿足實(shí)驗(yàn)需求 /#
├─sdc1 8:33 0 10G 0 part
│ └─vgtest-lvtest 253:0 0 30G 0 lvm
└─sdc2 8:34 0 5G 0 part
sdd 8:48 0 100G 0 disk
sr0 11:0 1 7.7G 0 rom /run/media/root/CentOS 7 x86_64
查看硬盤信息發(fā)現(xiàn)/dev/sdc
硬盤滿足我們的實(shí)驗(yàn)需求油额!
第二步:用fdisk
命令增加一分區(qū)
在增加分區(qū)的時(shí)候需要注意標(biāo)記新增分區(qū)用途的類別
先分區(qū)~
~]#fdisk /dev/sdc
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): p #/ 這是打印硬盤分區(qū)信息 /#
#/---------此處省略----------/#
Device Boot Start End Blocks Id System
/dev/sdc1 2048 20973567 10485760 8e Linux LVM
/dev/sdc2 20973568 31459327 5242880 83 Linux
Command (m for help): u #/ "u"是切換扇區(qū)和柱面 /#
Changing display/entry units to cylinders (DEPRECATED!).
Command (m for help): n #/ "n"是開始分區(qū) /#
Partition type:
p primary (2 primary, 0 extended, 2 free) #/ 這里的"p"主分區(qū) /#
e extended #/ 這里的"e"擴(kuò)展分區(qū) /#
Select (default p): p #/ 這里我分一個(gè)主分區(qū) /#
Partition number (3,4, default 3): 3 #/ 選擇主分區(qū)編號為3 /#
First cylinder (1959-6527, default 1959):
Using default value 1959
Last cylinder, +cylinders or +size{K,M,G} (1959-6527, default 6527): +10G #/ 分10G大小 /#
Partition 3 of type Linux and of size 10 GiB is set
Command (m for help): t #/ 這是標(biāo)記分區(qū)類別 /#
Partition number (1-3, default 3): 3 #/ 輸入第幾個(gè)分區(qū) /#
Hex code (type L to list all codes): L #/ 大寫"L"可以查看各種分區(qū)類別編號 /#
#/---------此處省略----------/#
Hex code (type L to list all codes): 8e #/ "8e"是用于邏輯卷的分區(qū)類別標(biāo)記 /#
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
#/---------此處省略----------/#
Device Boot Start End Blocks Id System
/dev/sdc1 1 1306 10485760 8e Linux LVM
/dev/sdc2 1306 1959 5242880 83 Linux
/dev/sdc3 1959 3265 10488832 8e Linux LVM
Command (m for help): w #/ "w"是存盤退出 /#
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
同步分區(qū)信息:用partprobe
命令同步并用**`lsblk`**查看分區(qū)信息
~]#partprobe #/ 把分區(qū)信息同步在內(nèi)存里 /#
Warning: Unable to open /dev/sr0 read-write (Read-only file system).
/dev/sr0 has been opened read-only.
~]#lsblk #/ 查看硬盤信息龟糕,是否分區(qū)成功 /#
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
#/---------此處省略----------/#
sdc 8:32 0 50G 0 disk
├─sdc1 8:33 0 10G 0 part
│ └─vgtest-lvtest 253:0 0 30G 0 lvm
├─sdc2 8:34 0 5G 0 part
└─sdc3 8:35 0 10G 0 part
第三步:用pvcreate
命令把/dev/sd3
生成物理卷并用pvdisplay
查看物理卷詳細(xì)信息
先生成物理卷~
~]#pvcreate /dev/sdc3
Physical volume "/dev/sdc3" successfully created.
查看物理卷詳細(xì)信息~
~]#pvdisplay
--- Physical volume ---
#/---------此處省略----------/#
"/dev/sdc3" is a new physical volume of "10.00 GiB" #/ 這里就是我們新生成的物理卷信息 /#
--- NEW Physical volume ---
PV Name /dev/sdc3 #/ 物理卷名稱 /#
VG Name #/ 注意,這里的卷組信息還是空的悔耘,因?yàn)檫€沒劃分給卷組 /#
PV Size 10.00 GiB #/ 新增物理卷大小 /#
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 81cHlt-osRn-I2Lc-faE6-36GN-ShzX-eHTfGJ
第四步:用vgextend
命令把新的物理卷添加至卷組并用vgdisplay
命令查看卷組詳細(xì)信息
開始之前先看看卷組信息讲岁,可以可以做對比,這樣會更直接些衬以。關(guān)鍵點(diǎn)我都有注釋的哦~
~]#vgdisplay
--- Volume group ---
#/---------此處省略----------/#
VG Size 29.97 GiB #/ 卷組大小為30G /#
PE Size 16.00 MiB
Total PE 1918
Alloc PE / Size 1918 / 29.97 GiB
Free PE / Size 0 / 0 #/ 沒有可用PE /#
VG UUID kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9
現(xiàn)在我們開始用vdextend
命令增加卷組容量~
vgextend
命令用于動(dòng)態(tài)擴(kuò)展LVM卷組缓艳,它通過向卷組中添加物理卷來增加卷組的容量。
~]#vgextend vgtest /dev/sdc3 #/ 把物理卷"/dev/sdc3"添加至卷組"vgtest"中 /#
Volume group "vgtest" successfully extended
~]#vgdisplay #/ 查看卷組詳細(xì)信息 /#
--- Volume group ---
VG Name vgtest
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 39.97 GiB #/ 可以看出眷組空間大小從之前只有30G變成目前的40G /#
PE Size 16.00 MiB
Total PE 2558
Alloc PE / Size 1918 / 29.97 GiB
Free PE / Size 640 / 10.00 GiB #/ 這里多出來10G的可用PE /#
VG UUID kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9
第五步:用lvextend
命令增加邏輯卷的容量看峻,并用lvdisplay
查看邏輯卷詳細(xì)信息
同樣在開始之前我們先看看邏輯卷信息阶淘,看看它大小是多少~
~]#lvdisplay
--- Logical volume ---
LV Path /dev/vgtest/lvtest #/ 這才是邏輯卷的名稱 /#
LV Name lvtest
VG Name vgtest
LV UUID 5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
LV Write Access read/write
LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
LV Status available
# open 0
LV Size 29.97 GiB #/ 邏輯卷大小是30G /#
Current LE 1918
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
現(xiàn)在我們開始用lvextend
命令給邏輯卷增加容量就給他增加個(gè)5G容量吧
lvextend命令用于在線擴(kuò)展邏輯卷的空間大小,而不中斷應(yīng)用程序?qū)壿嬀淼脑L問
~]#lvextend -r -L +5G /dev/vgtest/lvtest #/ 給LV新增加5G的容量,注意增加容量時(shí)要有"+"號 /#
#/---------此處省略----------/#
~]#lvdisplay
--- Logical volume ---
LV Path /dev/vgtest/lvtest
LV Name lvtest
VG Name vgtest
LV UUID 5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
LV Write Access read/write
LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
LV Status available
# open 0
LV Size 34.97 GiB #/ 注意到?jīng)]有互妓,從之前的30G變成現(xiàn)在的35G了 /#
Current LE 2238
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
如果還看不出差別的話溪窒,我回過頭去看看卷組的信息坤塞,看看自由PE值是否從10G減少到5G了~
~]#vgdisplay
--- Volume group ---
VG Name vgtest
#/---------此處省略----------/#
Alloc PE / Size 2238 / 34.97 GiB
Free PE / Size 320 / 5.00 GiB #/ 注意到?jīng)]有,從之前的10G變成現(xiàn)在的5G了 /#
VG UUID kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9
結(jié)語:
通過這個(gè)擴(kuò)展LV的實(shí)驗(yàn)我們很直觀的體會到在線管理邏輯卷的優(yōu)勢澈蚌,可以有效避免一些不必要的麻煩摹芙。
當(dāng)然邏輯卷管理除了擴(kuò)展LV還有很多其他功能,例如可以縮減LV避免不必要的空間浪費(fèi)宛瞄、可以移除PV及時(shí)更換老舊的硬盤浮禾、可以跨主機(jī)遷移LV不丟數(shù)據(jù)的前提下脫離老舊主機(jī)遷到新的主機(jī)上等等強(qiáng)大的功能都可以實(shí)現(xiàn)。在這我就不分別做實(shí)驗(yàn)來證明啦~