LVM基础详细说明及动态扩容lvm逻辑卷的操作记录

LVM概念:
--------------------------------------------------------------------------------------------------------------------------------------------------------
它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume
group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical
volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。它的结构如下图所示:

LVM(Logical Volume Manager),即逻辑卷管理,它是Linux环境下对磁盘分区进行管理的一种机制。
一般来说,物理磁盘或分区之间是分隔的,数据无法跨盘或分区,而各磁盘或分区的大小固定,重新调整比较麻烦。LVM可以将这些底层的物理磁盘或分区整合起来,抽象成容量资源池,以划分成逻辑卷的方式供上层使用,其最主要的功能即是可以在无需关机无需重新格式化(准确地说,原来的部分无需格式化,只格式化新增的部分)的情况下弹性调整逻辑卷的大小。

LVM的实现过程

几个名称解释
--------------------------------------------------------------------------------------------------------------------------------------------------------
PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。它只是在物理分区中划出了一个特殊的区域,用于记载与LVM相关的管理参数。 
VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。
LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。
PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical

extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。由于受内核限制的原因,一个逻辑卷(Logic
Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了逻辑卷的最大容量,4 MB(默认)
的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的PE。在Red Hat
Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。

将各物理磁盘或分区的系统类型设为Linux LVM,其system ID为8e,通过fdisk工具中的t命令设置


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[email protected] ~]# fdisk /dev/sda

...

Command (m for help): n

First cylinder (1593-3916, default 1593):

Using default value 1593

Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): +5G

...

Command (m for help): t

Partition number (1-6): 5

Hex code (type L to list codes): 8e   # 指定system ID为8e

Changed system type of partition 5 to 8e (Linux LVM)

...

Command (m for help): p

...

/dev/sda5            1593        2246     5252227+  8e  Linux LVM

/dev/sda6            2247        2900     5253223+  8e  Linux LVM

/dev/sda7            2901        3554     5253223+  8e  Linux LVM

Command (m for help): w

...

[[email protected] ~]# partx -a /dev/sda

...

[[email protected] ~]# kpartx -af /dev/sda

...

将各物理磁盘或分区初始化为PV(physical volume,物理卷),这一阶段可使用的命令为pvcreate、pvremove、pvscan、pvdisplay(pvs)

pvcreate创建物理卷

用法:pvcreate [option] DEVICE

选项:

-f:强制创建逻辑卷,不需用户确认

-u:指定设备的UUID

-y:所有问题都回答yes

例 pvcreate /dev/sda5 /dev/sda6

pvscan:扫描当前系统上的所有物理卷

用法:pvscan [option]

选项:

-e:仅显示属于输出卷组的物理卷

-n:仅显示不属于任何卷组的物理卷

-u:显示UUID

pvdisplay:显示物理卷的属性

用法:pvdisplay [PV_DEVICE]

pvremove:将物理卷信息删除,使其不再被视为一个物理卷

用法:pvremove [option] PV_DEVICE

选项:

-f:强制删除

-y:所有问题都回答yes

例 pvremove /dev/sda5


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

[[email protected] ~]# pvcreate /dev/sda{5,6,7}   # 将三个分区初始化为物理卷

  Physical volume "/dev/sda5" successfully created

  Physical volume "/dev/sda6" successfully created

  Physical volume "/dev/sda7" successfully created

[[email protected] ~]# pvscan

  PV /dev/sda5                      lvm2 [5.01 GiB]

  PV /dev/sda6                      lvm2 [5.01 GiB]

  PV /dev/sda7                      lvm2 [5.01 GiB]

  Total: 3 [15.03 GiB] / in use: 0 [0   ] / in no VG: 3 [15.03 GiB]

[[email protected] ~]# pvdisplay /dev/sda5   # 显示物理卷sda5的详细信息

  "/dev/sda5" is a new physical volume of "5.01 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sda5

  VG Name              

  PV Size               5.01 GiB

  Allocatable           NO

  PE Size               0   # 由于PE是在VG阶段才划分的,所以此处看到的都是0

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               lrNOS3-8U21-ZS8o-eyKH-HqPn-DLhX-W1ppl4

    

[[email protected] ~]# pvremove /dev/sda7   # 删除sda7的物理卷信息

  Labels on physical volume "/dev/sda7" successfully wiped

