lvm——应用

LVM2:

LVM:logical  Volume Manager,Version(版本号):2

逻辑卷管理器的主要作用在于:

与我们前面讲过的软RAID很近似,使用纯软件的方式来组织一个或多个底层硬件设备为一个抽象的逻辑设备使用的一种解决方案。LVM类似于前面讲过的RAID,不过他们的驱动刚好相反,RAID用到的是内核的md模块,而LVM用到的是dm模块,

dm:device  mapper 设备映射组件

功能:将一个或多个底层的块设备,组织成一个逻辑设备的模块;

逻辑卷的核心就是dm,dm除了提供逻辑卷功能外,还提供很多其他的功能,比如他也能实现RAID,还能实现多路径的功能。

逻辑卷是什么?

无非就是通过多个逻辑设备组织成一个单一设备来管理的一个组件,所以从这个角度来举例说明:

假如底层有一个硬盘设备,也可能是一个分区,也可能是一个RAID,他可以基于任何块设备进行,假如我们现在有一个分区,我们把他创建成在逻辑卷中被称为物理卷:PV,

我们可以把它创建成物理卷的格式,它类似于RAID中的将分区标记为fd类型,能自我存储一些元数据,创建成PV,也是能够存储一些元数据的,我们可以把PV中提供的存储空间,在一个更低的单位当划分成许许多多独立的存储单元,并且把这些存储单元合并在一个高层上,形成一个组件,我们称之为卷组:VG,卷组的功能类似于扩展分区,是没办法直接使用的,只有格式化才能使用,因为扩展分区要想使用是还需要再划分成逻辑分区的,所以在VG的基础上我们还要创建LV的组件,这才是真正意义上的逻辑卷,每一个LV都是一个独立的文件系统,可以被格式化并被使用,并且这个逻辑卷多大呢,他可以是卷组内的任意可用空间大小,LV可以跨越多个PV,在一个更加抽象的层次上我们还可以理解成如果把多个底层设备给他合并起来,做成一个VG的话,VG会在一个逻辑层次上,将内一个PV所提供的的空间,划分成固定大小的块,注意又是一个块的概念,但是这个块不叫block,也不叫chunk,而叫做PE,PE就是物理盘区,PE:Phsical  Extent

那么PE到底有多大呢?

这比我们说的block大很多了,他可以是像512K,当然512K并不常见,PE默认大小是4M,还有可能更大,所以他是将PV提供的存储空间划分成n个大小相同个存储块,我们称为PE,一但我们的pv加入到一个VG以后,他的PE的大小取决于VG的定义,PV刚刚创建时,他没有将自己分隔成PE,只有加入到VG以后,才有了PE,因为每一个VG他对PE定义的大小可能都是各不相同的。这也就意味着有第三个PV,比方说现在有两个VG,第一个VG的PE是4M,第二个VG的PE是8M,如果我们将一个PV加入到第一个VG那么这个PV上的PE就是4M,然后我们再将这个PV加入到后面的VG,则这个PV的大小就是8M所以PE的大小是PV在加入到VG之后决定的。但是不管怎么讲,VG他一定是分隔成很多很多的PE作为存储空间使用的。所以我们说在到了VG这个层次以后,无论是来自于那里的PV,我们都将其组成为一个个大小一样的PE空间。我们可以在VG上创建LV,创建LV的过程,就是指定特定数量PE来组成一个逻辑存储空间的过程,比如我们创建一个LV,这里面有三个PE,每个PE大小为4M,那么这个LV大小就是12M,将来这个空间不够用了,我们还可以再加一个PE进去,那么他就成了16M了。将来我们发现分给LV的空间过多了,那么我们还可以从LV中减掉一个PE,那就又回到12M了,我们要注意的是,这个过程是不损坏LV本来就存放的数据的。所以逻辑卷的大小是可以动态的扩展或收缩。而不危害到里面的数据,这对我们的基本磁盘分区是不一样的。我们常用的这种基本磁盘分区,一旦大小不符合要求了,我们就只能重新分区格式化,所以里面的数据是会损失的。但是LV突破了这种限制,就像centos系统,如果我们进行自动化分区,他就会默认将根做在逻辑卷上,他首先也是创建一个boot分区,把剩余的空间全部创建为PV,把这个PV创建成VG,在VG中创建多个逻辑卷,一个LV用来当根,一个LV用来当swap一个LV用来当usr,VG中可以后多个LV,一个LV可以扩展到多大,是取决于VG中的空闲空间大小。如果LV扩展的没有空间可扩展了,那么我们需要先想VG中加以PV,然后再将在扩展LV所以这样对于企业外来不可预测的增长速度来讲这的确是一种很好用的方案。主要是我们不危害原有数据的前提下,我们的次磁盘空间就增大了。但是这样也有一个坏处,LV毕竟是在软件上实现的,就是数据一但发生损坏,修复起来比价困难。毕竟不是直接存储在硬件之上,而是靠另外软件来组织的。

