逻辑卷管理(十八)

为什么要使用逻辑卷管理?

逻辑卷:

优点:在于灵活管理

1、动态扩容

2、在线扩容

3、离线裁剪

4、数据条带化

5、数据镜像

基本概念:

物理卷(pv):

物理卷是底层真正存放数据的一个设备,该设备可以是整块磁盘也可以是磁盘的某个分区。

卷组(vg):

卷组是建立在物理卷之上,它是由一个或者多个物理卷组成的。即将很多个物理卷融合在一起来提供容量。

逻辑卷(lv):

逻辑卷是建立在卷组之上,它是从卷组中“切”出来一块空间来让用户使用。

物理区域(PE):

每一个物理卷被划分成称为PE的最小单位。默认是4M,寻址的最小单位。

逻辑区域(LE):

逻辑卷被划分为称为LE的可被寻址的最小单位。在同一个卷组中PE和LE的大小是一一对应的。

总结:

真实的物理设备——>逻辑上做成物理卷(pv)——>卷组(vg)——>逻辑卷(lv)

dmoe1:

创建一个普通的逻辑卷,大小是1G,挂载使用。
1、拿一块硬盘
2、将硬盘分区(根据实际情况)
sdb      8:16   0   20G  0 disk 
├─sdb1   8:17   0    2G  0 part 
├─sdb2   8:18   0    2G  0 part 
├─sdb3   8:19   0    6G  0 part 
└─sdb4   8:20   0   10G  0 part 
3、将设备做成物理卷
# pvcreate /dev/sdb1
查看:
pvs 简单查看
pvdisplay 详细查看
4、创建卷组,将物理卷加入到卷组
# vgcreate vg01 /dev/sdb1
  Volume group "vg01" successfully created
-l: 卷组上允许创建的最大逻辑卷数
-s:卷组上的物理卷的PE大小
-p:卷组中允许添加的最大物理卷数
查看:
vgs
vgdisplay
5、创建逻辑卷,大小1G
# lvcreate -n lv01 -L 1G vg01
-L:指定最终大小
-l:指定pe的个数或者卷组剩余空间的百分比
# lvcreate -n lv02 -l 50 vg01
# lvcreate -n lv03 -l 50%free vg01
查看:
lvs
lvdisplay
6、将逻辑卷格式化
创建好的逻辑卷会映射到以下两个地方:
# ll /dev/mapper/vg01-lv01
lrwxrwxrwx. 1 root root 7 Apr  8 10:42 /dev/mapper/vg01-lv01 -> ../dm-2
# ll /dev/vg01/lv01
lrwxrwxrwx. 1 root root 7 Apr  8 10:42 /dev/vg01/lv01 -> ../dm-2
mkfs -t ext4 /dev/mapper/vg01-lv01
或者
mkfs.ext4 /dev/vg01/lv01
7、挂载使用
mount /dev/vg01/lv01 /u01
demo2:在线扩容逻辑卷
情况1:当卷组剩余空间不够
1、扩容卷组
# vgextend vg01 /dev/sdb3
  No physical volume label read from /dev/sdb3
  Physical volume /dev/sdb3 not found
  Physical volume "/dev/sdb3" successfully created
  Volume group "vg01" successfully extended
说明:
卷组是由物理卷组成的,如果直接将设备加入卷组,那么系统会自动先将设备做成pv,然后在加入。
2、扩容逻辑卷
# lvextend -L +2G /dev/vg01/lv01  在原来的基础上增加2G空间
3、同步文件系统
# resize2fs /dev/vg01/lv01
情况2:当前卷组剩余空间足够
1、扩容逻辑卷
# lvextend -L 3G /dev/vg01/lv01  将原来的逻辑卷扩大到3G
2、同步文件系统
# resize2fs /dev/vg01/lv01
实例:动态扩容根文件系统
demo3:离线裁剪逻辑卷
1、卸载逻辑卷
umount /dev/vg01/lv01
2、裁剪文件系统
# e2fsck -f /dev/mapper/vg01-lv01
# resize2fs /dev/mapper/vg01-lv01 2G
3、裁剪逻辑卷
# lvreduce -L 2G /dev/mapper/vg01-lv01
# e2fsck -f /dev/mapper/vg01-lv01
4、挂载使用
# mount /dev/mapper/vg01-lv01 /u01
注意:
1、离线裁剪之前最好将数据备份
2、裁剪后的空间大小一定要大于数据大小
demo4:总结逻辑卷相关的命令
创建物理卷
pvcreate /dev/sdb /dev/sdc[1-3]
创建卷组
vgcreate vg01 /dev/sdb
创建逻辑卷
lvcreate -n lv01 -L 2G vg01
lvcreate -n lv02 -l 50 vg02
lvcreate -n lv03 -l 50%free vg03
扩容卷组
vgextend vg01 /dev/sdc[1-3]
扩容逻辑卷
lvextend -L +1G /dev/vg01/lv01
删除逻辑卷
# lvremove /dev/mapper/vg01-lv03 
删除卷组
# vgremove vg01
删除物理卷
# pvremove /dev/sdb /dev/sdc[1-3]
将一个物理卷从卷组里移除
# vgreduce vg01 /dev/sdb2
注意:
该物理卷没有被使用才能够移除
demo5:逻辑卷实现条带化
条带化:
把保存在逻辑卷上的数据分成n等分,分别同时写入到不同的物理卷中,可以提高数据的读写速率;如果任何一个涉及到物理卷损坏,数据都会无法恢复。
创建前:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  vg_node1 lvm2 a--  19.51g    0 
  /dev/sdb1  vg01     lvm2 a--   2.00g 2.00g
  /dev/sdb2  vg01     lvm2 a--   2.00g 2.00g