[[email protected] ~]# pvscan   # 可以看到PV列表中已无sda7

  PV /dev/sda5   VG myvg   lvm2 [5.01 GiB / 5.01 GiB free]

  PV /dev/sda6   VG myvg   lvm2 [5.01 GiB / 5.01 GiB free]

[[email protected] ~]# pvcreate /dev/sda7

  Physical volume "/dev/sda7" successfully created

创建VG(volume group,卷组)。卷组将多个物理卷整合起来(屏蔽了底层细节),并划分PE(physical extend)PE是物理卷中的最小存储单元,有点类似于文件系统中的block,PE大小可指定,默认为4M。这一阶段用到的命令有vgcreate、vgscan、vgdisplay、vgextend、vgreduce

vgcreate创建卷组

用法:vgcreate [option] VG_NAME PV_DEVICE

选项:

-s:卷组中的物理卷的PE大小,默认为4M

-l:卷组上允许创建的最大逻辑卷数

-p:卷级中允许添加的最大物理卷数

例 vgcreate -s 8M myvg /dev/sda5 /dev/sda6

vgscan:查找系统中存在的LVM卷组,并显示找到的卷组列表

vgdisplay:显示卷组属性

用法:vgdisplay [option] [VG_NAME]

选项:

-A:仅显示活动卷组的信息

-s:使用短格式输出信息

vgextend:动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量

用法:vgextend VG_NAME PV_DEVICE

例 vgextend myvg /dev/sda7

vgreduce:通过删除LVM卷组中的物理卷来减少卷组容量,不能删除LVM卷组中剩余的最后一个物理卷
  用法:vgreduce VG_NAME PV_DEVICE

vgremove:删除卷组,其上的逻辑卷必须处于离线状态

用法:vgremove [-f] VG_NAME

-f:强制删除

vgchange:常用来设置卷组的活动状态

用法:vgchange -a n/y VG_NAME

-a n为休眠状态,休眠之前要先确保其上的逻辑卷都离线;

-a y为活动状态


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

[[email protected] ~]# vgcreate -s 8M myvg /dev/sda{5,6}   # 使用sda5、sda6创建卷组,指定PE大小为8M

  Volume group "myvg" successfully created

[[email protected] ~]# vgscan

  Reading all physical volumes.  This may take a while...

  Found volume group "myvg" using metadata type lvm2

[[email protected] ~]# vgdisplay   # 查看卷组详细信息

  --- Volume group ---

  VG Name               myvg

  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               10.02 GiB   # 卷组容量

  PE Size               8.00 MiB

  Total PE              1282   # PE总数

  Alloc PE / Size       0 / 0   # 分配的容量

  Free  PE / Size       1282 / 10.02 GiB   # 空闲的容量

  VG UUID               5zBY8e-5Cgc-HqSo-BOiZ-02NX-77ON-NJSCbN

在卷组上创建LV(logical volume,逻辑卷)。为了便于管理,逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME。LV中可以分配的最小存储单元称为LE(logical extend),在同一个卷组中,LE的大小和PE是一样的,且一一对应。这一阶段用到的命令有lvcreate、lvscan、lvdisplay、lvextend、lvreduce、lvresize

lvcreate创建逻辑卷或快照

用法:lvcreate [选项] [参数]

选项:

-L:指定大小

-l:指定大小(LE数)

-n:指定名称

-s:创建快照

-p r:设置为只读(该选项一般用于创建快照中)

注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷

例 lvcreate -L 500M -n mylv myvg

lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件

lvdisplay:显示逻辑卷属性

用法:lvdisplay [/dev/VG_NAME/LV_NAME]

lvextend:可在线扩展逻辑卷空间

用法:lvextend -L/-l 扩展的大小 /dev/VG_NAME/LV_NAME

选项:

-L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M

-l:指定扩展(后)的大小(LE数)

例 lvextend -L 200M /dev/myvg/mylv

lvreduce:缩减逻辑卷空间,一般离线使用

用法:lvexreduce -L/-l 缩减的大小 /dev/VG_NAME/LV_NAME

选项:

-L:指定缩减(后)的大小

-l:指定缩减(后)的大小(LE数)

例 lvreduce -L 200M /dev/myvg/mylv