VG的空间也是可以动态的扩展或收缩的。

我们一定要注意,我们要想从一个VG中拆掉一个PV,我们首先要保证剩余的PV能够保证提供VG上的LV已经占的空间。如果要移除PV上存有数据,我们需要先将存储在要移除PV中的数据拷贝出来,LV的缩减还是很危险的。但是扩展问题倒是不大。LVM加很容易,

1       LV:文件逻辑卷的缩减还是很危险的。

2.   一旦VG中的PE分配了给了VG,那么在LV中的PE就叫做LE,叫做逻辑盘区。

我们一定要注意删除PV有很多注意的地方。

对于VG或者LG来讲,他的每一个设备文件是在:

/dev/dm-#

/dev/mapper/VG_NAME-LV_NAME                  //设备文件的名字

例如:

/dev/mapper/vol0-root

/dev/VG_NAME/LV_NAME

/dev/vol0/root

创建物理卷:

物理卷可以创建在,磁盘上,分区上,RAID上

创建物理卷:

第一步:先创建分区,然后将分区的类型转化为“8e”;

第二步:使用创建物理卷的命令,我们在命令行上输入“pv”,然后双击“Tab”键,                                 就显示全部的与物理卷有关的命令

[[email protected]~]# pv

pvchange   pvcreate  pvmove     pvresize   pvscan

pvck       pvdisplay  pvremove  pvs        pv.sh

PV管理工具:

pvdisplay:显示物理卷详细信息   //单独执行会显示所有PV,也可以显示指定PV

pvremove:删除物理卷

pvmove:pv上的pe移动

pvscan:物理卷扫描

pvck:物理卷检测

pvs:简要显示PV格式

pvcreate  /dev/DEVICE:物理卷创建(可以一块写多个分区一起创建物理卷)

-v:显示创建过程

-f:强制创建物理卷,如果分区中有数据,则就强制覆盖。

-u:手动指定UUID

VG管理命令:

vgs:

vgdisplay:

vgcreate  物理卷

-s  #:指定PE大小,#表示单位。[mMgGtT]

vgextend  卷组名  物理卷(一次可以有多个)

vgremove

vgreduce  物理卷

移除之前先做vgmove移动PV上的数据到同一个卷组的PV上去。

LV管理工具:

lvcreate:创建

-L  #[mMgGtT] -n  逻辑卷名  卷组名

注意:我们创建逻辑卷大小时,有时候不一定就一定能做到要10G,就创建10G,                             这取决于我们的卷组上的PE大小。

lvdisplay:显示

lvs:简要显示

lvextend:扩展

lvreduce:缩减

lvremove:删除

lvresize:改变大小

lvconf:设置lv的配置文件

创建完成逻辑卷后,我们需要再进行格式化逻辑卷才能使用:

mke2fs  -t ext4  -b  1024 -L  卷标名  /dev/卷组名/逻辑卷名

然后我们创建一个目录,然后就可以将上面的格式化的分区挂载使用了。

mkdir  /bacup

mount  /dev/卷组名/逻辑卷名  /backup

ls  -l /back    //如果现实一个“lost+fount”文件,表示成功,任何一个新的文                                                            件系统创建都有一个新的lost+found文件。

扩展逻辑卷:

逻辑卷支持在线扩展容量

(1)lvextend  -L [+]#[mMgGtT]   /dev/卷组名/逻辑卷名

(2)resize2fs  /dev/卷组名/逻辑卷名

缩减逻辑卷:

(1)umount  /dev/卷组名/逻辑卷名

(2)e2fsck  -f /dev/卷组名/逻辑卷名

(3)resize2fs   /dev/卷组名/逻辑卷名  #[ mMgGtT]

(4)lvreduce  -L  [-]#[mMgGtT]  /dev/卷组名/逻辑卷名

(5)mount  /dev/卷组名/逻辑卷名  挂载点

(6)df  -lh /dev/卷组名/逻辑卷名    //查看缩减后的大小

btrfs文件系统本身就支持逻辑卷

快照:snapshot

对数据或者对一个文件系统做快照,就相当于把这个文件系统在过去某一时刻的状态迅速扫描一遍,也就是说,假设有一个磁盘分区,我们现在要对这个分区做快照,也就是瞬间完成这个磁盘上数据的状态。快照的特点就是瞬间完成。那么这个瞬间完成到底体现在什么地方?其实在备份时特别有用,因为快照很快,但是备份很慢,比方说现在我们需要将这个磁盘上的数据备份一份出来,也就是将磁盘上的数据复制一份出来,那么拷贝的速度就会很慢,拷贝的时候是将磁盘上的数据抽象成数据流,之所以转成数据流是因为我们的数据从一块磁盘上传输到另一块磁盘上是通过线缆传输的。而线缆所能承载的都是“0101”代码。也就是说的数据流,而这个过程我们称之为序列化的过程。任何数据都必须被序列化才能存到磁盘上。

举例说明:

