在Linux下如何创建LVM及LVM创建过程

Linux LVM创建过程:(我用的是Centos6.8)

一、准备工作:

LVM可以的创建可以在系统安装的过程中创建,也可以在安装完系统之后再创建建,都是可以的,我的是在系统安装完之后创建的,具体的过程如下:

1、/dev/sda1 2G /boot
2、/dev/sda2 7.7G /home
3、/dev/sda3 4G /

我的是在扩展分区下面建立的LVM:

# fdisk /dev/sda

在这里创建两个LVM分区,分别是/dev/sda5与/dev/sda6,接下来就是将这两个实体的分区创建PV。如果要使用LVM的相关命令,必须要安装LVM2(LVM有两个版本,LVM1与LVM2,至于具体的区别,可以自行查阅相关资料)。而且还有可能,刚安装的系统,在执行partprobe命令时会提示:partprobe: command not found

## 由于Partprobe的命令是包含在parted包中的,所以,如果遇到这个提示,直接安装parted即可。


# yum install parted

# yum install lvm2

# partprobe

## 这个命令执行完毕之后不会输出任何返回信息,你可以使用mke2fs命令在新分区上创建文件系统

注意:

该操作必面具体到那个分区,否则无分成功读取分区表

如:
# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.(错误信息,提示重启,但是重启之后也无法成功,因为partprobe需要针对单个新增分区才适当)

正确的操作如下:

# partprobe /dev/sda5

二、PV相关的命令如下:

1)pvcreate:将实体的partition建立成为PV;

2)pvscan:查找目录系统里面任何具有PV的磁盘;

3)pvdisplay:显示出目前系统上面的PV状态;

4)pvmove s_partiton d_partition:将一个PV上面的数据移至另一个PV上
,在减少卷容量时可以用得到。

5)pvremove:将PV属性移除,让该 Partition不具有PV属性

# pvscan
No matching physical volumes found

# pvcreate /dev/sda{5,6}

Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created

# 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]


# pvdisplay
"/dev/sda5" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda5
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID wc0uVD-LfDS-R0ru-bvJV-A7lg-xIBB-Y2r4Xc
....


三、建立VG

1、VG的相关命令如下:
vgcreate:建立VG,-s:接PE的大小,单位可以是m,g,t(大小写均可)
vgscan:查找系统上面是否有VG存在
vgdisplay:显示目前系统上面的VG状态
vgextend VG_Name PV_Name:在VG内增加额外的PV
vgreduce VG_name partition:在VG内移除PV;
vgchange:设定VG是否启动(active);
vgremove:移除一个VG

# vgcreate -s 16 TEST_VG /dev/sda{5,6}
Volume group "TEST_VG" successfully created
## 设定PE=16MB,名称为TEST_VG

# vgdisplay
--- Volume group ---
VG Name TEST_VG
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 3.98 GiB # 2个2GB的分区已经建立为卷组了
PE Size 16.00 MiB
Total PE 255 # 共计255个PE,每个大小为16MB
Alloc PE / Size 0 / 0
Free PE / Size 255 / 3.98 GiB
VG UUID j82j1G-tjBT-WE2w-00RF-1E7V-q3NQ-R302X6

四、创建LV

lvcreate:建立LV。-L:接容量,单位可以是m,g,t。-l:接PE个数,这里需要自己计算空间的大小。-s:创建快照逻辑卷。
lvscan:查询系统上面的LV;
lvdisplay:查询系统上面的LV状态;
lvextend:在LV里面增加容量;
lvreduce:在LV里面减少容量;
lvremove:移除一个LV;
resize2fs[-f][device][size]:-f:强制进行resize的动作
lvresize[-l +/-PE_Num] LV_name:对LV进行容量大小的调整

# lvcreate -l 255 -n lv TEST_VG
Logical volume "lv" created.

## 把查到的VG共有384个PE,并且把所有空间都分给一个逻辑卷“lv”

# lvdisplay
--- Logical volume ---
LV Path /dev/TEST_VG/lv
LV Name lv
VG Name TEST_VG
LV UUID J1dJ50-v3Yk-qOkW-orNy-PY81-8oQT-2K6UHo
LV Write Access read/write
LV Creation host, time lvm.com, 2017-01-06 06:29:52 -0500
LV Status available
# open 0
LV Size 3.98 GiB
Current LE 255
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

五、文件系统格式化挂载

# ll /dev/TEST_VG/lv
lrwxrwxrwx. 1 root root 7 Jan 6 06:29 /dev/TEST_VG/lv -> ../dm-0

# mkfs -t ext3 /dev/TEST_VG/lv

# mkdir /mnt/lvm

# mount /dev/TEST_VG/lv /mnt/lvm/

# df -h /mnt/lvm/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/TEST_VG-lv 4.0G 73M 3.7G 2% /mnt/lvm


# cp -a /etc /var/log /mnt/lvm/

至此LVM已经完全建立起来了。

六、增加LV的容量

# fdisk /dev/sda

新建一个sda7的分区,并且为3G

# partprobe /dev/sda7

# pvcreate /dev/sda7
Physical volume "/dev/sda7" successfully created

