一、需求分析

1,当我们需要存储一个500G的不可分割文件时,但是我们设备上没有这么大的单个磁盘。

2,当我们在搭建一个服务,由于日常运转产生大量文件,磁盘容量不够用了,怎么办?添加磁盘,不行,换个大的,好像也不太合适。

3,由于磁盘损坏等各种原因,需要换磁盘,但是还不能停止服务,这个...有难度。

二、什么是LVM

LVM(Logical Volume Manager,逻辑卷管理),lvm将linux中物理磁盘虚拟化,这样以来,我们看到的和我们操作磁盘并非对应一个真正物理磁盘,而是将一块或多块物理磁盘虚拟之后组合在一起形成一个大容器,然后从这个大容器中虚拟出一块或多块硬盘出来供我们操作。这样就便于我们对磁盘进行扩展和管理,就可以轻松解决上面的各种需求。

LVM的组成结构分为三层,分别是物理卷,卷组还有逻辑卷。

物理卷(physical volume,PV):有物理磁盘或是RAID设备构成,一个物理卷和一块磁盘分区一一对应,用于构建卷组。

卷组(Volume Group,VG):由一个或者多个物理卷构成的大容器,这个容器不能直接使用,需要将它划分成区块使用。

逻辑卷(logical volume,LV):逻辑卷就是我们真正要使用的空间,它和使用普通磁盘分区没有任何区别,需要格式化、挂载后方可使用。

三、如何创建LVM

LVM创建步骤:

1.提供可供LVM使用物理磁盘分区

2.将物理磁盘分区转换为物理卷

3.将一个或多个物理卷创建为卷组

4.在创建好的卷组中创建逻辑卷

5.然后就是格式化和挂载了

我们来一步步创建LVM

   1.创建LVM分区

[root@localhost ~]# fdisk /dev/sdbCommand (m for help): nCommand actione   extendedp   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-6527, default 1):Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +5GCommand (m for help): tSelected partition 1Hex code (type L to list codes): 8eChanged system type of partition 1 to 8e (Linux LVM)Command (m for help): w[root@localhost ~]# fdisk -l /dev/sdbDisk /dev/sdb: 53.7 GB, 53687091200 bytes255 heads, 63 sectors/track, 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xccb363d8Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1         654     5253223+  8e  Linux LVM[root@localhost ~]#

重复以上步骤创建三个LVM分区

   2.将物理分区转换为逻辑分区

用到的命令为pvcreate,这个命令基本不需要什么选项

用法:pvcreate [选项] 物理磁盘(可多个)

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3Physical volume "/dev/sdb1" successfully createdPhysical volume "/dev/sdb2" successfully createdPhysical volume "/dev/sdb3" successfully created[root@localhost ~]#

就这样,三个物理卷就创建好了,要查看已经创建好的物理卷可以用pvs和pvdisplay两命令,pvs是简单列出所有物理卷,pvdisplay列出每个详细信息

[root@localhost ~]# pvsPV         VG            Fmt  Attr PSize  PFree/dev/sda2  vg_centos6464 lvm2 a--  19.51g    0/dev/sdb1                lvm2 a--   5.01g 5.01g/dev/sdb2                lvm2 a--   5.01g 5.01g/dev/sdb3                lvm2 a--   5.01g 5.01g[root@localhost ~]#

以上有四个物理,其中有三个是我们刚刚创建的

pvdisplay查看物理卷的详细信息

pvdisplay [选项] [指定物理卷]

[root@localhost ~]# pvdisplay /dev/sdb1"/dev/sdb1" is a new physical volume of "5.01 GiB"--- NEW Physical volume ---PV Name               /dev/sdb1VG Name             PV Size               5.01 GiBAllocatable           NOPE Size               0 Total PE              0Free PE               0Allocated PE          0PV UUID               8hc2Yw-pM79-fS4E-223V-k5Ra-9GVp-EezZZV[root@localhost ~]#

   3.将以创建的三个物理卷组合成卷组

创建卷组用vgcreate命令

vgcreate [选项] 卷组名称  物理卷(一个或多个)

常用选项-s,设置物理卷的扩展块大小(PhysicalExtentSize,PE),PE就相当于磁盘分区中的块大小,是逻辑卷伸缩的基本单位,默认为4MB,这个在至少是1K,而且是2的倍数。

[root@localhost ~]# vgcreate myvg /dev/sdb1 /dev/sdb2 /dev/sdb3Volume group "myvg" successfully created[root@localhost ~]#

和物理卷类似,查看卷组用vgs和vgdispaly命令。

[root@localhost ~]# vgsVG            #PV #LV #SN Attr   VSize  VFreemyvg            3   0   0 wz--n- 15.02g 15.02gvg_centos6464   1   2   0 wz--n- 19.51g     0[root@localhost ~]#

   4.在已经创建好的卷组中创建逻辑卷

创建逻辑卷用lvcreate命令

NAMElvcreate - create a logical volume in an existing volume groupSYNOPSISlvcreate  [--addtag  Tag]  [--alloc  AllocationPolicy]  [-a|--activate  [a|e|l]{y|n}][-A|--autobackup {y|n}] [-C|--contiguous {y|n}] [-d|--debug] [-h|-?|--help] [--noude-vsync]  [--ignoremonitoring] [--monitor {y|n}] [-i|--stripes Stripes [-I|--stripesizeStripeSize]] {[-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}]  |  -L|--size  Logi-calVolumeSize[bBsSkKmMgGtTpPeE]]  |  -V|--virtualsize  VirtualSize[bBsSkKmMgGtTpPeE]}[-M|--persistent {y|n}] [--minor minor] [-m|--mirrors Mirrors [--nosync] [--mirrorlog{disk|core|mirrored}  |  --corelog] [-R|--regionsize MirrorLogRegionSize]] [-n|--nameLogicalVolume{Name|Path}]  [-p|--permission  {r|rw}]  [-r|--readahead  {ReadAheadSec-tors|auto|none}]   [-t|--test]   [-T|--thin   [-c|--chunksize  ChunkSize[bBsSkKmMgG]][--discards   {ignore|nopassdown|passdown}]   [--poolmetadatasize   ThinPoolMetadata-Size[bBsSkKmMgG]]] [--thinpool ThinPoolLogicalVolume{Name|Path}] [--type SegmentType][-v|--verbose] [-Z|--zero  {y|n}]  VolumeGroup{Name|Path}[/ThinPoolLogicalVolumeName][PhysicalVolumePath[:PE[-PE]]...]

常用选项

-n name:指定逻辑卷名称

-l #:指定逻辑卷大小,#用PE个数表示,很少用

-L #:指定逻辑卷大小,#用K,M,G等单位表示,很常用

-p #:指定访问权限,#是r或者rw

[root@localhost ~]# lvcreate -p rw -L 10G -n mylv myvgLogical volume "mylv" created[root@localhost ~]#

和物理卷类似,使用lvs和lvdisplay查看所有逻辑卷

[root@localhost ~]# lvsLV      VG            Attr      LSize  Pool Origin Data%  Movemylv    myvg          -wi-a---- 10.00g                                           lv_root vg_centos6464 -wi-ao--- 15.60g                                           lv_swap vg_centos6464 -wi-ao---  3.91g                                           [root@localhost ~]#

   5.使用逻辑卷

到处为止,LVM创建已经搞定

值得注意的是逻辑卷的访问路径,每当成功创建一个逻辑卷,就会在/dev/中创建一个md-[数字]的设备文件,这个文件就是该逻辑卷的访问路径,但是不便于区分,与此同时,会在/dev/mapper/中创建一个软连接文件,还会在/dev/中创建一个与卷组名同名的目录,在这个目录中会创建与逻辑卷同名的软连接文件,这两个软连接文件都同时指向/dev/md-[数字]文件。

接下来的工作就是格式化和挂载

[root@localhost ~]# mke2fs -t ext4 /dev/mapper/myvg-mylvmke2fs 1.41.12 (17-May-2010)文件系统标签=操作系统:Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks655360 inodes, 2621440 blocks131072 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=268435456080 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632正在写入inode表: 完成                          Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成This filesystem will be automatically checked every 24 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.[root@localhost ~]# mkdir /test[root@localhost ~]# mount /dev/mapper/myvg-mylv /test/[root@localhost ~]# ls /test/lost+found[root@localhost ~]#

五、调整LVM

   1.为卷组扩容

首先创建一个物理卷,然后将这个物理卷添加至卷组

使用vgextend命令添加物理卷至卷组

vgextend VG_NAME PV_NAME(一个或者多个)

[root@localhost ~]# vgextend myvg /dev/sdb5No physical volume label read from /dev/sdb5Physical volume "/dev/sdb5" successfully createdVolume group "myvg" successfully extended[root@localhost ~]#

   2.减小卷组容量,移除物理卷

由于上层逻辑卷的数据是分散存储在各个物理卷上,所以当需要移除物理卷时,需要将该物理卷的数据转移到别的物理卷上

a.移动数据用pvmove命令

pvmove PV_NAME(要移除的物理卷)

[root@localhost ~]# pvmove /dev/sdb1/dev/sdb1: Moved: 10.8%/dev/sdb1: Moved: 30.7%/dev/sdb1: Moved: 49.8%/dev/sdb1: Moved: 69.4%/dev/sdb1: Moved: 88.6%/dev/sdb1: Moved: 100.0%[root@localhost ~]#

b.用vgreduce命令移除物理卷

vgreduce VG_NAEM PV_NAME[root@localhost ~]# vgreduce myvg /dev/sdb1Removed "/dev/sdb1" from volume group "myvg"[root@localhost ~]#

   3.为逻辑卷扩容

为逻辑卷扩容分为两部分,首页是扩展物理边界,然后是扩展逻辑边界。那么什么是物理边界,什么又是逻辑边界。

物理边界:新创建的逻辑卷,还没有格式化的,不能直接使用

逻辑边界:已经对逻辑卷格式化,格式化之后的大小才是我们可以真正使用的大小

所以我们需要先扩展物理边界,然后扩展逻辑边界

扩展物理边界使用lvextend

lvextend -L [+]SIZE LV_NAME

-L [+]SIZE:指定扩展大小,+表示增加多少,没有+表示增加到多少

在扩展之前如果该逻辑卷已经挂载,需要将它卸载

为了验证扩展容量不会丢失数据,我们先先创建一些数据

[root@localhost ~]# cp -R /etc/ /data[root@localhost ~]# ls /data/etc  lost+found[root@localhost ~]#

然后我们卸载这个逻辑卷,然后对其扩展物理边界

[root@localhost ~]# umount /data[root@localhost ~]# lvextend -L +3G /dev/mapper/myvg-mylvExtending logical volume mylv to 13.00 GiBLogical volume mylv successfully resized[root@localhost ~]# lvsLV      VG            Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convertmylv    myvg          -wi-a---- 13.00g                                           lv_root vg_centos6464 -wi-ao--- 15.60g                                           lv_swap vg_centos6464 -wi-ao---  3.91g                                           [root@localhost ~]# mount /dev/mapper/myvg-mylv /data/[root@localhost ~]# ls /data/etc  lost+found[root@localhost ~]# df -h /data文件系统      容量  已用  可用 已用%% 挂载点/dev/mapper/myvg-mylv9.9G  179M  9.2G   2% /data[root@localhost ~]#

从上面的操作我们可以看出,我们已经成功扩展了逻辑边界,数据也没有丢失,但是真正可以使用的空间并没有扩大,这是我们就需要来扩展逻辑边界了

扩展逻辑边界使用resize2fs命令

resize2fs LV_NAME

扩展逻辑分区时,逻辑卷同样不能挂载

[root@localhost ~]# umount /data[root@localhost ~]# resize2fs /dev/mapper/myvg-mylvresize2fs 1.41.12 (17-May-2010)The filesystem is already 3407872 blocks long.  Nothing to do![root@localhost ~]# mount /dev/mapper/myvg-mylv /data[root@localhost ~]# ls /data/etc  lost+found[root@localhost ~]# !dfdf -h /data文件系统      容量  已用  可用 已用%% 挂载点/dev/mapper/myvg-mylv13G  182M   12G   2% /data[root@localhost ~]#

到此,逻辑卷扩容已经搞定了

   4.减小逻辑卷容量

减小逻辑卷容量和逻辑卷扩展正好相反,先减小逻辑边界再减小物理边界,但是在缩减逻辑边界之前需要强制检查文件系统

强制检查文件系统使用e2fsck命令

e2fsck -f LV_NAME

[root@localhost ~]# e2fsck -f /dev/mapper/myvg-mylve2fsck 1.41.12 (17-May-2010)第一步: 检查inode,块,和大小第二步: 检查目录结构第3步: 检查目录连接性Pass 4: Checking reference counts第5步: 检查簇概要信息/dev/mapper/myvg-mylv: 2099/851968 files (0.0% non-contiguous), 99908/3407872 blocks[root@localhost ~]#

减小逻辑边界用resize2fs命令

resize2fs LV_NAME SIZE

[root@localhost ~]# resize2fs /dev/mapper/myvg-mylv 10Gresize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/mapper/myvg-mylv to 2621440 (4k) blocks.The filesystem on /dev/mapper/myvg-mylv is now 2621440 blocks long.[root@localhost ~]#

缩减物理分区用lvreduce命令

lvreduce -L [-]SIZE LV_NAME

缩减物理边界和扩展物理边界类似,指定大小时,-表示减少多少,没有-表示减少到多少

[root@localhost ~]# lvreduce -L -3G /dev/mapper/myvg-mylvWARNING: Reducing active logical volume to 10.00 GiBTHIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce mylv? [y/n]: yReducing logical volume mylv to 10.00 GiBLogical volume mylv successfully resized[root@localhost ~]#

我们来检验一下数据是否丢失

[root@localhost ~]# lvsLV      VG            Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convertmylv    myvg          -wi-a---- 10.00g                                           lv_root vg_centos6464 -wi-ao--- 15.60g                                           lv_swap vg_centos6464 -wi-ao---  3.91g                                           [root@localhost ~]# mount /dev/mapper/myvg-mylv /data[root@localhost ~]# ls /data/etc  lost+found[root@localhost ~]# df -h /data文件系统      容量  已用  可用 已用%% 挂载点/dev/mapper/myvg-mylv9.9G  179M  9.2G   2% /data[root@localhost ~]#

到此,逻辑卷缩减工作就已经搞定了

六、移除LVM

移除LVM就很简单了,但是,一定提醒大家,在移除LVM之前,请确保数据备份已经搞定

移除LVM分为以下几个步骤:

1.移除逻辑卷

2.移除卷组

3.移除物理卷

移除逻辑卷使用lvremove命令

lvremove LV_NAME

[root@localhost ~]# lvremove /dev/mapper/myvg-mylvDo you really want to remove active logical volume mylv? [y/n]: yLogical volume "mylv" successfully removed[root@localhost ~]#

移除卷组使用vgremove命令

vgremove VG_NAME[root@localhost ~]# vgremove myvgVolume group "myvg" successfully removed[root@localhost ~]#

移除物理卷使用pvremove

pvremove PV_NAME

[root@localhost ~]# pvsPV         VG            Fmt  Attr PSize  PFree/dev/sda2  vg_centos6464 lvm2 a--  19.51g    0/dev/sdb1                lvm2 a--   5.01g 5.01g/dev/sdb2                lvm2 a--   5.01g 5.01g/dev/sdb3                lvm2 a--   5.01g 5.01g/dev/sdb5                lvm2 a--   5.01g 5.01g[root@localhost ~]# pvremove /dev/sdb5Labels on physical volume "/dev/sdb5" successfully wiped[root@localhost ~]# pvsPV         VG            Fmt  Attr PSize  PFree/dev/sda2  vg_centos6464 lvm2 a--  19.51g    0/dev/sdb1                lvm2 a--   5.01g 5.01g/dev/sdb2                lvm2 a--   5.01g 5.01g/dev/sdb3                lvm2 a--   5.01g 5.01g[root@localhost ~]#

LVM的创建、调整和移除就到此结束了,本文仅仅介绍了一个基本的流程,简单的使用没有什么问题了,关于LVM的更多详细使用还需要大家上网查阅详细资料,我也会在后期做一些补充,在阅读完本文后,希望能提出宝贵的意见,以帮助我更快的进步^_^

转载于:https://blog.51cto.com/becaning/1348365

linux磁盘管理------LVM相关推荐

  1. linux磁盘管理命令 lv,Linux磁盘管理--LVM原理及基本操作

    LVM(Logical Volume Manager)逻辑卷管理是Linux磁盘管理中的常用操作, 本文主要描述LVM的基本原理以及对LVM的扩展和缩减的基本操作. LVM实质是过软件方式将多个物理分 ...

  2. linux磁盘管理--LVM扩容

    Logical Volume Manager 简介 制作LVM逻辑卷 LVM逻辑卷扩容 简介 概念: LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻 ...

  3. Linux磁盘管理——df、du、磁盘分区、格式化、挂载、LVM

    2019独角兽企业重金招聘Python工程师标准>>> Linux磁盘管理 一. df命令 df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> linux磁盘管理系列三:LVM的使用 LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的L ...

  5. Linux磁盘突然少了2个g,linux磁盘管理:LVM的基本概念与创建、扩展、缩减、删除...

    编辑于2015--08--29 一.LVM的磁盘管理 LVM(Logical volume Manager)是逻辑卷管理的简称.它是Linux环境下对磁盘分区进行管理的一种机制. LVM的工作原理其实 ...

  6. linux磁盘管理系列一:磁盘配额管理

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

  7. linux 磁盘管理上(分区操作,格式化文件,挂载和卸载)

    一:检测并确认新磁盘,规划磁盘分区 首先加硬盘进去,fdisk -l  查看磁盘分区 device     分区的设备文件名称 boot         是否是引导分区.是 则有*表示 start   ...

  8. linux 磁盘管理3板斧,Linux 磁盘管理的命令

    Linux   磁盘管理 磁盘分区及挂载: 先查询系统的使用情况: 使用fdisk -l语句 查询结果: 进行磁盘的新建:***添加磁盘时系统必须处于关机状态** 在进行对系统磁盘的使用情况的查询 查 ...

  9. Linux磁盘管理与文件系统

    Linux磁盘管理与文件系统 磁盘结构 ■硬盘的物理结构 ■硬盘的数据结构 ■硬盘存储容量公式 MBR与磁盘分区表示 ■主引导记录(MBR: Master Boot Record) 磁盘分区结构 文件 ...

最新文章

  1. java integer null 0_Mybatis Integer类型参数值为0时得到为空的解决方法
  2. JavaScript操作表格进行拖拽排序
  3. 亮度 调整_摄影后期必备!如何用亮度蒙版技术精准调整照片影调
  4. shell中输出日期的一个函数
  5. 射雕英雄传ol显示服务器断开,射雕英雄传OL6月18日维护更新内容
  6. 解决eclipse在编辑时字体变成繁体字的问题
  7. 机器学习中Bias(偏差)和Variance(方差)
  8. 网络模块打线步骤及技巧解读
  9. raid之创建磁盘列阵raid-0
  10. matlab fill 图案填充,Matlab条形图中填充图案
  11. 直流电机参数术语中英文对照及解释
  12. 欧拉系统搭建k8s网络
  13. 《Generating Question Relevant Captions to Aid Visual Question Answering》(生成问题相关标题,以帮助视觉回答问题)论文解读
  14. Python+Tensorflow+Opencv人脸识别(任意数量人脸)
  15. 如何查看centos7系统的服务器ip地址
  16. 对数字签名的攻击概述
  17. html输入时从本文框的顶格输入,浙江省绍兴市越城区2017—2018学年八年级第二学期期末语文试卷(15页)-原创力文档...
  18. PowerDesigner生成数据库时报错Reflexive and mandatory reference
  19. java 方麦子_南方麦子什么时候成熟?小麦有什么营养价值呢?
  20. 模型无关的时间序列度量方法及特征

热门文章

  1. Golang 微服务系列 go-kit(Log,Metrics,Tracing)
  2. Linux跨平台远程控制
  3. MpAndroidChart源码修改之饼状图添加标志线
  4. angularJs select绑定的model 取不到值
  5. 【AngularJS】—— 2 初识AngularJs(续)
  6. #周末课堂# 赵扬老师 Android系列课程【ListView完全解析、Memory in Android】(火热报名中~~~)...
  7. STM32的同步规则模式使用
  8. 消息分发的同步均衡策略
  9. linux系统远程教程,Linux下实现远程协助
  10. 自定义smokeping告警(邮件+短信)