创建条带化的逻辑卷:
# lvcreate -n lv01 -L 1G -i 2 vg01 /dev/sdb[12]
-i:指定条带化的个数
创建后:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  vg_node1 lvm2 a--  19.51g    0 
  /dev/sdb1  vg01     lvm2 a--   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a--   2.00g 1.50g
格式化文件系统:
mkfs.ext4 /dev/vg01/lv01
挂载使用
mount /dev/vg01/lv01 /u01
测试验证:
# iostat -d -m /dev/sdb[12] 2
demo6:逻辑卷实现镜像
镜像:对某个逻辑卷做数据镜像,实现数据备份作用。
创建前:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  vg_node1 lvm2 a--  19.51g    0 
  /dev/sdb1  vg01     lvm2 a--   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a--   2.00g 1.50g
  /dev/sdb3  vg02     lvm2 a--   2.00g 2.00g
  /dev/sdb4  vg02     lvm2 a--   2.00g 2.00g
创建一个互为镜像的逻辑卷:
# lvcreate -n lv02 -L 1G -m 1 vg02 /dev/sdb[34]
-m:指定镜像的个数
# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Move Log       Cpy%Sync Convert
  lv01    vg01     -wi-ao----  1.00g                                                   
  lv02    vg02     mwi-a-m---  1.00g                         lv02_mlog   100.00  数据同步100%完成
创建后:
# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  vg_node1 lvm2 a--  19.51g    0 
  /dev/sdb1  vg01     lvm2 a--   2.00g 1.50g
  /dev/sdb2  vg01     lvm2 a--   2.00g 1.50g
  /dev/sdb3  vg02     lvm2 a--   2.00g 1.00g
  /dev/sdb4  vg02     lvm2 a--   2.00g 1.00g
格式化文件系统并且挂载使用
# mkfs.ext4 /dev/vg02/lv02
# mkdir /u02
# mount /dev/mapper/vg02-lv02 /u02
测试验证:
# dd if=/dev/zero of=/dev/sdb3 bs=1M count=300
# vgreduce --removemissing -f vg02  强制从卷组中移除损坏的盘
再次将逻辑卷挂载使用,我们需要将坏的盘修好换成健康的盘让其再次互为镜像:
# lvconvert -m 1 /dev/vg02/lv02 /dev/sdb[34]

练习:

1、添加一块新的10g硬盘到你的linux系统中,并将其分为2个分区(大小自己决定),如sdb1和sdb2

[[email protected] ~]# lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                          11:0    1 1024M  0 rom  
sda                           8:0    0   20G  0 disk 
├─sda1                        8:1    0  500M  0 part /boot
└─sda2                        8:2    0 19.5G  0 part 
  ├─VolGroup-lv_root (dm-0) 253:0    0 17.6G  0 lvm  /
  └─VolGroup-lv_swap (dm-1) 253:1    0    2G  0 lvm  [SWAP]
sdb                           8:16   0   10G  0 disk 
└─VolGroup-lv01 (dm-2)      253:2    0    5G  0 lvm  /data
sdc                           8:32   0   10G  0 disk 
[[email protected] ~]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x989783d7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).
 
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition‘s system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5G
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (655-1305, default 655):
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-1305, default 1305): 1305
 
Command (m for help): p
 
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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: 0x989783d7
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         654     5253223+  83  Linux
/dev/sdc2             655        1305     5229157+  83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