lvremove:删除逻辑卷,需要处于离线(卸载)状态

用法:lvremove [-f] /dev/VG_NAME/LV_NAME

-f:强制删除


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[[email protected] ~]# lvcreate -L 500M -n mylv myvg   # 创建大小为500M、名为mylv的逻辑卷

  Rounding up size to full physical extent 504.00 MiB

  Logical volume "mylv" created

[[email protected] ~]# lvscan

  ACTIVE            ‘/dev/myvg/mylv‘ [504.00 MiB] inherit

[[email protected] ~]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/myvg/mylv

  LV Name                mylv

  VG Name                myvg

  LV UUID                0fPpO3-gVaI-ZKqi-xHnc-uaHk-u6of-i5wds7

  LV Write Access        read/write

  LV Creation host, time localhost.localdomain, 2015-10-18 22:05:18 +0800

  LV Status              available

  # open                 0

  LV Size                504.00 MiB  # 这里为什么不是指定的500M呢,因为500M不是PE的倍数,系统会自行计算最相近的容量

  Current LE             63

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

格式化逻辑卷并挂载


1

2

3

4

5

6

7

8

9

10

11

[[email protected] ~]# mke2fs -t ext4 /dev/myvg/mylv

...

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

...

[[email protected] ~]# mkdir /data

[[email protected] ~]# mount /dev/myvg/mylv /data

[[email protected] ~]# cp /etc/inittab /data

[[email protected] ~]# ls /data

inittab  lost+found

LVM的写入模式
--------------------------------------------------------------------------------------------------------------------------------------------------------
LVM有两种写入模式:线性模式条带模式
- 线性模式即写完一个设备后再写另一个设备
- 条带模式就有点类似于RAID0,即数据是被分散写入到LVM各成员设备上的。
因为条带模式的数据不具有安全性,且LVM并不强调读写性能,故LVM默认为线性模式,这样即使一个设备坏了,其它设备上的数据还在。

文件系统的扩展和缩减
--------------------------------------------------------------------------------------------------------------------------------------------------------
文件系统在创建时是分成多个块组(block group)的,因此文件系统的增减实际上就是以增减块组的方式实现的。在linux中,ext系列格式的文件系统是可以扩展和缩减的,而xfs格式的目前只能扩展
1)扩展文件系统
①先确定扩展的目标大小,并确保对应卷组中有足够的空闲空间可用。如果不够,可先通过vgextend命令扩大卷组容量
# vgextend myvg /dev/sda7
②扩展逻辑卷
# lvextend -L 4G /dev/myvg/mylv
③扩展文件系统
resize2fs为ext系列文件系统大小的调整工具用法为:resize2fs 文件系统所对应的设备文件名 [大小]
# resize2fs /dev/myvg/mylv


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[[email protected] ~]# vgextend myvg /dev/sda7   # 假如卷组容量不够,扩展文件系统之前先扩展卷组

  Volume group "myvg" successfully extended

