lvm基本操作

一、背景及特性

LVM是Logical Volume Manager逻辑卷管理,包括分配磁盘,以及对逻辑卷进行striping/mirroring/resizing操作. 将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,相对于普通的磁盘分区有很大的灵活性:

1.使系统管理员可以更方便的为应用与用户分配存储空间。
2.在LVM管理下的存储卷可以按需要随时改变大小与移除 。
3.LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales'、'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。

二、原理

LVM的基本术语

术语 术语解释
physicalvolume/PV物理卷 物理的磁盘分区,是lvm的基本存储逻辑块.
Volume group/VG 卷组 由一个或者多个物理卷组成,可以在卷组上面创建一个或多个逻辑卷.
Logicalvolume/LV逻辑卷 就是从VG中划分的逻辑分区,在逻辑卷上可以创建文件系统(比如/home,/usr等)
physical extent/PE 每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
Logical extent/LE 逻辑卷也被划分为被称为LE(LogicalExtents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

将一个或多个硬盘的分区即PV在逻辑上集合,相当于一个大硬盘即VG来使用./boot分区不可以在逻辑卷组上,否则bootloader会无法读取.

逻辑卷组可以分成一个或多个逻辑卷中,逻辑卷挂在到不同的挂在点上,如/home,/等.当逻辑卷空间不够时,也可以通过freespace来扩大空间.

三、创建及查询命令

创建一个LVM系统

1.创建分区

sudo fdisk -l    查看磁盘分区表
$ fdisk -l 
Disk /dev/sda: 1073.7 GB, 1073741824000 bytes 
255 heads, 63 sectors/track, 130541 cylinders, total 2097152000 sectors 
Units = sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk identifier: 0x0004caf1 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/sda1   *        2048     3905535     1951744   83  Linux 
/dev/sda2         3905536  2097149951  1046622208   8e  Linux LVM 

sudo fdisk /dev/sdb 使用fdisk创建分区,根据设备文件的绝对路径(/dev/sda2)进入分区管理,进行各种操作和配置

$ sudo fdisk/dev/sdb
Device containsneither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOSdisklabel with disk identifier 0x181c01b0.
Changes will remainin memory only, until you decide to write them.
After that, ofcourse, the previous content won't be recoverable.
Warning: invalidflag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m forhelp): m
Command action
a toggle abootable flag
b edit bsddisklabel
c toggle thedos compatibility flag
d delete apartition
l list knownpartition types
m print thismenu
n add a newpartition
o create a newempty DOS partition table
p print thepartition table
q quit withoutsaving changes
s create a newempty Sun disklabel
t change apartition's system id
u changedisplay/entry units
v verify thepartition table
w write tableto disk and exit
x extrafunctionality (experts only)

如下链接有非常详细的图片过程:

http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html

https://www.howtoforge.com/linux_lvm

parttprope #使分区表生效,不用重启
fdisk -l 
cat/proc/partitons #查看验证

注意:一定要指定分区的格式为8e,这是LVM的分区格式;一个物理硬盘可以分成一个或多个分区,分区所用空间总和可以小于等于硬盘的大小,剩下的为freespace, 可以以后再用.

2.创建PV物理卷

pvcreate /dev/sdb1/dev/sdb2或者pvcreate vg00 /dev/sdb{1,2}
pvdisplay #或者pvs或者pvscan查看已存在pv
$ pvdisplay
--- Physicalvolume ---
PV Name /dev/sda2
VG Name vg00
PV Size 998.14 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 255522
Free PE 111120
Allocated PE 144402
PV UUID YfhPzW-8kE4-suZM-97ON-uIdC-nOwr-hYuu4J

3.创建vg卷组

vgcreate vg00/dev/sdb1 /dev/sdb2 #利用一个或多个物理卷来创建逻辑卷组.
vgdisplay  #或者vgs或者vgscan查看验证

4.创建lv逻辑卷

PV创建好了才能建立VG,VG建立好了才能创建逻辑卷.

lvcreate -L 100M -nlv-test1 vg00 #在vg00卷组创建一个大小为100M,名为lv-test1的逻辑卷.
lvdisplay #或者lvs或者lvscan显示lv信息
$ lvdisplay
--- Logical volume---
LV Path /dev/vg00/swap
LV Name swap
VG Name vg00
LV UUID Xlal23-STfh-khN6-Drh8-dYMY-UCIn-I77H2y
LV Write Access read/write
LV Creation host,time mali-builder6, 2018-04-24 15:44:56 +0800
LV Status available
# open 2
LV Size 29.80 GiB
Current LE 7629
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume---
LV Path /dev/vg00/root
LV Name root
VG Name vg00
LV UUID Qi6h7X-qPuw-O3Eg-wxEW-qNTc-AulQ-ux8KRP
LV Write Access read/write
LV Creation host,time mali-builder6, 2018-04-24 15:44:56 +0800
LV Status available
# open 1
LV Size 13.97 GiB
Current LE 3576
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
--- Logical volume---
LV Path /dev/vg00/tmp
LV Name tmp
VG Name vg00
LV UUID twQEC7-PD5h-VgKW-AW5L-Azb9-hnY0-ylW8QB
LV Write Access read/write
LV Creation host,time mali-builder6, 2018-04-24 17:50:26 +0800
LV Status available
# open 0
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2

5.lv格式化和挂载

逻辑卷创建好了之后,就可以在上面创建文件系统了.

