lvm实例详解

一、简介

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

基本的逻辑卷管理概念:

PV(Physical Volume)- 物理卷

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VG(Volumne Group)- 卷组

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LV(Logical Volume)- 逻辑卷

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

PE(Physical
Extends)- 物理扩展单元

每个 PV 都会以 PE 为基本单元划分。

LE(Logical Extends) - 逻辑扩展单元

组成 LV 的基本单元,一个 LE
对应一个 PE

通过实例的演示来详解LVM的应用场景:

实例1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;

实例2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;

实例3:扩展testlv至7G,要求archlinux用户的文件不能丢失;

实例4:收缩testlv至3G,要求archlinux用户的文件不能丢失;

实例一(创建LVM):创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;

[[email protected] ~]# fdisk -l | grep "^Disk\>"  #查看硬盘个数
Disk /dev/sda: 21.5GB, 21474836480 bytes
Disk identifier:0x0006b70f
Disk /dev/sdc: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000
Disk /dev/sdd: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000
Disk /dev/sdb: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000

通过fdisk /dev/sdb创建lvm,{/dev/sdc
,/dev/sdd}步骤一样

[[email protected] ~]# pvcreate /dev/sdb1    #创建pv
Physical volume "/dev/sdb1"successfully created
[[email protected] ~]#pvcreate /dev/sdc1
Physical volume "/dev/sdc1"successfully created
[[email protected] ~]# vgcreate -s16M testvg /dev/sdb1 /dev/sdc1 #创建PE为16M,名为test的卷组
Volume group "testvg" successfullycreated
[[email protected] ~]# vgs  # 显示VG的信息,更详细的可以用vgdisplay
  VG  #PV #LV #SN Attr   VSize  VFree
 testvg 2  0  0 wz--n-    39.97g   39.97g
[[email protected] ~]# lvcreate -L 5G -n testlv testvg #创建大小为5G,为testlv的逻辑卷
  Logical volume "testlv" created
[[email protected] ~]# lvs   #显示Llmv的信息  详细信息可用lvdisplay
 LV  VG  Attr LSize Pool Origin Data%  Meta% Move Log Cpy%Sync Convert
 testlv testvg -wi-a----- 5.00g
[[email protected] ~]# mke2fs -t ext4 /dev/testvg/testlv    #格式化为ext4文件系统  
mke2fs 1.41.12(17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096(log=2)
Fragment size=4096(log=2)
Stride=0 blocks,Stripe width=0 blocks
327680 inodes,1310720 blocks
65536 blocks (5.00%)reserved for the super user
First data block=0
Maximum filesystemblocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backupsstored on blocks:
32768, 98304,163840, 229376, 294912, 819200, 884736
[[email protected]~]# mkdir /users 
[[email protected] ~]#mount
mount     mount.fuse   mount.nfs4  mountstats  
mount.cifs   mount.nfs   mountpoint   mount.tmpfs 
[[email protected] ~]# mount /dev/testvg/testlv /users/  #挂载至/users
[[email protected] ~]# df -h      显示挂载的分区
Filesystem       Size  Used Avail Use% Mounted on
/dev/sda2             9.8G  8.5G 787M  92% /
tmpfs                 491M     0 491M   0% /dev/shm
/dev/sda1             488M   27M 437M   6% /boot
/dev/sda5             980M  2.8M 947M   1% /mysql
/dev/mapper/testvg-testlv 
    4.8G  10M  4.6G   1% /users

实例二的创建过程省略:

[[email protected] users]# ls /users/   #显示/user的文件
abc.txt  archlinux 
lost+found

实例三(拓展lvm):扩展testlv至7G,要求archlinux用户的文件不能丢失;

[[email protected] ~]# lvextend -L +2G /dev/testvg/testlv   # -L +2 需要拓展的容量
Size of logical volume testvg/testlv changedfrom 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
Logical volume testlv successfully resized
[[email protected] ~]# lvs   #显示后的容量
  LV    VG     Attr       LSize Pool Origin Data%  Meta% 
Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 7.00g                                                   
[[email protected] ~]# su - archlinux
[[email protected] ~]$ ls      #数据依然还在
pam.d

实例四(lvm的缩减):收缩testlv至3G,要求archlinux用户的文件不能丢失;

缩减步骤:

卸载分区---强制修复文件系统---缩减文件系统--缩减LVM

[[email protected] ~]#umount /dev/testvg/testlv
[[email protected] ~]# e2fsck -f /dev/testvg/testlv   #强制修复文件系统
e2fsck 1.41.12(17-May-2010)
Pass 1: Checkinginodes, blocks, and sizes
Pass 2: Checkingdirectory structure
Pass 3: Checkingdirectory connectivity
Pass 4: Checkingreference counts
Pass 5: Checking
group summary information
/dev/testvg/testlv:77/327680 files (0.0% non-contiguous), 55962/1310720 blocks
[[email protected] ~]# resize2fs /dev/testvg/testlv 3G  #将文件系统缩减到3G
resize2fs 1.41.12(17-May-2010)
Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks.
The filesystem on/dev/testvg/testlv is now 786432 blocks long.
 
[[email protected] ~]# lvreduce -L 3G /dev/testvg/testlv   #缩减LVM到3G 
  WARNING: Reducing active logical volume to3.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testlv? [y/n]: y
  Size of logical volume testvg/testlv changed
from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
  Logical volume testlv successfully resized
[[email protected] users]# lvs      #显示的是3G
  LV    
VG     Attr       LSize Pool Origin Data%  Meta% 
Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 3.00g       
[[email protected] ~]# mount /dev/testvg/testlv /users/  #重新挂载分区
[email protected] users]# df -h    #显示的容量是3G
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.8G  8.4G 860M  91% /
tmpfs              491M     0 491M   0% /dev/shm
/dev/sda1             488M   27M 437M   6% /boot
/dev/sda5             980M  2.8M 947M   1% /mysql
/dev/mapper/testvg-testlv
                      2.9G  7.8M 2.7G   1% /users