# vgextend TEST_VG /dev/sda7
Volume group "TEST_VG" successfully extended

# vgdisplay
--- Volume group ---
VG Name TEST_VG
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
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 6.98 GiB
PE Size 16.00 MiB
Total PE 447
Alloc PE / Size 255 / 3.98 GiB # 之前总共的是255个PE
Free PE / Size 192 / 3.00 GiB # 现在增加了192个个PE,现在总共是447个PE
VG UUID j82j1G-tjBT-WE2w-00RF-1E7V-q3NQ-R302X6


# lvresize -l +192 /dev/TEST_VG/lv
Size of logical volume TEST_VG/lv changed from 3.98 GiB (255 extents) to 6.98 GiB (447 extents).
Logical volume lv successfully resized.

# df -h /mnt/lvm
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/TEST_VG-lv 4.0G 98M 3.7G 3% /mnt/lvm

# resize2fs /dev/TEST_VG/lv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/TEST_VG/lv is mounted on /mnt/lvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/TEST_VG/lv to 1830912 (4k) blocks.
The filesystem on /dev/TEST_VG/lv is now 1830912 blocks long.


# df -h /mnt/lvm/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/TEST_VG-lv 6.9G 99M 6.5G 2% /mnt/lvm

## 而且里面的数据没有发生任何变化

七、减小LV的容量

# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name TEST_VG
PV Size 2.00 GiB / not usable 16.28 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 127
Free PE 0
Allocated PE 127
PV UUID wc0uVD-LfDS-R0ru-bvJV-A7lg-xIBB-Y2r4Xc

# pvscan
PV /dev/sda5 VG TEST_VG lvm2 [1.98 GiB / 0 free]
PV /dev/sda6 VG TEST_VG lvm2 [2.00 GiB / 0 free]
PV /dev/sda7 VG TEST_VG lvm2 [3.00 GiB / 0 free]
Total: 3 [6.98 GiB] / in use: 3 [6.98 GiB] / in no VG: 0 [0 ]

## 扣除要抽离的/dev/sda5,剩下的容量将会是5GB

# umount /mnt/lvm/

# resize2fs /dev/TEST_VG/lv 5000M
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/TEST_VG/lv' first.

# 提示先执行一下e2fsck

# e2fsck -f /dev/TEST_VG/lv
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/TEST_VG/lv: 1019/456960 files (0.1% non-contiguous), 53932/1830912 blocks

# resize2fs /dev/TEST_VG/lv 5000M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/TEST_VG/lv to 1280000 (4k) blocks.
The filesystem on /dev/TEST_VG/lv is now 1280000 blocks long.

# mount /dev/TEST_VG/lv /mnt/lvm/
# df -h /mnt/lvm/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/TEST_VG-lv 4.9G 98M 4.5G 3% /mnt/lvm

# 这里的容量是变小了,但是/dev/sda5还没有抽离出来

# lvresize -l -127 /dev/TEST_VG/lv

## 通过display查看,知道/dev/sda5有127个PE

WARNING: Reducing active and open logical volume to 5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce TEST_VG/lv? [y/n]: y
Size of logical volume TEST_VG/lv changed from 6.98 GiB (447 extents) to 5.00 GiB (320 extents).
Logical volume lv successfully resized.

# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name TEST_VG
PV Size 2.00 GiB / not usable 16.28 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 127
Free PE 0
Allocated PE 127
PV UUID wc0uVD-LfDS-R0ru-bvJV-A7lg-xIBB-Y2r4Xc

--- Physical volume ---
PV Name /dev/sda6
VG Name TEST_VG
PV Size 2.01 GiB / not usable 7.16 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 128
Free PE 0
Allocated PE 128
PV UUID OFnfyJ-Xe4d-qbn3-4Yw0-84LW-jBtL-9rYgfi

--- Physical volume ---
PV Name /dev/sda7
VG Name TEST_VG
PV Size 3.01 GiB / not usable 10.75 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 192
Free PE 127 # 新释放出来PE全部在/dev/sda7上面
Allocated PE 65
PV UUID SXVl3a-lJk8-Dh3p-uyLt-WCFQ-t3G6-sPb02G

## 从这里证明了LVM线性数据存储方式,因为我们要抽离的是/dev/sda5,所以我们要把数据从/dev/sda5转移到/dev/sda7上面

# pvmove /dev/sda5 /dev/sda7
/dev/sda5: Moved: 0.0%
/dev/sda5: Moved: 16.5%
/dev/sda5: Moved: 35.4%
/dev/sda5: Moved: 52.0%
/dev/sda5: Moved: 70.1%
/dev/sda5: Moved: 88.2%
/dev/sda5: Moved: 100.0%

# vgreduce TEST_VG /dev/sda5
Removed "/dev/sda5" from volume group "TEST_VG"
## 将/dev/sda5从TEST_VG当中抽离出去。

# pvscan
PV /dev/sda6 VG TEST_VG lvm2 [2.00 GiB / 0 free]
PV /dev/sda7 VG TEST_VG lvm2 [3.00 GiB / 0 free]
PV /dev/sda5 lvm2 [2.00 GiB]
Total: 3 [7.00 GiB] / in use: 2 [5.00 GiB] / in no VG: 1 [2.00 GiB]

# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped

## 接下来就是将/dev/sda5还原成为普通分区,记录将System ID改为83

## 至此所有工作就完成了,/dev/sda5安全从卷组中抽离出来了。

八、LVM系统快照的建立实例

1、建立快照区

由于VG卷组已经没有剩余空间来创建快照区了,所以重新将/dev/sda5加入卷组来做快照区

1)将/dev/sda5建立为PV

# pvcreate /dev/sda5
Physical volume "/dev/sda5" successfully created

2)将/dev/sda5加入卷组

# vgextend TEST_VG /dev/sda5
Volume group "TEST_VG" successfully extended

# vgdisplay
--- Volume group ---
VG Name TEST_VG
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 10
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 6.98 GiB
PE Size 16.00 MiB
Total PE 447
Alloc PE / Size 320 / 5.00 GiB
Free PE / Size 127 / 1.98 GiB # 新加入的PV
VG UUID j82j1G-tjBT-WE2w-00RF-1E7V-q3NQ-R302X6

3)建立快照区域

# lvcreate -l 127 -s -n VG_ss /dev/TEST_VG/lv
Logical volume "VG_ss" created.

# mkdir /mnt/snapshot
# mount /dev/TEST_VG/VG_ss /mnt/snapshot/

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 3.9G 715M 3.0G 20% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 2.0G 54M 1.8G 3% /boot
/dev/sda2 7.7G 146M 7.2G 2% /home
/dev/mapper/TEST_VG-lv 4.9G 98M 4.5G 3% /mnt/lvm
/dev/mapper/TEST_VG-VG_ss 4.9G 98M 4.5G 3% /mnt/snapshot

4)还原测试

# umount /mnt/snapshot/
## 先查看下被快照区里有什么东西
# ll /mnt/lvm/
total 24
drwxr-xr-x. 59 root root 4096 Jan 6 06:33 etc
drwxr-xr-x. 3 root root 4096 Jan 6 05:57 log
drwx------. 2 root root 16384 Jan 6 06:32 lost+found

## 然后删除一些被快照区里的东西
# rm -r /mnt/lvm/log

## 然后,再复制一些东西进去

# cp -a /boot /lib /mnt/lvm

## 再来看下快照区有什么不一样

# lvdisplay /dev/TEST_VG/VG_ss
--- Logical volume ---
LV Path /dev/TEST_VG/VG_ss
LV Name VG_ss
VG Name TEST_VG
LV UUID hGlcSm-rr5y-21zl-wp0h-mWGo-8Pvf-MiHYIw
LV Write Access read/write
LV Creation host, time lvm.com, 2017-01-06 07:38:40 -0500
LV snapshot status active destination for lv
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 320
COW-table size 1.98 GiB
COW-table LE 127
Allocated to snapshot 8.04% # 不再是0%,
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3

利用快照区将原本的filesystem备份

# mount /dev/TEST_VG/VG_ss /mnt/snapshot/

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 3.9G 715M 3.0G 20% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 2.0G 54M 1.8G 3% /boot
/dev/sda2 7.7G 146M 7.2G 2% /home
/dev/mapper/TEST_VG-lv 4.9G 254M 4.4G 6% /mnt/lvm
/dev/mapper/TEST_VG-VG_ss 4.9G 98M 4.5G 3% /mnt/snapshot

## 格式化被快照区的东西
# umount /mnt/lvm/
# mkfs -t ext3 /dev/TEST_VG/lv

# mount /dev/TEST_VG/lv /mnt/lvm/
# cp -rf /mnt/snapshot/* /mnt/lvm/
# ll -al /mnt/lvm/
total 32
drwxr-xr-x. 5 root root 4096 Jan 6 07:50 .
drwxr-xr-x. 4 root root 4096 Jan 6 07:40 ..
drwxr-xr-x. 59 root root 4096 Jan 6 07:50 etc
drwxr-xr-x. 3 root root 4096 Jan 6 07:50 log
drwx------. 2 root root 16384 Jan 6 07:48 lost+found

5)LVM删除


(1)解除挂载
# umount /mnt/lvm
# umount /mnt/snapshot/

(2)移除逻辑卷
# lvremove /dev/TEST_VG/VG_ss
Do you really want to remove active logical volume VG_ss? [y/n]: y
Logical volume "VG_ss" successfully removed
# lvremove /dev/TEST_VG/lv
Do you really want to remove active logical volume lv? [y/n]: y
Logical volume "lv" successfully removed

(3)移除卷组
# vgchange -a n TEST_VG
0 logical volume(s) in volume group "TEST_VG" now active

# vgremove TEST_VG
Volume group "TEST_VG" successfully removed

(4)移除物理卷
# pvremove /dev/sda{5,6,7}
Labels on physical volume "/dev/sda5" successfully wiped
Labels on physical volume "/dev/sda6" successfully wiped
Labels on physical volume "/dev/sda7" successfully wiped
(5)将System ID改加82

 

posted on 2017-01-10 09:57  nxmydlp  阅读(2003)  评论(0编辑  收藏  举报

导航