在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
在Linux下如何创建LVM及LVM创建过程的更多相关文章
- 在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1)
在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1) RAID即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID是一些磁盘的集合, ...
- linux下软、硬链接的创建和删除
linux下软.硬链接的创建和删除 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复 ...
- linux下的C语言开发 进程创建 延伸的几个例子
在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...
- Linux下MySQL/MariaDB Galera集群搭建过程【转】
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
- 基于linux下的NIST数字测试包安装过程
基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...
- 【转】Linux下软、硬链接的创建和删除
原文:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/05/2199534.html 在Linux系统中,内核为每一个新创建的文件分 ...
- linux下磁盘进行分区、文件系统创建、挂载和卸载
任务的原因:由于,刚购买来的服务器需要将磁盘挂载到操作系统上,为了挂载磁盘首先要对磁盘进行分区,然后进行文件系统的创建,最后将磁盘挂载到操作系统上的某个目录. MBR(Master Boot Reco ...
- linux下磁盘进行分区、文件系统创建、挂载和卸载(转)
任务的原因:由于,刚购买来的服务器需要将磁盘挂载到操作系统上,为了挂载磁盘首先要对磁盘进行分区,然后进行文件系统的创建,最后将磁盘挂载到操作系统上的某个目录. MBR(Master Boot Reco ...
- Linux下搭建.NetCore3.0环境及创建项目
================================================== ================================================= ...
- Linux下Oracle表空间及用户创建
记录详细过程以备使用 Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as sys@i ...
随机推荐
- poj 3616 Milking Time DP
题意:在给予的N个时间里,奶牛Bessie在M个时间段里进行产奶,但是每次产奶后都要休息R个时间 M个时间段里,分别有开始时间start和结束时间end,和该时间段里产奶的效率efficiency 求 ...
- python高级编程 编写一个包1
#目的是:编写,发行python包可重复过程"""1:是缩短开始真正工作之前所需要的设置时间,也就是提供模板2:提供编写包的标准化方法3:简化测试驱动开发方法的使用4:为 ...
- mycat实例(2)
全局序列号 数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence). 1. 本地 ...
- ArrayList的分析(转)
一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境 ...
- request.getRequestURI()与request.getRequestURL()
request.getRequestURL() 获得 http://www.quanqiuyouhui.com/ds-api-test/authorization/test.do request.ge ...
- 写一个简易web服务器、ASP.NET核心知识(4)--转载
第一次尝试(V1.0) 1.理论支持 这里主要要说的关于Socket方面的.主要是一个例子,关于Socket如何建立服务端程序的简单的代码. static void Main(string[] arg ...
- android——ImageLoader添加缓存
//给图片加入到缓存中. DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisc( ...
- php使用session来保存用户登录信息
php使用session来保存用户登录信息 使用session保存页面登录信息 1.数据库连接配置页面:connectvars.php <?php //数据库的位置 define('DB_HOS ...
- @synthesize
@synthesize 相当于把属性当成成员变量来用,不用再写self.属性@synthesize myButton; 这样写了之后,那么编译器会自动生成myButton的实例变量,以及相应的gett ...
- uploadify ,前端页面获取值,json,ajax
针对这几月的技术,做一次小总结 上传控件uploadify function inexel() { $("#btnExcel").uploadify({ 'method': 'po ...