比方说我们现在的教室有一张桌子,要将其送往上海去,那怎样运送呢?假如我们现在有一个水管,那怎样运呢?我们将桌子打碎成碎屑,这就是序列化的过程,把一个本来有形状的,有组织格式的数据转化成流式化传输的机制就叫做序列化但是序列化以后最重要的是我们还能将其还原回来才行,本来数据是在内存中存放,我为了将其保存在磁盘上,于是就将其序列化了,现在再回内存后发现碎了,那问题是我们接下来怎样将其还原回来呢,这就特别困难了,但不管怎样讲,我们要知道这就是一个序列化的过程而已。那么既然是序列化,那么就有可能有的数据已经到了上海了,但是仍然有一部分数据还在北京。那么我们的文件复制也是有这样的情况的,所以我们复制着前面的数据,后面的数据还在准备着,所以这样的备份速度太慢,尤其是在文件很大,假设文件是1T的话,复制半个小时是很常见的,那么复制半个小时后面的文件已经发生变化是很有可能出现的。那我们就必须解决这个问题。那么就要解决这种问题,我们复制过程中数据不能发生改变,也就是意味着我们复制数据在一个时间点。那我们应该怎样做这个功能?

这就是快照的意义,快照其实就是本来是一个逻辑卷我现在立马给他照几张照片放在另一个位置,我们知道每一个文件系统上的数据都分为数据和元数据,我们做快照就是在某一刻创建这个文件系统的元数据的监视器,我们随时监控着对方的元数据,而目标这个卷快照是通过快照卷来实现的,快照卷也是一个逻辑卷,这个卷在刚创建之初是没有任何信息的。一旦创建了快照卷就意味着,我们创建的监视器监视着对方的元数据,我们通过挂载点可以访问他的元数据,如果我们把快照卷也挂载了,那么我们通过快照卷也能访问到磁盘中的元数据,快照卷其实是指向访问另一个卷的访问路径而已。但是它不仅仅是一个路径,就想我们以前讲到的硬链接一样,他们指向同一段存储空间,只不过我们明确起名叫他为快照卷。并且他看起来像一个独立的卷一样,但是他本身没有存任何文件但是一旦你挂载,你发现他的文件都在,只是他引用的是原卷上的文件,所以我们说他是访问原逻辑卷上的文件的另一条路径。

但是如果原卷上的文件发生变化了,那么我们知道我们的快照卷也是指向这个原卷的文件的,所以访问快照卷时,我们也会看到文件发生了变化。我们要想办法避免这种情况发生,刚才我们说了,我们有一个监视器监视着对方的元数据,那么任何数据发生变化了,那么这些数据的元数据首先是变化的,所以任何时刻有些数据发生变化了,通过监控监控到时,先把这个要变化的文件复制一份到快照卷上,这样以后查找没有发生变化的文件时,我们就到原卷上查找,如果查找发生变化的文件我们就去快照卷上查找本地存放的副本。这就是快照卷的基本工作机制,快照卷的大小要看我们打算让快照卷存在多长时间,存在时监控的元数据有多大。

比如我们想让快照卷只存在2个小时,因为我们只需要两个小时就将数据复制完了,那么2个小时内元数据大概会发生2G的变化,那么我们创建5G的快照卷,那么这样就够用了。

快照卷与原卷必须要在一个卷组中,所以我们在创建快照卷时,我们要确保我们的卷组有足够的空间可用。快照卷一定是现有某个卷的快照。所以他要针对现有的某个卷来创建。

创建快照卷:

因为快照卷也是逻辑卷,所以我们通过“man  lvcreate”来查看快照卷的格式

lvcreate [-l|--extentsLogicalExtentsNumber[%{FREE|ORIGIN|PVS|VG}] |

-L|--size LogicalVolumeSize] [-c|--chunksize ChunkSize]

[--commandprofile ProfileName] [--noudevsync] [--ignoremonitoring]

[--metadataprofile ProfileName] [--monitor {y|n}] [-n|--name Snapshot-

LogicalVolume] -s|--snapshot|-H|--cache

{[VolumeGroup/]OriginalLogicalVolume [-V|--virtualsize VirtualSize]}

选项:

-s:指明原卷

-n:自己设定快照卷的名称

-L:指明快照卷的大小

-p:(小写)指明快照卷的读写;快照卷主要是用来读的,所以快照卷用来只读的。

标准命令:

lvcreate  -L  #[mMgGtT] -p  r  -s -n  快照卷的名字  原卷的名字

演示对某一个原卷创建快照卷

对ourlv逻辑卷创建快照

[[email protected]entos6 ~]# lvcreate -L 512M -p r -s -n ourlv-snapshot/dev/ourvg/ourlv

Logical volume "ourlv-snapshot" created.

[[email protected] ~]#

[[email protected] ~]# mount /dev/ourvg/ourlv-snapshot /mnt

mount: block device/dev/mapper/ourvg-ourlv--snapshot is write-protected, mounting read-only