2、创建大小为2G的逻辑卷lv01挂载到系统中的/u01目录下面,并且在/u01目录下面创建file1~file5 5个文件。

[[email protected] ~]# mkdir /u01
[[email protected] ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
[[email protected] ~]# pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created
[[email protected] ~]# vgextend  VolGroup /dev/sdc[1-2]
  Volume group "VolGroup" successfully extended
[[email protected] ~]# lvcreate -n lv02 -L 2G VolGroup
  Logical volume "lv02" created
[[email protected] ~]# mkfs -t ext4 /dev/mapper/VolGroup-lv02
[[email protected] ~]# mount /dev/mapper/VolGroup-lv02 /u01
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       18G   14G  3.0G  82% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   28M  425M   6% /boot
/dev/mapper/VolGroup-lv01
                      4.8G   19M  4.6G   1% /data
/dev/mapper/VolGroup-lv02
                      2.0G  3.0M  1.9G   1% /u01
[[email protected] ~]# touch /u01/file{1..5}
[[email protected] ~]# ls /u01
file1  file2  file3  file4  file5  lost+found

3、假设sdb1分区有坏块,现在需要将sdb1分区上的数据快速移动到另外的硬盘sdb2上,怎么做?

首先,先在sdb2新建一个逻辑卷,然后挂载,把sdb1分区上的数据拷贝到sdb2

4、由于业务需要,/u01目录需要扩大到9G,怎么做?

[[email protected] ~]# lvextend -L +7G /dev/mapper/VolGroup-lv02 
[[email protected] ~]# resize2fs /dev/mapper/VolGroup-lv02

5、新建一个卷组vg02,PEsize为8M,在卷组中创建一个名为lv02的逻辑卷,大小为50个pe,格式化成ext3的文件系统挂载使用,要求开机自动挂载

vgcreate -s 8M vg02 /dev/sda3
lvcreate -n lv02 -l 50 vg02
mkfs.ext3 /dev/mapper/vg02-lv02

扩展:

1、测试验证已有逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取到原来的数据?需要怎么做?

不能正常读取原来数据,已经有分区表,可以挂载读到原来的数据,重要的是原服务器必须关机,要不加不了

正常的步骤是添加进去先要激活vg,然后才可以挂载使用

vgchange -a y lvm_list激活卷组

2、测试验证已有互为镜像的逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取数据?怎么做?

原来服务器关掉,现有服务器也关掉,然后把原服务器互为镜像的逻辑硬盘加到现在服务器,可以读取数据,需要正常挂载

lvmdiskcan扫描块设备,看看那些是逻辑卷

逻辑卷迁移:

源端:
1)将源文件系统umount
 umount /test
2)将lv和lv inactive
lvchange -an /dev/vg_test/lv_test
vgchange -an vg_test
3)导出vg
vgexport vg_test
目标端:
1)永kudzu检测新的盘
2)导入vg
vgimport vg_test
3)激活vg
vgchange -ay vg_test
3)mount文件系统
时间: 2024-10-24 10:01:42

逻辑卷管理(十八)的相关文章

Linux常用命令(八)LVM逻辑卷管理

一.LVM概述     LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性. 需要注意的是,"/boot"分区不能基于LVM创建,必须独立出来. 1.pv(PhysicalVolume,物理卷) 物理卷是LVM机制的基本存储设备,通常对应一个普通分区或整个硬盘.创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用

CentOS 6.3下配置LVM(逻辑卷管理)

一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用.在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操

CentOS 6.3下配置LVM(逻辑卷管理

CentOS 6.3下配置LVM(逻辑卷管理) 一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用.在传统的磁盘管理机制中,我们的上层 应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对

配置LVM(逻辑卷管理)

配置LVM(逻辑卷管理) 一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用.在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时

【转载】Linux磁盘管理:LVM逻辑卷管理

Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化,在Linux系统中如果要使用该分区就将其挂载上去即可,windows的话其实底

Linux 服务器配置LVM(逻辑卷管理)

LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池.管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统. 与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储.它使系统管理员可以更方便的为应用

Centos 6.6配置LVM(逻辑卷管理)

LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池.管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统. 与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储.它使系统管理员可以更方便的为应用

Linux 系统 LVM(Logical Volume Manager)逻辑卷管理

一.前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到 当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值.因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统.清除硬 盘.重新对硬盘分区,然后恢复数据到新分区. 虽然现在有很多动态调整磁盘的工具可以使用,例如PartationMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽:另 外一个方面这需要重新

Centos 7.4 服务器配置LVM(逻辑卷管理)

本章Blog相关知识点: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池.管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统. 与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储.它使系统管理员可以