[[email protected] ~]# lvextend -L +300M /dev/myvg/mylv

  Rounding size to boundary between physical extents: 304.00 MiB

  Snapshot origin volumes can be resized only while inactive: try lvchange -an

  Run `lvextend --help‘ for more information.

[[email protected] ~]# umount /dev/myvg/mylv_snap

[[email protected] ~]# lvremove /dev/myvg/mylv_snap  # 要增减逻辑卷,需要先删除对对应的快照卷

Do you really want to remove active logical volume mylv_snap? [y/n]: y

  Logical volume "mylv_snap" successfully removed

[[email protected] ~]# lvextend -L +300M /dev/myvg/mylv   # 逻辑卷扩大300M

  Rounding size to boundary between physical extents: 304.00 MiB

  Extending logical volume mylv to 808.00 MiB

  Logical volume mylv successfully resized

[[email protected] ~]# resize2fs /dev/myvg/mylv   # 扩展文件系统

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/myvg/mylv is mounted on /data; on-line resizing required

old desc_blocks = 2, new_desc_blocks = 4

Performing an on-line resize of /dev/myvg/mylv to 827392 (1k) blocks.

The filesystem on /dev/myvg/mylv is now 827392 blocks long.

 

[[email protected] ~]# df -h   # 显示容量确实已扩大

...

/dev/mapper/myvg-mylv  783M   11M  732M   2% /data

2)缩减很危险,要离线
①先确定缩减后的目标大小,并确保对应的目标逻辑卷大小足够容纳原有数据
②先卸载文件系统,并要执行强制检测
# e2fsck -f
③缩减文件系统
#resize2fs DEVICE        例如,resize2fs /dev/myvg/mylv 3G 缩减至3G

④缩减逻辑卷
# lvreduce -L 3G /dev/myvg/mylv
注:当逻辑卷有快照时是不能扩展和缩减的,除非先将快照删除.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

[[email protected] ~]# umount /dev/myvg/mylv   # 缩减文件系统之前要先卸载

[[email protected] ~]# e2fsck -f /dev/myvg/mylv   # 检测文件系统

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/myvg/mylv: 12/206848 files (0.0% non-contiguous), 36856/827392 blocks

[[email protected] ~]# resize2fs /dev/myvg/mylv 500M   # 缩减文件系统至500M

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/myvg/mylv to 512000 (1k) blocks.

The filesystem on /dev/myvg/mylv is now 512000 blocks long.

[[email protected] ~]# lvreduce -L 500M /dev/myvg/mylv   # 缩减逻辑卷至500M

  Rounding size to boundary between physical extents: 504.00 MiB

  WARNING: Reducing active and open logical volume to 504.00 MiB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce mylv? [y/n]: y

  Reducing logical volume mylv to 504.00 MiB

  Logical volume mylv successfully resized

[[email protected] ~]# mount /dev/myvg/mylv /data   # 重新挂载

[[email protected] ~]# df -h   # 显示容量确实已减小

...

/dev/mapper/myvg-mylv  485M   11M  449M   3% /data

 

[[email protected] ~]# vgchange -an myvg   # 当我们一段时间内不再使用卷组时,可将其休眠

  Logical volume myvg/mylv contains a filesystem in use.

  Can‘t deactivate volume group "myvg" with 1 open logical volume(s)

[[email protected] ~]# umount /data    # 休眠之前先卸载逻辑卷

[[email protected] ~]# umount /mnt

[[email protected] ~]# vgchange -an myvg

  0 logical volume(s) in volume group "myvg" now active

[[email protected] ~]# vgchange -ay myvg   # 重新激活卷组

  1 logical volume(s) in volume group "myvg" now active

[[email protected] ~]# vgremove myvg   # 若打算以后都不再使用,可删除卷组

Do you really want to remove volume group "myvg" containing 1 logical volumes? [y/n]: y

Do you really want to remove active logical volume mylv? [y/n]: y

  Logical volume "mylv" successfully removed

  Volume group "myvg" successfully removed

snapshot(快照)
--------------------------------------------------------------------------------------------------------------------------------------------------------
snapshot是像照相一样将当前的系统信息保存下来。
当创建一个snapshot的时候,仅拷贝原始卷里数据的元数据(meta-data)。创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,因此这个原理的实现叫做写时复制(copy-on-write)。
在写操作写入块之前,原始数据被移动到

snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。而对于snapshot的读操作,如果是没有修改过的块,那么会将读操作直接重定向到原始卷上,如果是已经修改过的块,那么就读取拷贝到snapshot中的块。

■创建快照卷:

lvcreate [选项] [参数]

选项:
-L:指定大小

-l:指定大小(LE数)

-n:指定名称

-s:创建快照

-p r:设置为只读

例如 lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv # 针对逻辑卷mylv创建大小为512M的只读快照

注:创建快照前需将针对的逻辑卷临时改为只读,创建完毕后再改为读写,例如
- 创建快照前:mount -o remount,ro /dev/myvg/mylv /data
- 创建快照后:mount -o remount,rw /dev/myvg/mylv /data


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[[email protected] ~]# mount -o remount,ro /dev/myvg/mylv /data   # 创建快照卷之前先将对应的逻辑卷改为只读

[[email protected] ~]# lvcreate -s -L 512M -n mylv_snap /dev/myvg/mylv  # 创建大小为512M的快照

  Logical volume "mylv_snap" created

[[email protected] ~]# mount -o remount,rw /dev/myvg/mylv /data   # 将逻辑卷改回为读写

[[email protected] ~]# mount /dev/myvg/mylv_snap /mnt

[[email protected] ~]# df -h   # 可以看到快照和其对应的逻辑卷显示的参数值一样

...

/dev/mapper/myvg-mylv       489M   11M  453M   3% /data

/dev/mapper/myvg-mylv_snap  489M   11M  453M   3% /mnt

[[email protected] ~]# ls /mnt

inittab  lost+found

[[email protected] ~]# cp /etc/passwd /data   # 向原始卷中新增一些数据

[[email protected] ~]# ls /data

inittab  lost+found  passwd

[[email protected] ~]# ls /mnt   # 快照所显示的文件系统状态仍是创建那一刻的

inittab  lost+found

LVM工作原理
--------------------------------------------------------------------------------------------------------------------------------------------------------
LVM在每个物理卷头部都维护了一个metadata,每个metadata中都包含了整个VG(volume
group:卷组)的信息,包括每个VG的布局配置,PV(physical volume:物理卷)的编号,LV(logical
volume:逻辑卷)的编号,以及每个PE(physical extends:物理扩展单元)到LE(logical
extends:物理扩展单元)的映射关系。同一个VG中的每个PV头部的信息都是相同的,这样有利于故障时进行数据恢复。

LVM对上层文件系统提供LV层,隐藏了操作细节。对文件系统而言,对LV的操作与原先对partition的操作没有差别。当对LV进行写入操作的时候,LVM定位相应的LE,通过PV头部的映射表将数据写入到相应的PE上。LVM实现的关LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。键在于PE和LE之间建立映射关系,不同的映射规则决定了不同的LVM存储模型。LVM支持多个PV
的stripe和mirror。

LVM最大的特点就是可以对磁盘进行动态管理,因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据,如果我们增加了硬盘也不会改变现有的上层逻辑卷。

LVM优缺点
--------------------------------------------------------------------------------------------------------------------------------------------------------
优点:
- 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
- 可以在系统运行的状态下动态的扩展文件系统的大小。
- 可以增加新的磁盘到LVM的存储池中。
- 可以以镜像的方式冗余重要的数据到多个物理磁盘。
- 可以方便的导出整个卷组到另外一台机器。

缺点:
- 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
- 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
- 因为加入了额外的操作,存贮性能受到影响。

接下来,举出几个实例说明一下:
-------------------------------------------------------------------------------------------------------------------------------------------------------

1.准备物理分区(Physical Partions)
首先,我们需要选择用于
LVM 的物理存储器。这些通常是标准分区,但也可以是已创建的 Linux Software RAID
卷。这里我利用fdisk命令,将sdb、sdc两块磁盘分了两个区sdb1、sdc1, 通过fdisk的t指令指定分区为8e类型(Linux
LVM) ,如下图:

2.创建物理卷PV(Physical Volumes)
[[email protected] oracle]#pvcreate /dev/sdb1           //如果没有pvcreate、vgcreate等lvm命令,可以使用yum install -y lvm2进行安装
Physical volume "/dev/sdb1" successfully created
[[email protected] oracle]# pvcreate /dev/sdc1           //可以直接使用pcvreate /dev/{sdb1,sdc1}
Physical volume "/dev/sdc1" successfully created

3.创建卷组VG(Volume Groups),命名为vg_test
[[email protected] ~]#vgcreate vg_test /dev/sdb1
Volume group "vg_test" successfully created
使用卷组查看命令vgdisplay显示卷组情况:
[[email protected] oracle]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.99 GB
PE Size 4.00 MB
Total PE 5118
Alloc PE / Size 2560 / 10.00 GB
Free PE / Size 2558 / 9.99 GB
VG UUID YEYtOr-JpCK-P7MV-FFVo-BgEi-Ooef-IG3hlc

4.创建逻辑卷LV(Logical Volumes) ,命名为test_lv
创建逻辑卷的命令为lvcreate,-l 参数为定PE数来设定逻辑分区大小,也可以使用-L参数直接指定逻辑分区大小,-n参数指定逻辑分区名称。
[[email protected] oracle]# lvcreate -l 2000 -n lv_test vg_test
Logical volume "lv_test" created
也可以使用-L参数
[[email protected] oracle]# lvcreate -L 10G -n lv_test vg_test
Rounding up size to full physical extent 19.99 GB
Logical volume "lv_test" created
使用lvdisplay命令查看逻辑卷情况:
[[email protected] oracle]#lvdisplay
--- Logical volume ---
LV Name /dev/vg_test/lv_test
VG Name vg_test
LV UUID kgUoMy-W1qG-7tAQ-dI5j-Z2KO-a8Td-mXAFbc
LV Write Access read/write
LV Status available
# open 0
LV Size 19.99 GB
Current LE 5118
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

5.创建文件系统,并挂载
在逻辑卷上创建ext3文件系统:
[[email protected] oracle]#mkfs -t ext3 /dev/vg_test/lv_test             //可以直接使用mkfs.ext3或mkfs.ext4进行格式化,ext3或ext4是文件格式
[[email protected] oracle]#mount /dev/vg_test/lv_test /opt/oracle/
[[email protected] oracle]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
16G 4.7G 11G 32% /
/dev/sda1 99M 27M 67M 29% /boot
tmpfs 872M 0 872M 0% /dev/shm
/dev/mapper/vg_test-lv_test
9.9G 151M 9.2G 2% /opt/oracle

LVM的最大好处就是可以动态地调整分区大小,而无须重新启动机器,下面让我们来体验一下吧!
继续上面的实例,现假设逻辑卷/dev/vg_test/lv_test空间不足,需要增加其大小,我们分两种情况讨论:
---------------------------------------------------------------------------------------------------------
1)卷组中有剩余的空间
通过vgdisplay命令可以检查当前卷组空间使用情况:

[[email protected] oracle]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.99 GB
PE Size 4.00 MB
Total PE 5118
Alloc PE / Size 2560 / 10.00 GB
Free PE / Size 2558 / 9.99 GB
VG UUID YEYtOr-JpCK-P7MV-FFVo-BgEi-Ooef-IG3hlc
确定当前卷组剩余空间9.99GB,剩余PE数量为2558个。在这里将所有的剩余空间全部增加给逻辑卷 /dev/vg_test/lv_test。
[[email protected] oracle]# lvextend -l +2558 /dev/vg_test/lv_test     //或者lvextend -L +9.99G /dev/vg_test/lv_test  
Extending logical volume lv_test to 19.99 GB
Logical volume lv_test successfully resized
也可以通过-L直接指定大小,通过 +/- 来 增加/减小 空间。
修改逻辑卷大小后,通过resize2fs来修改文件系统的大小。
[[email protected] oracle]#resize2fs /dev/vg_test/lv_test
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg_test/lv_test is mounted on /opt/oracle; on-line resizing required
Performing an on-line resize of /dev/vg_test/lv_test to 5240832 (4k) blocks.
The filesystem on /dev/vg_test/lv_test is now 5240832 blocks long.
再次查看文件系统的大小:
[[email protected] oracle]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
16G 4.7G 11G 32% /
/dev/sda1 99M 27M 67M 29% /boot
tmpfs 872M 0 872M 0% /dev/shm
/dev/mapper/vg_test-lv_test
20G 156M 19G 1% /opt/oracle

2)卷组中空间不足
  当卷组中没有足够的空间用于扩展逻辑卷的大小时,就需要增加卷组的容量,而增加卷组容量的惟一办法就是向卷组中添加新的物理卷。
  首先需要对新增加的磁盘进行分区、创建物理卷等工作。),接下来是利用vgextend命令将新的物理卷加入到卷组中, 我们这里使用/dev/sdc1。
[[email protected] oracle]#vgextend vg_test /dev/sdc1
Volume group "vg_test" successfully extended
[[email protected] oracle]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 59.98 GB
PE Size 4.00 MB
Total PE 15356
Alloc PE / Size 5118 / 19.99 GB
Free PE / Size 10238 / 39.99 GB
VG UUID YEYtOr-JpCK-P7MV-FFVo-BgEi-Ooef-IG3hlc

完成卷组的扩容后,就可以按照第一种情况的方法完成逻辑卷的扩容,最终实现分区的动态调整。如:
[[email protected] oracle]# lvextend -L +39G /dev/vg_test/lv_test
[[email protected] oracle]# resize2fs /dev/vg_test/lv_test
如果报错:
......
resize2fs: Bad magic number in super-block while trying to open /dev/vg_test/lv_test
Couldn‘t find valid filesystem superblock.

可以尝试用xfs命令
[[email protected] ~]# xfs_growfs /dev/vg_test/lv_test

原文地址:https://www.cnblogs.com/huhyoung/p/9689776.html

时间: 2024-11-01 00:16:08

LVM基础详细说明及动态扩容lvm逻辑卷的操作记录的相关文章

动态扩容lvm逻辑卷的操作记录

原文地址:https://www.cnblogs.com/huhyoung/p/9678235.html

Centos中动态扩容lvm逻辑卷的大小

LVM概念:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管

<实训|第十二天>用LVM对linux分区进行动态扩容

[[email protected]~]#序言在linux中,我们安装软件的途径一般有那些,你们知道吗?在linux中,如果你的磁盘空间不够用了,你知道如何来扩展磁盘吗?动态扩容不仅在工作中还是在其他方面都是一个非常重要的技能,所以学会它,对你很有帮助.  开班第十二天: [[email protected]~]#今天的课程大纲 1.linux系统中安装软件的方式和途径 2.lvm磁盘管理机制的原理 3.如何使用lvm管理磁盘 4.动态扩容的方法 5.使用lvm的好处 详细讲解: [[email

云主机磁盘存储动态扩容(LVM)方案

一.场景 云主机使用的越来越多,现在几乎没有不使用云主机的,经常会碰到需要升级硬盘存储的操作,直接添加磁盘,或动态在原有的分区上扩容,所使用的方案大致有如下:1.基于lvm格式 在线动态扩容2.非lvm格式扩容接下来我们就结合生产常用两种扩容方案及实践 二.LVM在线动态扩容 1.lvm原理概述 这里引用鸟哥说明LVM 的重点在於『可以弹性的调整 filesystem 的容量!』而并非在於效能与数据保全上面. 需要文件的读写效能或者是数据的可靠性,请参考前面的 RAID 小节. LVM 可以整合

动态扩容LVM

[[email protected] ~]# fdisk -l /dev/xvda     #查看磁盘分区情况 Disk /dev/xvda: 536.9 GB, 536870912000 bytes 255 heads, 63 sectors/track, 65270 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I

LVM逻辑卷管理--在线扩容、逻辑卷与卷组容量缩减、逻辑卷快照

LVM逻辑卷管理公司生产环境中使用了LVM逻辑卷管理,所以今天花时间整理一下.通过LVM技术整合所有的磁盘资源进行分区,然后创建PV物理卷形成一个资源池,再划分卷组,最后在卷组上创建不同的逻辑卷,继而初始化逻辑卷,挂载到系统中使用.LVM对比传统硬盘存储的优点1. 统一管理:整合多个磁盘或分区形成一个资源池2. 灵活性:可以使用不同磁盘.不同分区来组成一个逻辑卷3. 可伸缩性:逻辑卷和卷组的容量都可以使用命令来扩展或者缩减,且不会影响破坏原有数据,支持磁盘热插拔.4. 支持热插拔5. 支持在线数

Linux逻辑卷管理器(LVM)

LVM基础 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份. 对一般用户来讲,使用最多的是动态调整文件系统大小的功能.这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小. 在LVM中,主要有三个概念: 物理卷(Ph

Linux系统LVM逻辑卷的创建与扩容(命令详解,图文并茂)

LVM简介: LVM(Logical Volume Manager)中文名:逻辑卷管理器,本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup).LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备.底层的原始的磁盘不再由内核直接控制,而由LVM层来控制.对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元.LVM管理着

LVM逻辑卷的管理--创建LVM、扩容,快照实战

如果对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办? 因为如果要把一个分区的内容都拷贝到另一个分区上去,势必要首先卸载掉之前的那个分区,然后*对整个分区进行拷贝,如果服务器上运行着一个重要的服务,比如说WWW或者FTP,其要求是 7*24 小时运行正常的,那么卸载掉分区这是不可想象的,同时如果该分区保存的内容非常非常的多,那么在对分区进行转移时时间可能会耗费很久,所以,这个时候我们就会受到传统磁盘管理的限制,因为其不能够进行动态的磁盘管理.因此,为了解决这个问题,LVM技术就