[[email protected] ~]# cd /mnt

[[email protected] mnt]# ls

grub.conf issue  lost+found

[[email protected] mnt]# cat issue               //这是查看快照文件

CentOS release 6.8 (Final)

Kernel \r on an \m

[[email protected] ~]# cd /testdir/backup/  //切换到原卷中的文件

[[email protected] backup]# ls

grub.conf issue  lost+found

[[email protected] backup]# vim issue    //并在源文件中加上一个新内容

[[email protected] backup]# cat issue

CentOS release 6.8 (Final)

Kernel \r on an \m

newLine.

[[email protected] backup]#

[[email protected] mnt]# cat issue    //但是我们在快照文件中没有显示。

CentOS release 6.8 (Final)

Kernel \r on an \m

[[email protected] mnt]#

[[email protected] mnt]# cp /etc/rc.d/init.d/functions /testdir/backup/   //向原文件中复制一个                                                                                                                                           新文件

[[email protected] mnt]# cd /testdir/backup/

[[email protected] backup]# ls            //原卷中存在新复制的文件

functions grub.conf  issue  lost+found

[[email protected] backup]# ls /mnt              //但是查看快照卷中没有新文件,因为快照卷是复制原                                                                   来做快照那一刻的文件。

grub.conf issue  lost+found

[[email protected] backup]#

[[email protected] backup]# cp -a /mnt/{grub.conf,issue} /tmp/                   //这时候我们就可以开复                                                                                                                      制我们原本要想复制的文件了,                                                                                                                因为这个卷中的文件是不会变化的。

[[email protected] backup]# cd

[[email protected] ~]# umount /mnt             //复制完文件后,快照卷没有用了,我们将其删除,删                                                                            除逻辑卷要先卸载。

[[email protected] ~]# lvremove /dev/ourvg/ourlv-snapshot            //删除卷组

Do you really want to remove active logicalvolume ourlv-snapshot? [y/n]: y

Logical volume "ourlv-snapshot" successfully removed

[[email protected] ~]#

演示:将逻辑卷删除一直到恢复硬盘分区:

ourlv ourvg -wi-ao---- 3.00g

[[email protected] ~]# mount

/dev/mapper/ourvg-ourlv on /testdir/backuptype ext4 (rw)

[[email protected] ~]# umount /testdir/backup/

[[email protected] ~]# lvs

LV    VG    Attr      LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

ourlv ourvg -wi-a----- 3.00g

[[email protected] ~]# lvremove /dev/ourvg/ourlv   //一定要记住删除逻辑卷要写全“/dev/卷组                                                                                                名/逻辑卷名”

Do you really want to remove active logicalvolume ourlv? [y/n]: y

Logical volume "ourlv" successfully removed

[[email protected] ~]# vgs

VG    #PV #LV #SN Attr   VSize VFree

ourvg   2   0   0wz--n- 8.01g 8.01g

[[email protected] ~]# vgremove /dev/ourvg

Volume group "ourvg" successfully removed

[[email protected] ~]# fdisk -l /dev/sdc              //查看那几各分区做成了物理卷

Disk /dev/sdc: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x9d28685f

Device Boot      Start         End      Blocks  Id  System

/dev/sdc1               1         523    4200966   83  Linux

/dev/sdc2             524        1046    4200997+  8e  Linux LVM

/dev/sdc3            1047        2610   12562830    5  Extended

/dev/sdc5            1047        1569    4200966   8e  Linux LVM

[[email protected] ~]# pvremove /dev/sdc2

Labelson physical volume "/dev/sdc2" successfully wiped

[[email protected] ~]# pvremove /dev/sdc5

Labels on physical volume "/dev/sdc5" successfully wiped

[[email protected]~]#

演示:

(1)创建物理卷:

a.创建物理卷首先创建分区,并将要创建成物理卷的分区类型转化为8e

Disk /dev/sdc: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x9d28685f

Device Boot      Start         End      Blocks  Id  System

/dev/sdc1               1         523    4200966   83  Linux

/dev/sdc2             524        1046    4200997+  8e  Linux LVM

/dev/sdc3            1047        2610   12562830    5  Extended

/dev/sdc5            1047        1569    4200966   8e  Linux LVM

b.创建物理卷

[[email protected] ~]# pvcreate /dev/sdc2 /dev/sdc5

[[email protected] ~]# pvs /dev/sdc2 /dev/sdc5           //简要显示PV

PV         VG   Fmt Attr PSize PFree

/dev/sdc2       lvm2 ---- 4.01g4.01g

/dev/sdc5       lvm2 ---- 4.01g4.01g

[[email protected] ~]# pvdisplay /dev/sdc2 /dev/sdc5                   //显示更为详细的PV信息,pvdisplay                                                                                                                单独执行时会显示所有的PV,后面                                                                                                                   也可以跟PV名称,也就是分区的名                                                                                                              称,这就代表显示特定的PV。

"/dev/sdc2" is a new physical volume of "4.01 GiB"