[[email protected] ~]# su - archlinux
[[email protected]~]$
[[email protected] ~]$ ls     #数据依然还在
pam.d
通过缩减LVM很危险,操作需谨慎。。。。。。。
时间: 2024-10-08 15:32:18

lvm实例详解的相关文章

23、磁盘管理—磁盘阵列(RAID)实例详解

磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 Raid的管理 案例:创建一个raid10+冗余盘 磁盘阵列(RAID)实例详解 Raid(磁盘阵列)级别介绍 Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的:也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘

linux基础-磁盘阵列(RAID)实例详解

磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 Raid的管理 案例:创建一个raid10+冗余盘 磁盘阵列(RAID)实例详解 Raid(磁盘阵列)级别介绍 Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的:也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)

在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然QuerySet的文档中已经详细说明了,但本文试图从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式. 本来打算写成一篇单独的文章的,但是写完select_related()之后发现长度已经有点长了,所以还是写成系列,大概在两到三篇.整个完成之后将会在这里添加上

boost asio异步读写网络聊天程序客户端 实例详解

// // chat_client.cpp // ~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://ww

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的整体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5.HTML4.XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图告诉你如何学习HTML 5 1.2  浏览器之争 1.2.1  说说这些常见的浏览器 1.2.2  浏览器的兼容烦

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

js取整数与取余数实例详解

分享下js取整数.取余数的方法. 1.丢弃小数部分,保留整数部分parseInt(5/2)2.向上取整,有小数就整数部分加1 Math.ceil(5/2)3,四舍五入.Math.round(5/2)4,向下取整 Math.floor(5/2)Math 对象的方法FF: Firefox, N: Netscape, IE: Internet Explorer方法 描述 FF N IEabs(x) 返回数的绝对值 1 2 3acos(x) 返回数的反余弦值 1 2 3asin(x) 返回数的反正弦值

Linux 查看系统硬件信息(实例详解)

cpu lscpu命令,查看的是cpu的统计信息. [email protected]:~$ lscpu Architecture: i686 #cpu架构 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian #小尾序 CPU(s): 4 #总共有4核 On-line CPU(s) list: 0-3 Thread(s) per core: 1 #每个cpu核,只能支持一个线程,即不支持超线程 Core(s) per socket: