LVM---Linux
LVM
1、LVM简介
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。(由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。)
通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可,也就是我们常说的动态调整分区的大小。
简单来说:把物理存储设备的差异隐藏在LVM统一的接口之下;好处是接口统一,管理方式统一,还可以进行动态卷扩展。
2、基本术语
物理存储介质、物理卷(PV)、卷组(VG)、逻辑卷(LV)、物理块(PE)、逻辑块(LE)。
●物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
●物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
●卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
●逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
●物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
●逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
LVM抽象模型:
3、安装
查看是否安装了LVM
[root@mqd /]# rpm -qa | grep lvm
如果没有,可以使用命令安装:rpm -ivh 软件名
4、创建LVM
创建LVM系统,一般需要一下步骤:
创建分区、创建PV、创建VG、创建LV、LV格式化和挂载。
4.1、创建分区(如果是整个硬盘做一个pv,大家可以想想怎么操作)
使用分区工具fdisk来进行分区,方法与一般的磁盘分区一样,区别在于lvm的分区类型是8e。
先查看磁盘分区的信息,其中可以看到刚刚添加的5G新硬盘:
[root@mqd ~]# fdisk -l
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
创建两个分区:
[root@mqd ~]# fdisk /dev/sdb
Device contains neither a valid DOS partitiontable, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier0xa5e4e1ca.
Changes will remain in memory only, until youdecide to write them.
After that, of course, the previous content won'tbe recoverable.
Warning: invalid flag 0x0000 of partition table 4will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It'sstrongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n #n是新建分区
Command action
e extended
p primary partition (1-4)
p #p主分区
Partition number (1-4): 1 #第一个分区
First cylinder (1-652, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652,default 652): 2G #大小
Command (m for help): p #列出分区表
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa5e4e1ca
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 2 16033+ 83 Linux
Command (m for help): n #n是新建分区
Command action
e extended
p primary partition (1-4)
p #p主分区
Partition number (1-4): 2 #第二个分区
First cylinder (3-652, default 3):
Using default value 3
Last cylinder, +cylinders or +size{K,M,G} (3-652,default 652):
Using default value 652
Command (m for help): p #列出分区表
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8134619a
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 2 16033+ 83 Linux
/dev/sdb2 3 652 5221125 83 Linux
Command (m for help): t #更改分区类型
Partition number (1-4): 1 #第一个分区
Hex code (type L to list codes): 8e #分区类型
Changed system type of partition 1 to 8e (LinuxLVM)
Command (m for help): t #更改分区类型
Partition number (1-4): 2 #第二个分区
Hex code (type L to list codes): 8e #分区类型
Changed system type of partition 2 to 8e (LinuxLVM)
Command (m for help): p #列出分区表
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8134619a
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 2 16033+ 8e Linux LVM
/dev/sdb2 3 652 5221125 8e Linux LVM
Command (m for help): w #保存。如果想退出输入:q
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
至此分区就完成了,可使用fdisk -l查看分区的情况:
[root@mqd /]# fdisk -l
4.2、创建PV
把新建的/dev/sdb1和/dev/sdb2两个分区转化为物理卷,其主要是添加LVM属性信息并划分PE存储单元。
[root@mqd /]# pvcreate /dev/sdb1/dev/sdb2
Physicalvolume "/dev/sdb1" successfully created
Physicalvolume "/dev/sdb2" successfully created
查看有哪些pv
[root@mqd /]# pvs
或
[root@mqd /]# pvdisplay
注:pvs是查看pv简单的信息,pvdisplay是查看pv详细的信息。
4.3、创建VG
查看是否有vg
[root@mqd /]# vgs
或
[root@mqd /]# vgdisplay
注:vgs是查看vg简单的信息,vgdisplay是查看vg详细的信息。
创建新的vg,使用vgcreate
[root@mqd /]# vgcreate vg_01 /dev/sdb2
如果想直接把pv加入已存在的vg,可使用vgextend
[root@mqd /]# vgextend vg_00 /dev/sdb1
如果想删除多余的vg,可使用vgremove
[root@mqd /]# vgremove vg_01
4.4、创建LV
查看是否有lv
[root@mqd /]# lvs
或
[root@mqd /]# lvdisplay
注:lvs是查看lv简单的信息,lvdisplay是查看lv详细的信息。
(1)创建一个大小为500M名为test-lv1的逻辑卷
[root@mqd /]# lvcreate -L 500M -n test-lv1 vg_01
或
(2)创建一个占空闲空间90%名为test-lv2的逻辑卷
[root@mqd /]#lvcreate -l 90%Free -n test-lv2 vg_01
说明:-L指定大小;-n指定名字;vg_01指从vg_01划分空间
4.5、LV格式化和挂载
[root@mqd /]#mkfs(可按Tab键两次查看可使用的格式)
[root@mqd /]#mkfs.ext4 /dev/vg_01/test-lv1
在/mnt下创建一个文件夹,然后新的lv挂载到这个目录
[root@mqd /]#mkdir /mnt/test-lvm1
挂载前查看,然后挂载
[root@mqd /]#df -h
[root@mqd /]#mount /dev/vg_01/test-lv1 /mnt/test-lvm1
查看是否挂载成功
[root@mqd /]#df -h
已看到挂载成功,但下次重启linux系统后,挂载设备又看不到了,这个需要在/etc/fstab分区表文件添加相关信息
[root@mqd /]#vi /etc/fstab
注意:如果挂载前这个目录下有文件,挂载后是看不到的,原来的文件仍然在原来的分区,umount后才可以看到原来的文件
5、管理LVM
5.1、LV管理
(1)LV扩容
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,即:(支持在线扩展)。
查看lv和文件系统的信息
[root@mqd /]#lvs
[root@mqd /]#df -h
查看vg剩余空间
[root@mqd /]#vgs
扩容500M
[root@mqd ~]# lvextend -L +500M /dev/vg_01/test-lv1
查看lv和文件系统的信息
[root@mqd /]#lvs
[root@mqd /]#df -h
这个时候发现lv的容量增加了,但文件系统的大小没有变化,需要调整文件系统大小
[root@mqd~]#resize2fs /dev/vg_01/test-lv1
(2)LV缩减
首先需要卸载,不能在线缩减,切记
[root@mqd /]#umount/mnt/test-lvm1
检测test-lv1的空闲空间
[root@mqd /]#e2fsck -f /dev/vg_01/test-lv1
使用resize2fs将文件系统减少到700M
[root@mqd /]#resize2fs /dev/vg_01/test-lv1 700M
使用lvreduce命令将逻辑卷减少到700M
[root@mqd /]#lvreduce -L 700M /dev/vg_01/test-lv1
Volumegroup "vb_01" not found
Cannotprocess volume group vb_01
[root@mqd mnt]# lvreduce -L 700M/dev/vg_01/test-lv1
WARNING:Reducing active logical volume to 700.00 MiB.
THIS MAYDESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_01/test-lv1? [y/n]:y
Size oflogical volume vg_01/test-lv1 changed from 1000.00 MiB (250 extents) to 700.00MiB (175 extents).
Logicalvolume test-lv1 successfully resized.
注意:文件系统大小和逻辑卷大小一定要保持一致才行;如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费;如果逻辑卷小于文件系统,那数据就有可能出问题。
重新挂载/mnt/test-lvm1
[root@mqd /]# mount /dev/vg_01/test-lv1 /mnt/test-lvm1
查看/mnt/testlvm是否挂载
[root@mqd /]# mount | grep /mnt/test-lvm1
(3)LV删除
首先得确保挂载的这个目录下为空的,卸载
[root@mqd /]#umount /mnt/test-lvm1
修改/etc/fstab里面逻辑卷的挂载信息
[root@mqd /]#vi /etc/fstab
通过lvremove 删除逻辑卷
[root@mqd /]#lvremove /dev/vg_01/test-lv1
Do you really want to remove active logical volumetest-lv1? [y/n]: y
Logicalvolume "test-lv1" successfully removed
查看lv
[root@mqd /]#lvs
5.2、VG管理
(1)vg扩容:
查看vg
[root@mqd ~]# vgs
在有未挂卷组的PV(/dev/sdb3)情况下扩容:
[root@ mqd ~]# vgextend vg_01 /dev/sdb3
(2)增加vg:
[root@ mqd ~]# vgcreate vg_02 /dev/sdb3
(3)缩减vg:
这里对应的也可以说是对pv的缩减。
Umount文件系统/mnt/test-lvm1,卸载前需要确保目录下为空
[root@ mqd ~]#umount /mnt/test-lvm1
查看当前pv的情况
[root@ mqd ~]#pvs
将/dev/sdb2从卷组vg_01移除
[root@ mqd ~]#vgreduce vg0 /dev/sdb2
(4)删除vg:
确保卷组下没有lv后,执行:
[root@ mqd ~]# vgremove vg_02
5.3、PV管理
(1)添加(创建)
[root@mqd /]# pvcreate /dev/sdb1
(2)从vg移除
[root@ mqd ~]#vgreduce vg_01 /dev/sdb2
(3)改变物理卷的分配许可
[root@mqd /]#pvchange -x n /dev/sdb1
(4)删除pv
[root@mqd /]#pvremove /dev/sdb2
(5)其他命令
扫描物理卷
[root@mqd ~]# pvscan
gparted
MBR,GPT
6、LVM应用
6.1、vg磁盘(信息)迁移
场景:主机A下在一块磁盘B上创建了vg_1,并且创建了LV_1挂载在/mnt/test下,里面有数据;
需求:将主机A的磁盘B迁到主机B,还原VG且数据在主机B能查看。
步骤:主机A备份vg,将主机A的磁盘b迁到主机B,将备份文件拷贝到主机B,还原vg,激活vg,挂载。
1、在主机A备份VG
[root@l-a ~]#vgcfgbackup vg_1
此时会在目录/etc/lvm/backup下生成一个vg_1文件。
2、将主机A的磁盘b迁到主机B。
3、将主机A的备份文件vg_1拷贝到主机B对应的目录,因主机B没有目录,需要手动创建目录/etc/lvm/backup。
4、拷贝文件到主机B后,开始还原vg:
[root@l-b ~]#vgcfgrestore vg_1
5、激活卷组
[root@l-b ~]#vgchange -ay
激活前在/dev下是看不到vg_1这个文件夹的,激活成功后就会有。
6、挂载逻辑卷(挂载文件系统)
[root@l-b ~]#mount /dev/vg_1/lv_1 /mnt/test
进入/mnt/test查看是否有原主机A的数据,如果有就算成功迁移了数据。
7、修改fstab文件
/etc/fstab是用来存放文件系统的静态信息的文件
当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录,简单来说:开机挂载了指定目录的文件系统。
LVM---Linux相关推荐
- linux 权限管理 lvm,Linux系统中RAID及LVM管理
本节索引 一.RAID概念及管理 二.LVM逻辑卷的介绍及使用 Linux系统中如何提高磁盘的读写性能,如何实现磁盘冗余,当磁盘快被占满时,又如何弹性拓展磁盘容量,RAID及LVM技术可以帮你轻松解决 ...
- linux分区大容量加入lvm,linux 添加磁盘+lvm扩容
l 环境: virtual box 下,redhat5 64位版本,原来系统默认分区. 新添加一个8G的硬盘sdb,将新加的硬盘容量扩充到原来的/上去. 1.分区, [root@test ~]# fd ...
- linux磁盘管理不用LVM,[linux] LVM磁盘管理(针对xfs和ext4不同文件系统)
简单来说就是: PV:是物理的磁盘分区 VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘 LV:也就是从VG中划分的逻辑分区 如下图所示PV.VG. ...
- linux逻辑卷创建与管理,CentOS创建LVM linux逻辑卷创建及管理
在管理linux服务器的时候,我们经常要使用到lvm来管理磁盘,使用lvm可以很方便的对分区进行扩容等分配. LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux ...
- linux+4t分区+扩容lvm,Linux中利用LVM实现分区动态扩容
LVM的全称为Logical Volume Manager,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管理员 ...
- Android逻辑卷管理LVM,LINUX——LVM逻辑卷管理
LVM: logical volumes manager LVM逻辑卷部署 物理卷->卷组->逻辑卷 第一步:关机添加磁盘:两个磁盘可以构成一个磁盘组. 第二步:查看磁盘 # ls /de ...
- linux 标准分区 lvm,Linux lvm 分区知识笔记
盘面上可以细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为512bytes那么大. 通常所说的"硬盘分区"就是指修改磁盘分区表,它定义了"第n ...
- linux分区 raid lvm,Linux磁盘知识,RAID,LVM
一.磁盘基础知识 1.磁盘和硬盘均是对磁盘存储系统的统一称呼.磁盘工作时,磁头悬浮在磁盘盘片上方做径向运动,互相不接触. 2.采购磁盘: (1)主轴转速速度快(r/min),5400/7200/100 ...
- linux磁盘分区创建lvm,Linux下磁盘分区与LVM创建
Linux下磁盘分区与LVM创建 1. 在系统上添加2块2G的硬盘 2.进入系统以后用fdisk -l 看看两块磁盘是否存在了, 有了磁盘之后,用fdisk和parted 两个工具对磁盘进行分区,现在 ...
- linux 主分区转换 lvm,Linux磁盘管理,分区,格式化,lvm
df命令磁盘分区空间 du命令查看文件大小 磁盘分区 磁盘格式化 磁盘挂载mount 手动增加swap空间 lvm讲解 一.df命令磁盘分区空间 使用df可以查看文件系统的使用情况(即磁盘分区空间), ...
最新文章
- CA双向认证的时候,如果一开始下载的证书就有问题的,怎么保证以后的交易没有问题?...
- ssh mysql转发_ssh转发代理:ssh-agent用法详解
- java 1e6,java-GeoPoint getLatitudeE6()返回-80000000,但getLong...
- 51nod 1572 宝岛地图 (预处理四个方向的最大步数优化时间,时间复杂度O(n*m+k))
- upc组队赛15 Supreme Number【打表】
- Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
- 再推新机!小米A3正式发布 售价249欧元起
- iPhone的OpenGL ES的资源- 18,你必须知道 !
- android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
- LeetCode【709. 转换成小写字母】
- NSA黑客工具泄露 网络世界的灾难级危机如何应对?[NSA黑客工具名单]
- 收集五款常用的HTML编辑软件
- 电脑计算机无法加载,电脑网页视频一直显示无法加载插件
- 【Lee-Teambition】团队任务协作工具Teambition
- excel表格怎么拆分为多个表格?
- SSM框架将数据库数据导出为Excel文件
- java clip_java – 使用Clip对象播放多个声音片段
- Python机器学习实战教学——基于协同过滤的电影推荐系统(超详细教学,算法分析)
- 16求计算机科学与技术鲁嘉华第三章作业
- php获取二级域名前缀
热门文章
- Android实战技巧之四十:Android5.1.1源代码编译与烧写
- io域名好吗?有什么特点?
- idea 切换分支smart checkout和force checkout区别
- info.plist文件常用属性含义
- PHP后端生成签名后uniapp前端直传华为云OBS记录
- 全国地图的shp文件
- Android -- 小球周期旋转
- 计算机在生物工程中的应用 华中农业大学,虫害防治技术
- 计算机实训存在的问题和解决方法,中职学校计算机专业实训课程存在问题及的对策.doc...
- python和C++代码实现模拟动态指针时钟