服务器系统集成及数据服务中心

 

一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
锟斤拷锟斤拷锟斤拷锟斤拷…………………………………………………………………………………………>>>

linux磁盘管理系列之LVM的使用1

linux磁盘管理系列三:LVM的使用

磁盘管理系列

linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html

linux磁盘管理系列二:软RAID的实现  http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_041_raid.html

linux磁盘管理系列三:LVM的使用        http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_042_lvm.html

LVM是什么

LVM是Linux操作系统的逻辑卷管理器。 现在有两个Linux版本的LVM,分别是 LVM1,LVM2。LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本。 LVM2几乎完全向后兼容使用LVM1创建的卷。此例外是快照(在升级到LVM 2之前,必须删除快照卷)。

LVM简介

逻辑卷管理提供了比传统的磁盘和分区视图更高级别的计算机系统上磁盘存储的视图。 这使得系统管理员可以更灵活地将存储分配给应用程序和用户。

在逻辑卷管理器的控制下创建的存储卷可以随意调整大小和移动,尽管这可能需要对文件系统工具进行一些升级。

逻辑卷管理器还允许管理用户定义组中的存储卷,允许系统管理员处理明显命名的卷组(如“development”和“sales”),而不是物理磁盘名称,例如“sda”和“sdb”

LVM基本术语

volume group (VG) 

卷组是LVM中使用的最高级别的抽象。 它将逻辑卷和物理卷集合在一起成为一个管理单元。

physical volume (PV)

一个物理卷通常是一个硬盘,虽然它可能只是一个看起来像一个硬盘(如软件RAID设备)的设备。

logical volume (LV)

相当于非LVM系统中的磁盘分区。 LV作为标准块设备可见 因此LV可以包含文件系统(例如/ home)。

physical extent (PE) 

每个物理卷都被划分为数据块(称为物理扩展盘区),这些扩展盘区与卷组的逻辑盘区具有相同的大小。

logical extent (LE)

每个逻辑卷都被分割成数据块,称为逻辑盘区。 卷组中的所有逻辑卷的区段大小都是相同的。

几个概念的关系

一个具体的例子将有助于:

假设我们有一个名为VG1的卷组,这个卷组的物理盘区大小为4MB。 在这个卷组中,我们引入了2个硬盘分区/dev/hda1和/dev/hdb1。 
这些分区将成为物理卷PV1和PV2(管理员可以自行决定是否提供更有意义的名称)。
PV被分成4MB块,因为这是卷组的大小。磁盘大小不同,我们在PV1中获得99个扩展盘区,在PV2中获得248个扩展盘区。 
我们现在可以创建自己的逻辑卷,它可以是1到347(248 + 99)范围之间的任何大小。 
当创建逻辑卷时,在逻辑盘区和物理盘区之间定义映射,例如, 逻辑盘区1可以映射到PV1的物理盘区51上,写入逻辑盘的第一个4MB的数据实际上被写入到PV1的第51盘区。

映射模式

线性映射 : 将分配一定范围的PE到LV的一个区域,例如LE 1 - 99映射到PV1,LE 100 - 347映射到PV2。

分条映射 : 将跨多个物理卷交织逻辑盘区的块,这个方式一定程度上提高了性能,具体如下

  1st chunk of LE[1] -> PV1[1], #第一个逻辑块在PV1设备上, 第二个在PV2设备上,等等。
  2nd chunk of LE[1] -> PV2[1],
  3rd chunk of LE[1] -> PV3[1],
  4th chunk of LE[1] -> PV1[2],

Snapshots(快照):

这是LVM提供的一个非常棒的功能就是快照了,他允许管理员创建一个新的块设备来呈现一个逻辑卷的的精确副本,在某个时间冻结,管理员可以及时备份指定一致状态下的数据,备份完毕就可以删除设备了。

快照最初包含有关快照的一些元数据,但没有来自源逻辑卷的实际数据。快照使用写时复制(copy on write)技术来检测数据在原始数据块中何时更改。它将拍摄快照时保存的值复制到快照卷中的块中,然后允许将新数据存储在源块中。

随着更多块从源逻辑卷上的原始值发生更改,快照大小也会增加。如果快照卷变满,它将被丢弃,所以分配足够的空间是非常重要的,具体取决于你数据的变换情况,如果快照大小和原始数据一样大,它将永远不会溢出的。

安装LVM

[root@centos7 ~]$ rpm -q lvm2                           # 查看lvm2是否安装了, 我使用的centos7,这是安装的了    
lvm2-2.02.171-8.el7.x86_64    
[root@centos7 ~]$ # yum -y install lvm2                 # 没有安装的话使用yum安装

常用命令简介

复制代码
[root@centos7 ~]$ pv                                                   # 使用tab按键获取pv相关命令    
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan    
[root@centos7 ~]$ vg                                                   # 使用tabl按键获取vg相关的命令    
vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit    
vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs                
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan             
[root@centos7 ~]$ lv                                                   # 使用tabl按键获取lv先关的命令    
lvchange     lvdisplay    lvmconf      lvmdump      lvmsadc      lvremove     lvs              
lvconvert    lvextend     lvmconfig    lvmetad      lvmsar       lvrename     lvscan           
lvcreate     lvm          lvmdiskscan  lvmpolld     lvreduce     lvresize   
复制代码

上面的命令比较多,简单介绍几个常用的命令。

  • pv打头的:代表pv相关的命令
  • vg带头的:代表vg相关的命令
  • lv带头的: 代表lv相关的命令
  • create:创建相关
  • remove:移除相关
  • display:显示相关
  • import:导入 相关
  • export:导出相关
  • rename:重命名
  • vgchange:改变状态相关
  • extend:扩展相关
  • reduce:缩进相关

使用LVM

pv创建

pv作用:初始化磁盘和磁盘分区

在将磁盘或者磁盘分区用作物理卷(PV)之前,你需要对其进行初始化工作。

[root@centos7 ~]$ pvcreate /dev/sdb1

注意:

  1. 不建议对整个磁盘做PV初始化工作。因为其他操作系统不能识别LVM元数据,导致我们认为磁盘是空闲的,重新设置分区覆盖原有数据
  2.  如果是分区需要调整分区的类型为LVM(代码为8e)

分区并设置分区类型

复制代码
[root@centos7 ~]$ fdisk -l    

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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 label type: dos    
Disk identifier: 0x000b0b8a    

   Device Boot      Start         End      Blocks   Id  System    
/dev/sda1   *        2048     2099199     1048576   83  Linux    
/dev/sda2         2099200   270534655   134217728   83  Linux    
/dev/sda3       270534656   372934655    51200000   83  Linux    
/dev/sda4       372934656   419430399    23247872    5  Extended    
/dev/sda5       372938752   413898751    20480000   83  Linux    

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 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 label type: dos    
Disk identifier: 0x93d380cf    

   Device Boot      Start         End      Blocks   Id  System    
/dev/sdb1            2048     2099199     1048576   8e  Linux LVM    
/dev/sdb2         2099200     4196351     1048576   8e  Linux LVM    

Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos    
Disk identifier: 0x73afb36f    

   Device Boot      Start         End      Blocks   Id  System    
/dev/sde1            2048     2099199     1048576   8e  Linux LVM    
/dev/sde2         2099200     6293503     2097152   8e  Linux LVM    

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos    
Disk identifier: 0x7e0900d8    

   Device Boot      Start         End      Blocks   Id  System    
/dev/sdd1            2048     2099199     1048576   8e  Linux LVM    
/dev/sdd2         2099200    12584959     5242880   8e  Linux LVM    

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos    
Disk identifier: 0xc56b90d8    

   Device Boot      Start         End      Blocks   Id  System    
/dev/sdc1            2048     2099199     1048576   8e  Linux LVM    
/dev/sdc2         2099200     4196351     1048576   8e  Linux LVM    

Disk /dev/sdf: 21.5 GB, 21474836480 bytes, 41943040 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    

[root@centos7 ~]$ partprobe     
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.    
[root@centos7 ~]$ lsblk    
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT    
sda      8:0    0  200G  0 disk     
├─sda1   8:1    0    1G  0 part /boot    
├─sda2   8:2    0  128G  0 part     
├─sda3   8:3    0 48.8G  0 part /    
├─sda4   8:4    0  512B  0 part     
└─sda5   8:5    0 19.5G  0 part /app    
sdb      8:16   0  100G  0 disk     
├─sdb1   8:17   0    1G  0 part     
└─sdb2   8:18   0    1G  0 part     
sdc      8:32   0   20G  0 disk     
├─sdc1   8:33   0    1G  0 part     
└─sdc2   8:34   0    1G  0 part     
sdd      8:48   0   20G  0 disk     
├─sdd1   8:49   0    1G  0 part     
└─sdd2   8:50   0    5G  0 part     
sde      8:64   0   20G  0 disk     
├─sde1   8:65   0    1G  0 part     
└─sde2   8:66   0    2G  0 part     
sdf      8:80   0   20G  0 disk     
sr0     11:0    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64
复制代码

上面我们在/dev/sd{b,c,d,e}这4个盘每个都有2个类型为lvm的盘。接下来使用pvcreat初始化为物理卷

复制代码
[root@centos7 ~]$ pvcreate /dev/sd{b1,b2,c1,c2,d1,d2,e1,e2} -y        # 这里加入了-y选项,之前的盘有文件系统的。 我这里强制创建了    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Wiping xfs_external_log signature on /dev/sdb2.    
  Physical volume "/dev/sdb1" successfully created.    
  Physical volume "/dev/sdb2" successfully created.    
  Physical volume "/dev/sdc1" successfully created.    
  Physical volume "/dev/sdc2" successfully created.    
  Physical volume "/dev/sdd1" successfully created.    
  Physical volume "/dev/sdd2" successfully created.    
  Physical volume "/dev/sde1" successfully created.    
  Physical volume "/dev/sde2" successfully created.
复制代码

pv信息查看

复制代码
[root@centos7 ~]$ pvs                                           # 详细信息可以使用pvdisplay查看    
  PV         VG         Fmt  Attr PSize    PFree       
  /dev/sdb1  vg_test_01 lvm2 a  1020.00m 1020.00m    
  /dev/sdb2             lvm2 -     1.00g    1.00g    
  /dev/sdc1  vg_test_01 lvm2 a  1020.00m 1020.00m    
  /dev/sdc2             lvm2 -     1.00g    1.00g    
  /dev/sdd1  vg_test_01 lvm2 a  1020.00m 1020.00m    
  /dev/sdd2             lvm2 -     5.00g    5.00g    
  /dev/sde1  vg_test_01 lvm2 a  1020.00m 1020.00m    
  /dev/sde2             lvm2 -     2.00g    2.00g
复制代码

vg创建

vg的创建是比较简单的。

[root@centos7 ~]$ vgcreate  vg_test_01 /dev/sd{b1,c1,d1,e1}    # 上面我们创建了8个pv,这里我们使用4个1的设备去创建vg,创建后默认vg是激活状态的    
  Volume group "vg_test_01" successfully created

vg信息的查看

复制代码
[root@centos7 ~]$ vgs                                 # 查看简短的信息    
  VG         #PV #LV #SN Attr   VSize VFree    
  vg_test_01   4   0   0 wzn- 3.98g 3.98g    
[root@centos7 ~]$ vgdisplay                           # 查看详细的信息    
  - Volume group -    
  VG Name               vg_test_01                    # vg的名字    
  System ID                 
  Format                lvm2                          # lvm格式, 这里是lvm2的    
  Metadata Areas        4    
  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                4    
  Act PV                4    
  VG Size               3.98 GiB                       # 这是我们4个pv的总大小    
  PE Size               4.00 MiB                       # pe的大小    
  Total PE              1020    
  Alloc PE / Size       0 / 0                          # 分配的大小,这里我们还没有创建lv,所以为0    
  Free  PE / Size       1020 / 3.98 GiB                # 分配后剩余的空间,第一个数是剩余的个数,第二个数是剩余的空间大小,2个都是剩余的只是单位表示不一样而已    
  VG UUID               Y5NjjP-e3Aq-3u6E-gw6P-fLyy-Y5pN-ryyN9R  # vg设备的uuid
复制代码

vg的激活

[root@centos7 ~]$ vgchange -a y vg_test_01                               # 我们上面就是激活状态的,如果我们重启系统,或者vgchange -y n命令关闭了,就需要这个命令启动下    
  0 logical volume(s) in volume group "vg_test_01" now active

vg的移除

[root@centos7 ~]$ vgchange -a n vg_test_01                       # 要想移除vg,需要先关闭vg才能移除,这里先关闭    
  0 logical volume(s) in volume group "vg_test_01" now active    
[root@centos7 ~]$ vgremove  vg_test_01                           # 移除vg,

vg的添加成员

[root@centos7 ~]$ vgcreate  vg_test_01 /dev/sd{b1,c1,d1,e1}       # 上面我把vg删了,这里重新添加进来    
  Volume group "vg_test_01" successfully created    
[root@centos7 ~]$ vgextend vg_test_01  /dev/sdb2                  # 添加一个pv2到vg中来    
  Volume group "vg_test_01" successfully extended

vg的删除成员

这个操作需要使用vgdisplay查看vg的使用情况和删除的pv上没有数据。如果有使用pvmove迁移完毕数据才能移除。

[root@centos7 ~]$ vgreduce  vg_test_01  /dev/sdb2    
  Removed "/dev/sdb2" from volume group "vg_test_01"

lv的创建

复制代码
[root@centos7 ~]$ vgdisplay                        # lv逻辑卷创建之前, 需要查看下vg信息    
  - Volume group -    
  VG Name               vg_test_01    
  System ID                 
  Format                lvm2    
  Metadata Areas        4    
  Metadata Sequence No  3    
  VG Access             read/write    
  VG Status             resizable    
  MAX LV                0    
  Cur LV                0    
  Open LV               0    
  Max PV                0    
  Cur PV                4    
  Act PV                4    
  VG Size               3.98 GiB    
  PE Size               4.00 MiB    
  Total PE              1020    
  Alloc PE / Size       0 / 0       
  Free  PE / Size       1020 / 3.98 GiB    
  VG UUID               sZwHea-LabA-SJaV-Wz40-qFp3-Um2w-pvmJAY    
       
[root@centos7 ~]$ lvcreate -L 2G  -n lv_test_01 vg_test_01                 # 我们的vg是近4G的,我这里创建一个2G的lv,之前磁盘使用了文件系统慈爱有如下警告。输入y即可。    
WARNING: linux_raid_member signature detected on /dev/vg_test_01/lv_test_01 at offset 4096. Wipe it? [y/n]: y    
  Wiping linux_raid_member signature on /dev/vg_test_01/lv_test_01.    
WARNING: ext4 signature detected on /dev/vg_test_01/lv_test_01 at offset 1080. Wipe it? [y/n]: y    
  Wiping ext4 signature on /dev/vg_test_01/lv_test_01.    
  Logical volume "lv_test_01" created.
复制代码

lv的移除

[root@centos7 ~]$ lvremove  /dev/vg_test_01/lv_test_01     
# 这个移除我们上面创建lv_test_01这个逻辑卷, 下面提示这个是活动的逻辑卷,输入y就可以了 Do you really want to remove active logical volume vg_test_01
/lv_test_01? [y/n]: y Logical volume "lv_test_01" successfully removed

注意: 如果这个lv被挂载了。 请先umount

挂载文件系统

复制代码
[root@centos7 ~]$ lvcreate -L 2G  -n lv_test_01 vg_test_01                             # 上面我们删除了lv,这里需要创建出来    
  Logical volume "lv_test_01" created.    
[root@centos7 ~]$ mkfs.ext4  /dev/vg_test_01/lv_test_01                                  # 这里我使用ext4 文件系统了。centos7默认使用的文件系统是xfs,但是xfs不支持缩减的    
    
[root@centos7 ~]$ mkdir /mnt/test_01                                                    # 创建挂载点目录    
[root@centos7 ~]$ mount /dev/vg_test_01/lv_test_01  /mnt/test_01/                       # 挂载逻辑卷
复制代码
发布时间:2019/10/28 阅读:6073次 来源:互联网
 


 
锟斤拷锟斤拷锟斤拷锟斤拷分类
   
  行业新闻
 
  公司动态
 
  技术资料
 
  电脑维修
 
  恢复案例
 
  SQL数据库
 
  磁盘阵列
 
  服务器
 
  财务软件
 
  网络问题
 
  linux-XFS
 
  苹果电脑&系统
 
  安卓系统相关
 
  办公文件
 
  操作系统
 
  日常生活(烟台)
 
  网站相关
 
   
 
友情链接
 
 
 
 
 
   
公司地址:烟台电脑市场#308
电话:0535-6688830 E-Mail:163@163.com
Copyright©2011-2012 烟台瑞驰科贸有限公司 All Rights Reserved.
鲁ICP备11014811号-1
您是本站第 位访问者