1 使用LVM,硬盤驅動器或硬盤驅動器集合就會分配給一個或多個物理卷(physical volumes),物理卷無法跨越一個以上驅動器。
2 物理卷被合併成邏輯卷組(logical volume group),唯一的例外是 /boot 分區。/boot 分區不能位於邏輯卷組,因爲引導裝載程序無法讀取它。如果你想把 / 分區放在邏輯捲上,你需要創建一個分開的 /boot分區,它不屬於卷組的一部分。
由於物理卷無法跨越多個驅動器,如果你想讓邏輯卷組跨越多個驅動器,你就應該在每個驅動器上創建一個或多個物理卷。
3LVM基本概念
LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。以下LVM相關術語:
(1) 物理存儲介質(The physical media)
這裏指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。
(2) 物理卷(physical volume)
物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
(3) 卷組(Volume Group)
LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
(4)邏輯卷(logical volume)
LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
(5) PE(physical extent)
每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
(6) LE(logical extent)
邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
圖1
從圖1可以看到,PE和LE有着一一對應的關係。一個卷組由一個或多個物理卷組成,邏輯卷建立在卷組上。首先可以看到,物理卷(PV)被由大小等同的基本單元PE組成。邏輯卷就相當於非LVM系統的磁盤分區,可以在其上創建文件系統。
和非LVM系統將包含分區信息的元數據保存在位於分區的起始位置的分區表中一樣,邏輯卷以及卷組相關的元數據也是保存在位於物理捲起始處的VGDA(卷組描述符區域)中。VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。
系統啓動LVM時激活VG,並將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來訪問實際的物理位置。我們也可以按照圖2簡單地去理解。
圖2
4邏輯卷的配置使用
1>.創建和使用新的LVM邏輯卷的步驟:
l 建立LVM類型的分區 (fdisk)
l 建立LVM物理卷 (pv)
l 建立LVM卷組 (vg)
l 建立LVM邏輯卷 (lv)
l 建立文件系統 (mkfs.ext2,3,4)
l 掛載文件系統 (mount)
l 使用文件系統
2>.相關命令:
(1)物理卷相關命令:
pvcreate :創建物理卷
pvscan:在系統的所有磁盤中搜索已存在的物理卷;
pvdisplay顯示指定物理卷的屬性;
pvremove:將數據移到某pv上;
pvmove:刪除某pv
(2)卷組相關命令
vgcreate:創建一個新的vg;
vgmove:刪除卷組;
vgscan:查看總卷組;
vgdisplay:查看單個卷組的詳細情況;
vgextend:把物理卷加入卷組(擴展卷組);
vgreduce:從卷組中刪除某pv(縮減卷組)
(3)邏輯卷相關命令:
lvcreate:創建lv
lvscan:查看邏輯卷;
lvdisplay:顯示邏輯卷的詳細信息;
lvremove:刪除邏輯卷
lvextend:擴展邏輯卷大小
lvreduce:縮減邏輯卷大小
(4)創建快照卷:snapshot
#Lvcreate -L #[nMgGtT] –p r –s –n snapshot_lv_name original_lv_name
-s: 創建快照卷;
-n:快照卷名字
練習:
1.使用fdisk -l 查看分區信息,可以看得到已經有/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8已經被分區好了
[root@chang ~]# fdisk -l Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00089c7b Device Boot Start End Blocks Id System /dev/sda1 * 1 128 1024000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 128 1403 10240000 83 Linux /dev/sda3 1403 2040 5120000 82 Linux swap / Solaris /dev/sda4 2040 15665 109444088+ 5 Extended /dev/sda5 2040 2301 2097727 8e Linux LVM /dev/sda6 2302 2563 2104483+ 8e Linux LVM /dev/sda7 2564 3217 5253223+ 8e Linux LVM /dev/sda8 3218 3610 3156741 8e Linux LVM
2.創建物理卷:
[root@chang ~]# pvdisplay /dev/sda5 Failed to find device "/dev/sda5" [root@chang ~]# pvcreate /dev/sda5 Device /dev/sda5 not found (or ignored by filtering). 發現創建失敗;原因新建分區麼有寫進內核;上一步的時候少一個執行命令。解決辦法: [root@chang ~]# partx -a call: partx -opts [device] wholedisk [root@chang ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 [root@chang ~]# partx -a /dev/sda //partx -a 要用兩次 此時再創建新的物理卷,會看創建成功; [root@chang ~]# pvdisplay /dev/sda5 Failed to find physical volume "/dev/sda5" [root@chang ~]# pvcreate /dev/sda5 Physical volume "/dev/sda5" successfully created [root@chang ~]# pvcreate /dev/sda6 Physical volume "/dev/sda6" successfully created
3.查看兩個物理卷。
[root@chang ~]# pvscan PV /dev/sda5 lvm2 [2.00 GiB] PV /dev/sda6 lvm2 [2.01 GiB] Total: 2 [4.01 GiB] / in use: 0 [0 ] / in no VG: 2 [4.01 GiB]
4.創建卷組:
[root@chang ~]# vgcreate changvg /dev/sda{5,6} Volume group "changvg" successfully created
5.查看卷組:
[root@chang ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "changvg" using metadata type lvm2 [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda6 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] Total: 2 [4.00 GiB] / in use: 2 [4.00 GiB] / in no VG: 0 [0 ]
此時發現物理卷/dev/sda5,/dev/sda6屬於卷組changvg
6.從卷組中刪除一個物理卷:
[root@chang ~]# pvmove /dev/sda6 //刪除物理卷的時候先把之前PV的數據移走 No data to move for changvg [root@chang ~]# vgreduce changvg /dev/sda6 // pvmove只是將數據移走,但是物理卷還在VG中此時只需使用刪除命令把物理卷從VG中刪除就ok啦 Removed "/dev/sda6" from volume group "changvg" [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda6 lvm2 [2.01 GiB] PV /dev/sda7 lvm2 [5.01 GiB] Total: 3 [9.01 GiB] / in use: 1 [2.00 GiB] / in no VG: 2 [7.02 GiB] 使用pvscan可以知道/dev/sda6已經從卷組changvg中刪除
7.增加一個物理卷:
[root@chang ~]# vgextend changvg /dev/sda7 Volume group "changvg" successfully extended [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda7 VG changvg lvm2 [5.01 GiB / 5.01 GiB free] PV /dev/sda6 lvm2 [2.01 GiB] Total: 3 [9.01 GiB] / in use: 2 [7.00 GiB] / in no VG: 1 [2.01 GiB]
8.創建邏輯卷(單位:M):
[root@chang ~]# lvcreate -L 2G -n changlv changvg Logical volume "changlv" created [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit 以同樣的方式在guptVG1上建立guptLV2和guptLV3: [root@chang ~]# lvcreate -L 2G -n changlv1 changvg Logical volume "changlv1" created [root@chang ~]# lvcreate -L 2G -n changlv2 changvg //–L 100m是邏輯卷的大小,-n後面跟的是邏輯卷的名字。 Logical volume "changlv2" created [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv1' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit
9.建文件系統(格式化):
[root@chang ~]# mkfs.ext4 /dev/changvg/changlv [root@chang ~]# mkfs.ext4 /dev/changvg/changlv1 [root@chang ~]# mkfs.ext4 /dev/changvg/changlv2
10.掛載邏輯卷:
先在/tmp下創建changlv,changlv1,changlv2:
[root@chang ~]# mkdir /tmp/changl{v,v1,v2} 再把changlv掛載到/tmp/changlv,把changlv1和changlv2掛載到/tmp/changlv1和/tmp/changlv2上並查看掛載情況: [root@chang ~]# mount /dev/changvg/changlv /tmp/changlv [root@chang ~]# mount /dev/changvg/changlv1 /tmp/changlv1 [root@chang ~]# mount /dev/changvg/changlv2 /tmp/changlv2 [root@chang ~]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext4 (rw) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sr0 on /mnt type iso9660 (ro) /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw) /dev/mapper/changvg-changlv1 on /tmp/changlv1 type ext4 (rw) /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw)
11.自動加載文件系統
在/etc/fstab這個文件中加入以下內容: [root@chang ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Sep 6 02:18:09 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=d5509200-4641-4e0c-a7ff-d424bdc56001 / ext4 defaults 1 1 UUID=fb394fa9-e2a8-4ed2-8cb1-c3728d685f10 /boot ext4 defaults 1 2 UUID=1a25e5fc-d479-445c-a4b4-e01208932468 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/changvg/changlv /tmp/changlv ext4 defaults 0 0 /dev/changvg/changlv1 /tmp/changlv1 ext4 defaults 0 0 /dev/changvg/changlv2 /tmp/changlv2 ext4 defaults 0 0
12.刪除一個邏輯卷
注意在刪除前要先卸載這個邏輯卷。
操作如下:
[root@chang ~]# umount /tmp/changlv1 [root@chang ~]# lvremove /dev/changvg/changlv1 Do you really want to remove active logical volume changlv1? [y/n]: y Logical volume "changlv1" successfully removed [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit
13.擴展、縮減邏輯卷大小
[root@chang ~]# lvextend -L +1G /dev/changvg/changlv Size of logical volume changvg/changlv changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents). Logical volume changlv successfully resized [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [3.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit //以爲只是使用擴展命令就行了嗎。錯了,這只是擴展了邏輯卷,並沒有把物理卷給擴展 [root@chang ~]# e2fsck -f /dev/changvg/changlv //強制檢查lv [root@chang ~]# resize2fs /dev/changvg/changlv //重新定義分區大小 把changlv增少100MB: 縮減邏輯卷恰好跟擴展邏輯卷相反 [root@chang ~]# e2fsck -f /dev/changvg/changlv //強制檢查lv [root@chang ~]# resize2fs /dev/changvg/changlv 100M //縮減邏輯卷 [root@chang ~]# lvreduce -L -100M -n /dev/changvg/changlv //縮減物理邊界 WARNING: Reducing active logical volume to 2.90 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce changlv? [y/n]: y //此時會出現一個對話框(因爲縮減邏輯卷有風險) Size of logical volume changvg/changlv changed from 3.00 GiB (768 extents) to 2.90 GiB (743 extents). Logical volume changlv successfully resized [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.90 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit 然後掛載便可使用: [root@chang ~]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext4 (rw) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sr0 on /mnt type iso9660 (ro) /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw) /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw)
14.創建快照卷:
[root@chang changlv]# cp /etc/fstab ./ [root@chang changlv]# cp /etc/passwd ./ [root@chang changlv]# ls fstab lost+found passwd 先在之前的邏輯卷添加點東西 創建快照卷: [root@chang ~]# lvcreate -L 100M -s -n snap /dev/changvg/changlv Logical volume "snap" created [root@chang ~]# lvscan ACTIVE Original '/dev/changvg/changlv' [2.90 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit ACTIVE Snapshot '/dev/changvg/snap' [100.00 MiB] inherit 掛載快照卷: [root@chang ~]# mkdir /tmp/snap [root@chang ~]# mount /dev/changvg/snap /tmp/snap [root@chang ~]# ls /tmp/snap fstab lost+found passwd //可以看得到快照卷已成功 [root@chang changlv]# rm -rf fstab // 破壞原卷內容 [root@chang changlv]# ls lost+found passwd [root@chang tmp]# cd snap/ [root@chang snap]# ls fstab lost+found passwd //可以看得到雖然原卷已經被破壞了,但是快照卷裏面的東西還在此時只需要回覆快照卷就ok了。