注意:逻辑卷的引用需要逻辑卷的设备文件,逻辑卷的设备文件有两种书写形式:

/dev/vg_name/lv_name
/dev/mapper/vg_name-lv_name

经过格式化操作之后,LV才能存储数据

mkfs -t ext4/dev/vg00/lv-test1

将格式化后的LV分区挂载到指定的目录下面.

mkdir /root/test
mount/dev/vg00/lv-test1 /root/test/

(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)

ll /dev/vgdata/vg00
df -h

/etc/fstab里面添加自动mount

四、管理命令

任务 PV阶段 VG阶段 LV阶段
查找(scan) pvscan vgscan lvscan
新建(create) pvcreate vgcreate lvcreate
显示(display) pvdisplay vgdisplay lvdisplay
增加(extend) vgextend lvextend
减少(reduce) vgreduce lvreduce
删除(remove) pvremove vgremove lvremove
改变容量(resize) pvresize lvresize
改变属性(attribute) pvchange vgchange lvchange

1.扩大卷组

pvcreate /dev/sdb3#再创建一个物理卷分区
vgextend vg00/dev/sdb3 #将创建好的分区加入到需要扩大的卷组中
vgs #查看

2.扩大逻辑卷

首先要确定逻辑卷对应的卷组下有足够扩充的空间.

lvextend -L +66gG/dev/mapper/vg00-root
resize2fs/dev/mapper/vg00-root
lvs

3.缩减卷组

有时候,某些分区坏了,可能需要移除逻辑卷.同时卷组的空间大小也减少了.

pvmove /dev/sdb1/dev/sdb2 #通过pvmove命令转移空间数据
vgreduce vg00/dev/sdb1 #将分区从卷组vg00里面移除除去
pvremove /dev/sdb1 #通过pvremove命令将分区从系统中删除掉(不一定需要)

4.缩减逻辑卷

umount mount_point #先卸载逻辑卷
e2fsck -f/dev/vg00/lv_name #通过e2fsck命令检测逻辑卷上空余空间
resize2fs/dev/vg00/lv_name size_new #将文件系统减小至size_new大小
lvreduce -L size_new /dev/vg00/lv_name #将逻辑卷大小减小至size_new
df -hl查看
mount/dev/vg00/lv_name /mount_point #重新挂载,继续使用

注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

5.删除逻辑卷,卷组和物理卷

umount /mount_point #先卸载逻辑卷
vim /etc/fstab #修改下fstab里面逻辑卷的自动挂载信息
lvremove/dev/vg00/lv_name #删除逻辑卷
vgremove vg00 #删除卷组
pvremove /devsdb1/dev/sdb2 #将物理卷转化成普通分区
用pvs/vgs/lvs查看
sudo fdisk /dev/sdb1#更改分区ID标识,修改成普通linux分区,而不是8e.

6.创建快照卷

https://www.tecmint.com/take-snapshot-of-logical-volume-and-restore-in-lvm/ 这个文章说的非常详细,推荐下。

快照(snapshot)是LVM所提供的一个非常有用的特性。它的原理是复制Origin原始卷的元数据(metadata)来创建一个逻辑卷,并没有复制物理卷上的任何数据,因此它的创建过程是实时瞬间完成的。快照是特殊类型的逻辑卷,它含有创建时刻所指定的原始逻辑卷的完整数据,您可以操作快照而无需担心数据的变更令备份失效。

当一个snapshot创建的时候,仅拷贝原始卷里的源数据,这不是物理上的数据拷贝,因此snapshot的创建特别快,当原始卷里的数据有写入时,备份卷开始记录原始卷哪些数据发生了变化,然后在原始卷新数据覆盖旧数据时,将旧数据拷贝到snapshot的预留空间里,起到备份数据的作用,就保证了所有数据和创建备份卷之前的数据一致性。

而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块。所以当原始卷破坏了之后还能用snapshot备份的数据还原.

注意:snapshot其实是一个逻辑卷;snapshot只能对同一个卷组的逻辑卷进行备份.

#创建快照
lvcreate --snapshot--size 50g --name snapshot_name /dev/vg00/lv_name
lvscan #查看
#挂在快照卷
mkdir /tmp/snapshot
mount/dev/vg00/snapshot_name /tmp/snapshot
#此时的快照卷就像是普通的逻辑卷,可以进行增加,缩小,删除等操作
#此时你可以在原来的逻辑卷内进行修改等操作
#恢复快照
umount /tmp/snapshot #卸载
lvconvert --merge /dev/vg00/snapshot_name #方法一
#或者方法二
lvchange --refresh vg00/snapshot_name
lvremove --force vg00/snapshot_name
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,843评论 0 5
  • 1 概述 本文对配额,RAID,LVM的概念和具体创建过程做了介绍 2 配额 2.1 配额概念 在内核中执行 以文...
    ghbsunny阅读 2,735评论 0 1
  • Lvm是Logical Volume Manager的简写,是Linux系统下对磁盘分区进行管理的一种机制。Lvm...
    小尛酒窝阅读 1,420评论 0 1
  • 在一抹缠绵而又柔美的夕照的映衬下,他俩静静地欣赏着窗外。 远处,海水每击打一下海岸,仿佛都在提醒他们俩:他们是初次...
    青衫湿旧阅读 384评论 38 23
  • 有人说,人生最痛苦的并不是没有野心,而是没有足够好的耐力和体力,配得上自己的野心。 前段时间,我在连续两个通宵之后...
    凌危危vivi阅读 557评论 3 3