---NEW Physical volume ---

PVName               /dev/sdc2

VGName                                         //还没有创建卷组所以这里还没有从属的卷组

PVSize               4.01 GiB               //PV大小

Allocatable           NO                 //不可分配,因为他还没有加入到卷组中

PESize               0                //由于还没有创建卷组,所以PE大小还没有

Total PE              0

Free PE               0

Allocated PE          0            //已经分配的PE数

PVUUID              VzUCFz-9432-QfU4-Gfmt-Dk8m-nt0c-kj0G14  //PV自己的UUID

"/dev/sdc5" is a new physical volume of "4.01 GiB"

---NEW Physical volume ---

PVName               /dev/sdc5

VGName

PVSize               4.01 GiB

Allocatable           NO

PESize               0

Total PE              0

Free PE               0

Allocated PE          0

PVUUID              1fW6MV-cOsb-9r41-c4l3-jmDb-Apvf-iiK4Jd

c.删除物理卷

[[email protected] ~]# pvremove /dev/sdc2

Labels on physical volume "/dev/sdc2" successfully wiped

[[email protected] ~]#

(2)创建卷组:

a.创建卷组:

[[email protected] ~]# vgcreate ourvg  /dev/sdc2/dev/sdc5

Volume group "ourvg" successfully created

[[email protected] ~]#

[[email protected] ~]# vgdisplay ourvg                  //查看创建的卷组

---Volume group ---

VGName               ourvg

System ID

Format                lvm2

Metadata Areas        2

Metadata Sequence No  1

VGAccess             read/write

VGStatus             resizable

MAXLV                0

CurLV                0

Open LV               0

MaxPV                0

CurPV                2

ActPV                2

VGSize               8.01 GiB              //卷组总的大小

PESize               4.00 MiB              //PE大小默认就是4M,这个一旦确定就不能改变了,

Total PE              2050

Alloc PE / Size       0 / 0

Free  PE / Size       2050 / 8.01 GiB

VGUUID              TvVCzT-UfzG-l3aT-ABJ3-J5yy-qGe2-kspFiS

[[email protected] ~]#

[[email protected] ~]# pvdisplay /dev/sdc2          //创建卷组完成后,再次查看物理卷

---Physical volume ---

PVName               /dev/sdc2

VGName               ourvg

PVSize               4.01 GiB / not usable2.54 MiB

Allocatable           yes

PESize               4.00 MiB

Total PE              1025

Free PE               1025

Allocated PE          0

PVUUID              Gv6hNB-aOaC-JRMg-IvIS-FvQL-8bIR-nsQoYa

[[email protected] ~]#

[[email protected] ~]# vgextend ourvg /dev/sdc1                 //扩展卷组

Volume group "ourvg" successfully extended

[[email protected] ~]# vgs ourvg

VG    #PV #LV #SN Attr   VSize VFree

ourvg   3   0   0wz--n- 12.01g 12.01g                            //现在成了12G,添加成功

[[email protected] ~]#

[[email protected] ~]# pvmove /dev/sdc1             //在从卷组中移除一个物理卷时,我们应该先执行                                                                            pvmove这个命令,将pv中的数据移出这个PV,                                                                                         然后在删除PV

Nodata to move for ourvg

[[email protected] ~]# vgreduce ourvg /dev/sdc1                 //从卷组ourvg中删除PV

Removed "/dev/sdc1" from volume group "ourvg"

[[email protected] ~]# vgs ourvg                    //删除成功。

VG    #PV #LV #SN Attr   VSize VFree

ourvg   2   0   0wz--n- 8.01g 8.01g

[[email protected] ~]#

(3)创建逻辑卷

[[email protected] ~]# lvcreate -L 3G -n ourlv ourvg

Logical volume "ourlv" created.

[[email protected] ~]# ls /dev/mapper                   //查看已经创建好设备文件

control myvg-mylv  ourvg-ourlv

[[email protected] ~]#

创建好逻辑卷后,我们就可以跟分区那样进行格式化然后挂载使用了。

(4)格式化逻辑卷,创建目录,并挂载使用

[[email protected] ~]# mke2fs -t ext4 -b 1024 -L OURLV /dev/ourvg/ourlv

mke2fs 1.41.12 (17-May-2010)

Filesystem label=OURLV

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

196608 inodes, 3145728 blocks

157286 blocks (5.00%) reserved for thesuper user

First data block=1

Maximum filesystem blocks=70254592

384 block groups

8192 blocks per group, 8192 fragments pergroup

512 inodes per group

Superblock backups stored on blocks:

8193,24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,

1024001,1990657, 2809857

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accountinginformation: done

This filesystem will be automaticallychecked every 35 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[[email protected] ~]# mkdir -p /testdir/backup

[[email protected] ~]# ls -l /testdir/backup/

total 0

[[email protected]]# mount/dev/ourvg/ourlv /testdir/backup/

[[email protected] backup]# ls -l /testdir/backup/

total 12

drwx------. 2 root root 12288 Nov 14 17:49 lost+found

[[email protected] backup]#

[[email protected] backup]# mount               //使用mount命令我们也能看到格式化的逻辑卷挂载                                                                       到了那个目录下

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts(rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0")

/dev/sda1 on /boot type ext4 (rw)

/dev/sda3 on /testdir type ext4 (rw)

none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fusetype fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon(rw,nosuid,nodev)

/dev/sr0 on /media/CentOS_6.8_Final typeiso9660(ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)

/dev/mapper/ourvg-ourlvon /testdir/backup type ext4 (rw)

[[email protected] backup]#

(5)向这个文件中复制文件:

[[email protected] backup]# cd /testdir/backup/

[[email protected] backup]# cp /etc/issue ./

[[email protected] backup]# cp /etc/grub.conf ./

[[email protected] backup]# ls

grub.conf issue  lost+found

[[email protected] backup]# cat issue

CentOS release 6.8 (Final)

Kernel \r on an \m

[[email protected] backup]#

综上我们就可以完成逻辑卷的创建了。

演示扩展逻辑卷:

[[email protected] backup]# lvextend -L +2g /dev/ourvg/ourlv

Size of logical volume ourvg/ourlv changed from 3.00 GiB (768 extents)to 5.00 GiB (1280 extents).

Logical volume ourlv successfully resized.

[[email protected] backup]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              48G  4.5G  42G  10% /

tmpfs                 932M   76K 932M   1% /dev/shm

/dev/sda1             190M   39M 142M  22% /boot

/dev/sda3              20G   44M  19G   1% /testdir

/dev/sr0              3.7G  3.7G    0 100% /media/CentOS_6.8_Final

/dev/mapper/ourvg-ourlv

3.0G  3.3M 2.8G   1% /testdir/backup

[[email protected] backup]# umount /dev/ourvg/ourlv                 //卸载失败,是因为用户还在这个挂                                                                                                        载目录中,所以需要先退出这个挂载                                                                                                                目录,然后再卸载

umount: /testdir/backup: device is busy.

(In some cases useful info about processes that use

the device is found by lsof(8) or fuser(1))

[[email protected]]# cd

[[email protected] ~]# umount /testdir/backup/

[[email protected]~]# mount /dev/ourvg/ourlv/testdir/backup/

[[email protected] ~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              48G  4.5G  42G  10% /

tmpfs                932M   76K 932M   1% /dev/shm

/dev/sda1             190M   39M 142M  22% /boot

/dev/sda3              20G   44M  19G   1% /testdir

/dev/sr0              3.7G  3.7G    0 100% /media/CentOS_6.8_Final

/dev/mapper/ourvg-ourlv

3.0G 3.3M  2.8G   1% /testdir/backup

[[email protected] ~]#

我们发现重新挂载后,这个逻辑卷大小仍然是原来的大小,这其实并不是表示我们的逻辑卷扩展没有成功,因为对于整个逻辑卷来讲,他其实创建完成以后,这是他的物理空间决定的,因为我们创建逻辑分区后,我们又在上面创建了文件系统,那我们扩展的是仅是物理上的空间,我们还没有扩展文件系统的空间,所以我们再次扩展文件系统,我们不用重新挂载文件系统,我们使用resize2fs命令,这只适用于ext系列的文件系统

[[email protected] ~]# resize2fs /dev/ourvg/ourlv   //没有指明扩展大小,表示重新修改整个分区大小

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/ourvg/ourlv is mountedon /testdir/backup; on-line resizing required

old desc_blocks = 12, new_desc_blocks = 20

Performing an on-line resize of/dev/ourvg/ourlv to 5242880 (1k) blocks.

The filesystem on /dev/ourvg/ourlv is now5242880 blocks long.

[[email protected] ~]#

[[email protected] ~]# df -lh          //表示我们不需要卸载,我们只需修改他的分区的逻辑边界即可

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              48G 4.5G   42G  10% /

tmpfs                 932M   76K 932M   1% /dev/shm

/dev/sda1             190M   39M 142M  22% /boot

/dev/sda3              20G   44M  19G   1% /testdir

/dev/sr0              3.7G  3.7G    0 100% /media/CentOS_6.8_Final

/dev/mapper/ourvg-ourlv

4.9G  3.5M 4.7G   1% /testdir/backup

[[email protected] ~]#

演示缩减逻辑卷:

缩减逻辑卷与扩展逻辑卷正好相反,我们先所缩减文件系统,然后我们再缩减外部的物理逻辑卷空间。

(1)要缩减文件系统就必须先卸载

[[email protected]~]# umount /dev/ourvg/ourlv                   //因为缩减是不能联机进行的,                                                                                                                 否则出错的可能性非常大,所以                                                                                                                         我们不建议去缩减文件系统

[[email protected]~]#

(2)卸载完成后,我们强制进行文件系统检测和修复

[[email protected]~]# e2fsck -f /dev/ourvg/ourlv

e2fsck1.41.12 (17-May-2010)

Pass1: Checking inodes, blocks, and sizes

Pass2: Checking directory structure

Pass3: Checking directory connectivity

Pass4: Checking reference counts

Pass5: Checking group summary information

OURLV:13/327680 files (0.0% non-contiguous), 119751/5242880 blocks

[[email protected]~]#

(3)缩减逻辑变界,注意我们再缩减逻辑边界时我们要指明缩减至多大,缩减的空间要大于里面所存储的文件大小

[[email protected]~]# resize2fs /dev/ourvg/ourlv3G

resize2fs1.41.12 (17-May-2010)

Resizingthe filesystem on /dev/ourvg/ourlv to 3145728 (1k) blocks.

Thefilesystem on /dev/ourvg/ourlv is now 3145728 blocks long.

[[email protected]~]#

(4)然后再缩减物理逻辑卷的大小,我们在指定大小的时候。我们可以使用减多少,我们也可以直接写数字,后不加单位。带减号表示将空间减少多少,不带减号表示将空间降到多大。

[[email protected] ~]# lvreduce -L 3G /dev/ourvg/ourlv

WARNING: Reducing active logical volume to 3.00 GiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce ourvg/ourlv?[y/n]: y

Size of logical volume ourvg/ourlv changed from 5.00 GiB (1280 extents)to 3.00 GiB (768 extents).

Logical volume ourlv successfully resized.

[[email protected] ~]#

(5)然后重新挂载缩减后的逻辑卷

[[email protected] ~]# mount /dev/ourvg/ourlv /testdir/backup/

[[email protected] ~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              48G  4.5G  42G  10% /

tmpfs                 932M   76K 932M   1% /dev/shm

/dev/sda1             190M   39M 142M  22% /boot

/dev/sda3              20G   44M  19G   1% /testdir

/dev/sr0              3.7G  3.7G    0 100% /media/CentOS_6.8_Final

/dev/mapper/ourvg-ourlv

3.0G 3.3M  2.8G   1% /testdir/backup

[[email protected] ~]#

[[email protected] ~]# cd /testdir/backup/

[[email protected] backup]# ls

grub.conf issue  lost+found

[[email protected] backup]# cat issue                  //所有的 文件都能正常访问

CentOS release 6.8 (Final)

Kernel \r on an \m

[[email protected] backup]# cat grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grubafter making changes to this file

# NOTICE: You have a /boot partition.  Thismeans that

#         all kernel and initrd paths are relative to /boot/, eg.

#         root (hd0,0)

#         kernel /vmlinuz-version ro root=/dev/sda2

#         initrd /initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS 6 (2.6.32-642.el6.x86_64)

root(hd0,0)

kernel/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=2ead7599-15b0-4b11-b96d-5f9b59e2e7ebrd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16crashkernel=128M  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quiet

initrd/initramfs-2.6.32-642.el6.x86_64.img

[[email protected] backup]#

练习题:(分别实现以下步骤)

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

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

3.扩展testlv至7G,要求arclinux用户的文件不能丢失;

4.收缩testlv至3G,要求arclinux用户的文件不能丢失;

5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能;

文件系统挂载使用:

挂载光盘设备:

光盘设备文件:路径:

IDE接口:/dev/hdc

SATA接口:/dev/sr0

符号连接文件:

/dev/cdrom

/dev/cdrrw

/dev/dvd

/dev/dvdrw

mount  -r /dev/cdrom  /media/cdrom

umount  /dev/cdrom

挂载U盘时,先把U盘插到主机上,如果用虚拟机也可以测试:

他就能识别出U盘,然后这个时候我们使用命令fdisk -l 来列出设备。

如果是fat32文件系统进行挂载一点问题没有,但是如果是ntfs的话很可能我们的centos6和7的内核是无法识别的。

dd命令:

实现文件底层复制的工具。

dd不像cp那样通过文件系统接口复制的,而是通过块接口复制的。

用法:

dd  if=/PATH/FROM/SRC  of=/PATH/TO/DEST

这个命令还有个特点就是还可以在复制的时候不需要复制全部,还能够复制指定的字节数

bs=#:复制单元大小,bs默认单位为字节

count=#:复制多少个bs

由于dd命令很底层所以他的效率比cp要高。

举例:

dd if=/etc/fstab  of=/tmp/fstab  bs=1 count=100

等同于:

dd if=/etc/fstab  of=/tmp/fstab  bs=100 count=1

磁盘复制:

dd if=/dev/sda  of=/dev/sdb

备份MBR

dd if=/dev/sda  of=/tmp/mbr.bak  bs=512 count=1

还有一种用法:

dd  if=/dev/zero of=/dev/sda  bs=512  count=1  //这表示破坏磁盘分区表,可                                                                                                 以使用这种方法快速清空一个磁盘上的分区,                                                                                             但是操作有风险

破坏MBR中的bootloader:

dd  if=/dev/zero of=/dev/sda  bs=256  count=1 //这表示清空磁盘上的                                                                                                        bootloader,但是磁盘分区表还有。

/dev/zero被称为泡泡机

linux上有两个特殊设备:

/dev/null:数据黑洞;

/dev/zero:吐零机;

时间: 2024-08-07 04:33:36

lvm——应用的相关文章

LVM系统快照

上一章写了LVM的创建.扩展.缩小(上一章链接http://bella41981.blog.51cto.com/10603572/1794365).还差一点没弄明白,那就是LVM的快照,有一个小小的弯没有绕过来,今天终于弄明白了,整理出来和大家分享一下. 2.0.LVM快照 添加磁盘 [[email protected] ~]# vgdisplay ---Volume group --- VGName               vbirdvg System ID Format         

Linux Lvm创建详解

Disk管理 LVM(Logical Volume Manager)逻辑卷管理建立在硬盘和分区之上,文件系统之下的逻辑层,能在保持原有数据不变的状况下动态调整磁盘容量/boot分区不能创建在逻辑卷上(跟启动引导相关)必须独立出来 LVM概念  创建时在硬盘头部预留一个块,用于保存LVM属性PV物理卷--->VG卷组--->LV逻辑卷--->格式化--->挂载使用文件系统 2.LVM管理命令功能          物理卷          卷组          逻辑卷scan(扫描

LVM基本应用 扩展及缩减实现

LVM: Logical Volume Manage 首先: pv管理工具:  pvs:简要pv信息显示  pvdisplay:显示pv的详细信息 pvcreate /dev/DEVICE: 创建pv vg管理工具:  vgs  vgdisplay vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]  vgextend  VolumeGroupName  Physic

Linux Raid和LVM管理

1.磁盘管理 #提示没有partprobe yum -y install parted #新硬盘新建分区,并将类型改为Linux Raid autodetect #非交互方式,注意1与t之间有一个回车键 fdisk /dev/sde <fdisk.txt fdisk.txt: n p 1 1 t fd w #新建分区,注意1与w之间有一个回车键 fdisk /dev/sdf <fdisk1.txt fdisk.txt: n p 1 1 w q #将磁盘格式化为ext4文件系统 mkfs.ext

Centos LVM扩展磁盘实例

环境: centos 前期了解: 最大磁盘问题 1,对lvm2创建的LVM卷来说,容量大小取决于kernel的限制 (当然,还有你的磁盘空间).对lvm1创建的LVM卷来说,LVM逻辑卷最大可能容量取决于所用扩展大小.  计算公式是:65534 * 扩展大小 = 最大逻辑卷大小,默认pe是为4M,范围是8K-16G,lvm1最大扩展到1PB 65534 * 16GB = 1,048,544 GB 2,对于大于2TB的磁盘,应该用parted来分区(下篇文章将会讲解),fdisk只能支持2TB以下

LVM卷配置管理

一.LVM的建立: 1.添加一块新的硬盘sdb: 2.新建四个分区sdb1.sdb2.sdb3.sdb4,分别为1G: 3.将sdb1与sdb2组成pv: 4.新建卷组mfvg,并将sdb1与sdb2加入其中: 5.新建lv: 6.格式化并挂在lv: 7.查看新建的lv: 二.LVM的增大:将mflv增大到4G: 由于pv总大小只有2G,所以需要将pv进行扩展: 2.扩展mfvg: 3.扩展mflv: 4.查看扩展后的mflv: 5.可以看出文件系统并为增加到4G,所以还需如下操作: 6.再次查

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

Linux-6.5下 MariaDB-10基于LVM快照的备份数据 详解

理解部分: LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM可以对分区在线扩容,快照,镜像和条带化,功能非常强大.这篇文章的主题就是其中一个功能--快照. 快照(Snapshot)就是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像.快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品: 其实

LVM简单使用

如何为系统(CentOS6.x)添加一个LVM磁盘分区 知识先导: Q1: 什么是LVM? A1:LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制.可以从根本上解决磁盘分区大小问题,用户在无需停机的情况下可以方便地调整各个分区大小[1]. Q2:PV/VG/LV分别代表什么? A2:PV(Physical Volumn)/VG(Volumn Group)/LV(Logical Volumn),中文依次为物理卷/卷组/逻辑

KVM虚拟化搭建及其KVM中LVM扩容

KVM虚拟化搭建及其KVM中LVM扩容 前言: 公司项目方最近有两台物理服务器系统分别为CentOS 7.2.需要部署KVM虚拟化,第一台服务器A需要虚拟出三台虚拟机(均为CentOS 7.2系统),服务器B上需要虚拟出三台CentOS 7.2 系统和两台windows server2012 系统.其中六台CentOS 7.2 虚拟机需要部署我们自己的平台,两台windows分别部署客户的平台.下面来为大家说一下KVM虚拟化的搭建,以及创建虚拟机的两种办法,及其操作使用.     KVM小课补: