Linux学习-LVM

以下基于CentOS7
LVM的全名为Logical Volume Manager,中文翻译为逻辑卷管理器。LVM将几个物理的分区(磁盘)通过软件组合成一块看起来是独立的大磁盘(VG),然后再将磁盘划分成可使用的分区(LV),最终就能像磁盘分区一样,格式化后就可以挂载使用了。

名词

  • 物理卷(Physical Volume PV)
    实际的分区需要调整系统标识符(System ID)成为8e(LVM标识符),然后再经过pvcreate将它转换为底层的物理卷(pv)。
  • 卷组(Volume Group VG)
    由多个PV组合而成的
  • 物理扩展块(Physical Extend PE)
    LVM默认使用4MB的PE数据块,这个PE有点像文件系统里面的block大小,调整PE会影响到LVM的容量大小,不过Centos6.x以后,直接使用了lvm2的各项格式功能,以及64位系统,这个限制已经不存在了。
  • 逻辑卷(Logical Volume LV)
  • 最终VG被切割成LV,LV最后可以被格式化使用的类似分区的东西。

建立LV时出现的问题

在虚拟机中添加SCSI格式的磁盘做PV时出现如下报错:

[root@localhost scripts]# pvcreate /dev/sdd
  Device /dev/sdd excluded by a filter.

导致问题的原因是添加的磁盘是在另一个虚拟机中新建的,已经有了分区表,现在的虚拟机并不能识别磁盘的分区表,运行parted命令重做分区表
解决方法:

[root@localhost ~]# parted /dev/sdd
GNU Parted 3.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos                                                    
Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes                                                               
(parted) quit                                                             
Information: You may need to update /etc/fstab.

分区表重做后执行pvcreate /dev/sde时报错

[root@localhost ~]# pvcreate /dev/sde
  Can't open /dev/sde exclusively.  Mounted filesystem?

解决方法:
重新启动系统即可
再次运行pvcreate,问是否擦除dos签名,输入y,就可以将磁盘创建为PV了。

PV创建(physical volume)

[root@localhost ~]# pvcreate /dev/sde
WARNING: dos signature detected on /dev/sde at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sde.
  Physical volume "/dev/sde" successfully created.

执行pvscan,查看所有pv

[root@localhost ~]# pvscan
  PV /dev/sda3   VG centos          lvm2 [16.00 GiB / 4.00 MiB free]
  PV /dev/sdf                       lvm2 [1.00 GiB]
  PV /dev/sdc                       lvm2 [1.00 GiB]
  PV /dev/sdb                       lvm2 [1.00 GiB]
  PV /dev/sdd                       lvm2 [1.00 GiB]
  PV /dev/sde                       lvm2 [1.00 GiB]
  Total: 6 [21.00 GiB] / in use: 1 [16.00 GiB] / in no VG: 5 [5.00 GiB]

详细的列出PV信息

[root@localhost ~]# pvdisplay /dev/sdb
  "/dev/sdb" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb             #实际的分区设备名称
  VG Name                                    #因为尚未分配出去,所以空白
  PV Size               1.00 GiB             #容量
  Allocatable           NO                   #是否已被分配
  PE Size               0                    #在此PV内的PE大小
  Total PE              0                    #共划分多少PE
  Free PE               0                    #没被LV用掉的PE
  Allocated PE          0                    #还可以分配的PE数量
  PV UUID               vO85dV-j5up-FaiW-kdOm-ZQ4y-Q8If-FGigaA
  #由于PE是在建立VG时才设置参数,因此在这里看到的PV里面的PE都是0,而且没有多余的PE可供分配(allocatable)

VG创建(Volume Group)

# -s指定PE的大小,单位可以是M,G,T(大小写均可),默认为4M
[root@localhost ~]# vgcreate -s 16M xpyvg /dev/sd{b..e}
  Volume group "xpyvg" successfully created
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2      #系统安装时做的
  Found volume group "xpyvg" using metadata type lvm2       #上面手动创建的
[root@localhost ~]# pvscan
  PV /dev/sda3   VG centos          lvm2 [16.00 GiB / 4.00 MiB free]
  PV /dev/sdb    VG xpyvg           lvm2 [1008.00 MiB / 1008.00 MiB free]
  PV /dev/sdc    VG xpyvg           lvm2 [1008.00 MiB / 1008.00 MiB free]
  PV /dev/sdd    VG xpyvg           lvm2 [1008.00 MiB / 1008.00 MiB free]
  PV /dev/sde    VG xpyvg           lvm2 [1008.00 MiB / 1008.00 MiB free]
  PV /dev/sdf                       lvm2 [1.00 GiB]
  #有4个PV被用去,剩下/dev/sdf没有使用
[root@localhost ~]# vgdisplay xpyvg
  --- Volume group ---
  VG Name               xpyvg
  System ID             
  Format                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.94 GiB               #整个VG的大小
  PE Size               16.00 MiB               #内部每个PE的大小 
  Total PE              252                     #PE的数量
  Alloc PE / Size       0 / 0   
  Free  PE / Size       252 / <3.94 GiB         #尚可分配给LV的PE数量/总容量
  VG UUID               6DsvsW-c1n8-9hS0-4o8R-F7Ko-M2os-roLD5f
  # 最后三行指的就是PE能够使用的情况,由于尚未划分出LV,因此所有的PE均可自由使用

增加VG的容量

[root@localhost ~]# vgextend xpyvg /dev/sdf
  Volume group "xpyvg" successfully extended
[root@localhost ~]# vgdisplay xpyvg
  --- Volume group ---
  VG Name               xpyvg
  System ID             
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               4.92 GiB
  PE Size               16.00 MiB
  Total PE              315
  Alloc PE / Size       0 / 0   
  Free  PE / Size       315 / 4.92 GiB
  VG UUID               6DsvsW-c1n8-9hS0-4o8R-F7Ko-M2os-roLD5f

移除pv

移除pv前先执行pvmove将pv上的数据移动到其它的pv,然后执行pvreduce /path/to/somewhere即可

LV阶段(logical volume)

创建LV,将xpyvg的2G分给xpylv

#-L指定逻辑卷大小,-n指定名称
[root@localhost ~]# lvcreate -L 2G -n xpylv xpyvg
  Logical volume "xpylv" created.
[root@localhost ~]# lvscan
  ACTIVE            '/dev/centos/root' [10.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [1.00 GiB] inherit
  ACTIVE            '/dev/centos/home' [5.00 GiB] inherit
  ACTIVE            '/dev/xpyvg/xpylv' [2.00 GiB] inherit
[root@localhost ~]# lvdisplay /dev/xpyvg/xpylv
  --- Logical volume ---
  LV Path                /dev/xpyvg/xpylv
  LV Name                xpylv
  VG Name                xpyvg
  LV UUID                fvYo1F-7lvE-zCGe-ODWT-xJYe-uGBS-biuEoe
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-12-20 09:24:04 -0500
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             128
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

文件系统阶段

  • 格式化
[root@localhost ~]# mkfs.xfs /dev/xpyvg/xpylv
meta-data=/dev/xpyvg/xpylv       isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
  • 挂载
[root@localhost ~]# mkdir /srv/lvm
[root@localhost ~]# mount /dev/xpyvg/xpylv /srv/lvm
[root@localhost lvm]# cp -a /etc /srv/lvm
[root@localhost lvm]# df -Th /srv/lvm
Filesystem              Type  Size  Used Avail Use% Mounted on
/dev/mapper/xpyvg-xpylv xfs   2.0G   64M  2.0G   4% /srv/lvm
  • 放大LV容量
  1. VG阶段需要有剩余的容量
  2. LV阶段产生更多的可用容量
  3. 文件系统阶段的放大
    给/srv/lvm增加500MB的容量
[root@localhost lvm]# vgdisplay xpyvg
  --- Volume group ---
  VG Name               xpyvg
  System ID             
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               4.92 GiB
  PE Size               16.00 MiB
  Total PE              315
  Alloc PE / Size       128 / 2.00 GiB
  Free  PE / Size       187 / 2.92 GiB
  VG UUID               6DsvsW-c1n8-9hS0-4o8R-F7Ko-M2os-roLD5f
  #放大LV,利用lvresize或者lvextend的功能来增加
  [root@localhost lvm]# lvresize -L +500M /dev/xpyvg/xpylv
  Rounding size to boundary between physical extents: 512.00 MiB.
  Size of logical volume xpyvg/xpylv changed from 2.00 GiB (128 extents) to 2.50 GiB (160 extents).
  Logical volume xpyvg/xpylv successfully resized.
[root@localhost lvm]# df -Th /srv/lvm
Filesystem              Type  Size  Used Avail Use% Mounted on
/dev/mapper/xpyvg-xpylv xfs   2.0G   64M  2.0G   4% /srv/lvm
[root@localhost lvm]# lvscan
  ACTIVE            '/dev/centos/root' [10.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [1.00 GiB] inherit
  ACTIVE            '/dev/centos/home' [5.00 GiB] inherit
  ACTIVE            '/dev/xpyvg/xpylv' [2.50 GiB] inherit
  #LV放大到2.5G,但文件系统却没有增加
  [root@localhost lvm]# xfs_info /srv/lvm
meta-data=/dev/mapper/xpyvg-xpylv isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#如果文件系统为ext2/3/4,使用resize2fs命令,重新分配文件系统空间
[root@localhost lvm]# xfs_growfs /srv/lvm           #这一步很重要
meta-data=/dev/mapper/xpyvg-xpylv isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 655360
[root@localhost lvm]# xfs_info /srv/lvm
meta-data=/dev/mapper/xpyvg-xpylv isize=512    agcount=5, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=655360, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@localhost lvm]# df -Th /srv/lvm
Filesystem              Type  Size  Used Avail Use% Mounted on
/dev/mapper/xpyvg-xpylv xfs   2.5G   64M  2.5G   3% /srv/lvm
#两次xfs_info的结果会发现(1)整个区块群组的数量增加一个,那个区块群组就是记录新的设备容量的文件系统所在,在(2)中整体的区块数量增加了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上层应用业务对实时数据的需求,主要包含两部分内容:1、 整体数据的实时分析。2、 AB实验效果的实时监控。这几部分数据需求,都需要进行的下钻分析支持,我们希望能够建立统一的实时OLAP数据仓库,并提供一套安全、可靠的、灵活的实时数据服务。目前每日新增的曝光日志达到几亿条记录,再细拆到AB实验更细维度时,数据量则多达上百亿记录,多维数据组合下的聚合查询要求秒级响应时间,这样的数据量也给团队带来了不小的挑战。OLAP层的技术选型,需要满足以下几点:1:数据延迟在分钟级,查询响应时间在秒级2:标准SQL交互引擎,降低使用成本3:支持join操作,方便维度增加属性信息4:流量数据可以近似去重,但订单行要精准去重5:高吞吐,每分钟数据量在千W级记录,每天数百亿条新增记录6:前端业务较多,查询并发度不能太低通过对比开源的几款实时OLAP引擎,可以发现Doris和ClickHouse能够满足上面的需求,但是ClickHouse的并发度太低是个潜在的风险,而且ClickHouse的数据导入没有事务支持,无法实现exactly once语义,对标准SQL的支持也是有限的。所以针对以上需求Doris完全能解决我们的问题,DorisDB是一个性能非常高的分布式、面向交互式查询的分布式数据库,非常的强大,随着互联网发展,数据量会越来越大,实时查询需求也会要求越来越高,DorisDB人才需求也会越来越大,越早掌握DorisDB,以后就会有更大的机遇。本课程基于真实热门的互联网电商业务场景为案例讲解,具体分析指标包含:AB版本分析,下砖分析,营销分析,订单分析,终端分析等,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。整个课程,会带大家实践一个完整系统,大家可以根据自己的公司业务修改,既可以用到项目中去,价值是非常高的。本课程包含的技术:开发工具为:IDEA、WebStormFlink1.9.0DorisDBHadoop2.7.5Hbase2.2.6Kafka2.1.0Hive2.2.0HDFS、MapReduceFlume、ZookeeperBinlog、Canal、MySQLSpringBoot2.0.8.RELEASESpringCloud Finchley.SR2Vue.js、Nodejs、Highcharts、ElementUILinux Shell编程等课程亮点:1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink4.支持ABtest版本实时监控分析5.支持下砖分析6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.天级别与小时级别多时间方位分析9.数据库实时同步解决方案10.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI11.集成SpringCloud实现统一整合方案12.互联网大数据企业热门技术栈13.支持海量数据的实时分析14.支持全端实时数据分析15.全程代码实操,提供全部代码和资料16.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值