LVM解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVM解析相关的知识,希望对你有一定的参考价值。
一、什么是LVM?
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 分区加入其中,这样可以实现一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可 能就会带来很大的麻烦。使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。
dm模块:device mapper 设备映射组件,能够将一个或者多个底层设备组织成一个逻辑设备的模块。
二、 LVM基本术语
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
由N个磁盘可以组成一个很大的空间VG1,然后从VG1上面划分需要使用的分区。
1. PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区,如上图所示: 几个LV建立在VG上,VG建立在PV之上,PV是物理卷,可以是整块硬盘或者硬盘分区。
2.VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV。
3.LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。
1、查看系统中新增加的硬盘
[[email protected] ~]# fdisk -l
2、在/dev/sdb上划分4个10G分区备用这里分区格式需要调整为8e 【8e Linux LVM 】
分别是sdb1,sdb5,6,7
[[email protected] ~]# fdisk -l /dev/sdb Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x2838e1c6 Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 8e Linux LVM /dev/sdb2 1307 13054 94365810 5 Extended /dev/sdb5 1307 2612 10490413+ 8e Linux LVM /dev/sdb6 2613 3918 10490413+ 8e Linux LVM /dev/sdb7 3919 5224 10490413+ 8e Linux LVM
3.介绍pv管理工具
pvs 简要pv信息显示
pvdisplay 显示PV的详细信息
pvcreate /dev/device
创建PV,查看PV,查看PV的详细信息
[[email protected] ~]# pvcreate /dev/sdb7
[[email protected] ~]# pvdisplay
如果想查看某个具体的pv,可以 pvdisplay /dev/sdb7
4 VG的管理工具
vgs 可以简要显示所有卷组
vgdisplay 可以显示详细信息
vgcreate 创建vg
创建vg,查看vg
[[email protected] ~]# vgcreate myvg /dev/sdb7 [[email protected] ~]# vgdisplay myvg --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size 10.00 GiB PE Size 4.00 MiB Total PE 2560 Alloc PE / Size 0 / 0 Free PE / Size 2560 / 10.00 GiB VG UUID IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg 这里可以看到 PE的大小为4M,此时再查看pv状态,发现PE的大小就已经确定
[[email protected] ~]# pvdisplay /dev/sdb7 --- Physical volume --- PV Name /dev/sdb7 VG Name myvg PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 4.00 MiB Total PE 2560 Free PE 2560 Allocated PE 0 PV UUID SXyy1i-qb1j-ixlk-Q1js-RPT8-CaWN-WWhmBt
通过使用命令pvs发现我们已经创建了三个pv
[[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb7 myvg lvm2 a--u 10.00g 10.00g /dev/sdb8 lvm2 ---- 3.01g 3.01g /dev/sdb9 lvm2 ---- 20.01g 20.01g
现在我们扩展下VG的大小,并查看发现myvg已经变大
[[email protected] ~]# vgextend myvg /dev/sdb8 [[email protected] ~]# vgdisplay myvg
移除pv,使用命令pvmove 命令如: pvmove /dev/sdb8,然后再vgreduce myvg 、dev/sdb8,从VG当中移除,此命令在生产环境中操作极具风险性,所以不再演示操作,也不建议大家以后操作
LV管理工具
lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
在myvg当中创建一个mylv,指定大小为11.3G 指定名字为mylv
[[email protected] ~]# lvcreate -L 11.3G -n mylv myvg
创建完成lv之后就可以像软raid分区一样,格式化挂载使用了
[[email protected] ~]# mkfs -t ext4 -b 2048 -L mylv /dev/myvg/mylv
创建目录并将mylv挂载
[[email protected] mapper]# mkdir /backup003 [[email protected] mapper]# mount /dev/mapper/myvg-mylv /backup003
进入目录,然后下载两个文件并查看
[[email protected] mapper]# cd /backup003 [[email protected] backup003]# wget http://down1.chinaunix.net/distfiles/httpd-2.2.0.tar.bz2 [[email protected] backup003]# wget http://down1.chinaunix.net/distfiles/nginx-1.2.5.tar.gz [[email protected] backup003]# ls httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz
扩展逻辑卷 lvextend -L [+][mMgGtT] /dev/VG_NAME/LV_NAME
[[email protected] backup003]# vgextend myvg /dev/sdb9 Volume group "myvg" successfully extended [[email protected] backup003]# vgdisplay --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 33.02 GiB PE Size 4.00 MiB Total PE 8452 Alloc PE / Size 2893 / 11.30 GiB Free PE / Size 5559 / 21.71 GiB VG UUID IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg
将lv扩展到20G的大小
[[email protected] backup003]# lvextend -L 20G /dev/mapper/myvg-mylv Size of logical volume myvg/mylv changed from 11.30 GiB (2893 extents) to 20.00 GiB (5120 extents). Logical volume mylv successfully resized.
扩展lv首先是lv的大小扩展,然后是文件系统的扩展,即先修改物理便捷,在修改逻辑边界
[[email protected] backup003]# resize2fs /dev/mapper/myvg-mylv
然后进行解除挂载,重新挂载
[[email protected] ~]# umount /dev/mapper/myvg-mylv [[email protected] ~]# mount /dev/mapper/myvg-mylv /backup003
然后可以看到目录大小已经改变
[[email protected] ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 1.7G 44G 4% / tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 1.9G 76M 1.8G 5% /boot /dev/sda3 20G 44M 19G 1% /data /dev/mapper/myvg-mylv 20G 20M 19G 1% /backup003
缩减逻辑卷,危险性较大,不建议操作,不允许联机进行的
1 umount /dev/VG_NAME/LV_NAME
2 做文件系统检测 e2fsck -f /dev/VG_NAME/LV_NAME
3 修改其逻辑边界,resize2fs /dev/mapper/myvg-mylv #[mMgGtT] 并指明缩减至多大
4 lvreduce -L [-] ##[mMgGtT] /dev/mapper/myvg-mylv
5 mount /dev/mapper/myvg-mylv /backup003
示例:
[[email protected] ~]# umount /dev/mapper/myvg-mylv [[email protected] ~]# e2fsck -f /dev/mapper/myvg-mylv e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information mylv: 13/1310720 files (0.0% non-contiguous), 207882/10485760 blocks [[email protected] ~]# resize2fs /dev/mapper/myvg-mylv 12G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/myvg-mylv to 6291456 (2k) blocks. The filesystem on /dev/mapper/myvg-mylv is now 6291456 blocks long. [[email protected] ~]# lvreduce -L 12G /dev/mapper/myvg-mylv WARNING: Reducing active logical volume to 12.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvg/mylv? [y/n]: y Size of logical volume myvg/mylv changed from 20.00 GiB (5120 extents) to 12.00 GiB (3072 extents). Logical volume mylv successfully resized. [[email protected] ~]# mount /dev/mapper/myvg-mylv /backup003 [[email protected] ~]# cd /backup003 [[email protected] backup003]# ls httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz
文件系统挂载使用: 挂载光盘设备,光盘设备文件是/dev/sr0,而符号链接文件一般为 /dev/cdrom
[[email protected] ~]# mount -o ro /dev/sr0 /mnt 以只读的方式挂载光驱,卸载光驱文件系统 umount /dev/sr0
dd命令的使用,用法是 dd if = 源文件 of = 目标文件 ;bs 复制单元大小,count= n 复制多少个bs
实例如下:
[[email protected] ~]# dd if=/etc/fstab of=/tmp/fstab2 bs=1 count=10
备份mbr [[email protected] ~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR [[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
两个特殊设备:
/dev/null 数据黑洞 /dev/zero 字符制造
一种挂载光盘镜像文件的合理方式:
步骤说明:
1 下载光盘镜像至backup003目录;
2 查看目录下的镜像文件
3 挂载镜像文件至/mnt下
4 查看
[[email protected] backup003]# wget --2018-02-26 15:31:30-- http://mirrors.163.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso Resolving mirrors.163.com... 59.111.0.251 Connecting to mirrors.163.com|59.111.0.251|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 4521459712 (4.2G) [application/octet-stream] Saving to: “CentOS-7-x86_64-DVD-1708.iso” 100%[=================================================================================================================>] 4,521,459,712 10.7M/s in 6m 45s 2018-02-26 15:38:15 (10.7 MB/s) - “CentOS-7-x86_64-DVD-1708.iso” saved [4521459712/4521459712] [[email protected] backup003]# ls CentOS-7-x86_64-DVD-1708.iso httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz [[email protected] backup003]# mount CentOS-7-x86_64-DVD-1708.iso /mnt -o loop [[email protected] backup003]# cd /mnt [[email protected] mnt]# ls CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL [[email protected] mnt]# ll total 664 -rw-rw-r--. 3 root root 14 Sep 5 13:25 CentOS_BuildTag drwxr-xr-x. 3 root root 2048 Sep 5 13:36 EFI -rw-rw-r--. 3 root root 227 Aug 30 14:33 EULA -rw-rw-r--. 3 root root 18009 Dec 9 2015 GPL drwxr-xr-x. 3 root root 2048 Sep 5 13:46 images drwxr-xr-x. 2 root root 2048 Sep 5 13:36 isolinux drwxr-xr-x. 2 root root 2048 Sep 5 13:36 LiveOS drwxrwxr-x. 2 root root 641024 Sep 4 22:05 Packages drwxr-xr-x. 2 root root 4096 Sep 5 13:43 repodata -rw-rw-r--. 3 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-7 -rw-rw-r--. 3 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-Testing-7 -r--r--r--. 1 root root 2883 Sep 6 10:51 TRANS.TBL
以上是关于LVM解析的主要内容,如果未能解决你的问题,请参考以下文章
片段(Java) | 机试题+算法思路+考点+代码解析 2023
无法解析片段中的 ViewModelProvider 构造?
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段