Linux中LVM2原理及制作LVM2

一、LVM原理

【MD】:Multi Device 多设备

Mdadm是一个用户空间工具,是RAID的管理工具,与真正的RAID工作没有太大关系。真正的RAID集成在linux内核中

【DM】Device Mapper设备映射也是linux中一种经常使用的管理机制

DM 与MD近似,也可以提供一种逻辑设备

DM比MD的功能要强大。由于DM不只能提供MD的RAID的功能,它还是逻辑卷(LVM2)基础,同一时候,在逻辑卷的基础上我们也能实现RAID0,RAID1。

这种功能。全部DM与MD中有某些功能是重叠的。但并不全然重叠。所以。我们通常使用MD做RAID用DM做LVM2

上图为DM的内核架构。即DM是怎么来工作的。

DM像MD一样也是有一个核心模块。和很多子模块组成的。比如MD。MD的核心有RAID0,RAID1,RAID5,RAID1+0等。由多个子模块完毕不同的级别。

DM也是有多个子模块完毕不同的组织方式。

比如:

linear:有点类似Jbod。可以将多个磁盘的存储空间拼接在一块,当做一个磁盘来使用。

mirror:类似于镜像。

Snapshot:快照,向虚拟机一样,可以保留数据在做快照那一刻时的状态。

快照,也可以说是訪问同一条数据的另外一条路径。(主要用途是数据备份)

Multipath:多路径。多路径须要借助于DM模块来配置。可以实现数据存储设备的寻路可以通过多跟不同线来完毕。

RAID:仅仅是为了避免硬件损坏而导致业务终止或数据损失的。并不能保证人为错误的操作。导致数据损失。说以通常即使有RAID后数据依旧要做备份。

DM除了快照外,还支持动态缩减磁盘大小。

比方:我们有多快物理磁盘,DM能够将这多个磁盘组织成一个大的逻辑设备。假设以后发现内存不够能够再加入一块硬盘扩大设备,假设后来发现空间太大,也能够撤掉一块硬盘缩小空间。例如以下图:

注意:这个逻辑设备仅仅是相当于一个扩展分区,我们在这个扩展分区上能够创建新的分区。因此。我们要想在这个逻辑设备上使用存放数据。就必须在这个逻辑设备上创建逻辑分区。这个逻辑分区就是真正能够扩大缩小的一个分区。例如以下图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

【PV】:Physical Volume物理卷

【VG】:Volume Group卷组

【LV】:Logical Volume逻辑卷

VG(卷组)的边界大小取决于PV(物理卷)组合的大小。

尽管PV组合成了多个VG可是,要真正使用就要划分LV(逻辑卷),在VG上能够划分多个LV,但这多个LV的大小加起来的和不能超过VG,假设发现VG不够用了,能够添加PV(物理卷)。假设LV中空间不足能够扩大LV。

对卷创建快照。实际上就是对逻辑卷创建快照,而快照卷必须和逻辑卷处于同一个卷组中。也就意味这,假设你要打算对某个LV逻辑卷创建快照,就必须在同一个卷组中预留出空间给当中的某个逻辑卷创建快照卷。

为什么可以实现VG的扩展以及LV的扩展。事实上吧PV放入VG时就要把PV这个物理卷的全部空间划分成一个物理块。及一个个存储单元。 这个块不是文件系统块。而是PE(PhysicalExtend物理盘区),仅仅要物理卷增加VG后,新加卷中划分的PE一定是和VG原因的PE大小同样。说以在创建VG时要制定VG所使用多大的PE。

【PE】(Physical Extend) 物理盘区,简称盘区

所以VG卷组中就是由一大堆的PE组成。

那么LV逻辑卷的创建就是由VG分给LV多少个PE。

那么LV的大小取决于VG分给了LV多少个PE。而在LV上这些PE就叫做LE(LoglcalExtend逻辑盘区)。所以LV上的扩展就相当于加入几个PE,就能达到扩展PE的目的。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

假设将逻辑卷建立在RAID的基础上使用RAID1+0那么。即使硬件有损坏,也不会对LVM的性能有影响。这样既能够保证数据的安全,也能扩大盘区。

二、创建LVM

【操作系统:】红帽6.3

【相关命令:】

pvcreate:将物理卷创建为pv

vgcreate:将pv组合成vg

lvcreate:在vg上创建lv

那么首先我们要创建VG

这里样例中用创建一个10G的vg为例。

首先要创建一个10G的vi我们能够用10个1G的构成也能够使用一个2G,一个3G,一个5G的pv够成。

为了模拟,这里使用磁盘分区来模拟硬盘去创建vg

首先准备2,3,5G的分区个一个。

来模拟三块硬盘

创建分区能够使用fdisk来创建。本文档不做创建分区演示。详情请见日志《linux中RAID的创建方法》

如图:这里已经创建好了sdb10为2G,sdb11为3G,sdb12为5G为了后面的其它演示,这里还另外创建了一个7G的sdb13。

注意:创建完毕后要改动分区类型为Linux LVM。其Linux LVM在本系统中的类型编号为8e。

然后

# partprobe  /dev/sdb

重读sdb分区表,假设失败能够使用partx -a /dev/sdb来重读

输入:cat /proc/partitions来验证能否够使用该分区。

#cat /proc/partitions

然后将这些分区,也就是物理卷创建为pv

第一步:创建PV

#pvcreate/dev/sdb{10,11,12,13}

将sdb10,sdb11,sdb12,sdb13创建为pv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

使用pvs能查看当前系统上有哪些pv

#pvs

这里就能够看见我们刚刚已经创建好了的pv,当中sda2是系统自己之前创建的。

上面的这些设备有些误差,这些误差仅仅要在20%之内都是正常的。

使用pvdisplay能够查看pv的具体信息,要想看当中某个pv的信息信息能够加上设备名称

#pvdisplay /dev/sdb10

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

第二步、创建vg

创建vg使用vgcreate命令

#vgcreate myvg /dev/sdb{10,11,12}

将sdb10,sdb11,sdb13创建成一个vg名称为myvg

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

能够使用vgs来查看系统上的vg设备

#vgs

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

当中vg_gdy是系统自己之前创建的。;myvg是我们刚才创建的vg

使用vgdisplay能够查看vg的具体信息

#vgdisplay /dev/myvg

这里能够看到myvg的大小为10.02G,刚好和之前我们创建的2g,3g,5g的pv的空间大小和。

这里能够看到myvg的pe大小为4mb,已经一共包括了多少个pe即【total PE】,眼下空暇的pe【Free PE 】

在创建vg时使用-s能够指定盘区PE的大小。

删除vg能够使用vgremove

#vgremove myvg

能够删除刚才创建的myvg

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这里使用vgs就已经找不到刚才创建的myvg了

如今来创一个pe大小为8MB的vg

#vgcreate myvg -s 8M /dev/sdb{10,11,12}

使用vgdisplay 查看myvg的具体信息

#vgdisplay myvg

这里已经能够看到PE的大小为8M

缩减vg。注意。缩减vg的过程就相当于拿掉了一个pv(物理卷)。

假设刚好拿掉的那个vg上有数据,那么就会损坏这套系统。那么一般在缩减vg时都要先使用pvmove将这个pv里面的数据移动到其它设备上。比如如今要移除sdb11这个pv那么就要先使用pvmove,然后在使用,vgreduce移除sdb11这个设备

将sdb11上的数据移动到其它设备上

#pvmove /dev/sdb11

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

因为这里并没有在pv上创建逻辑分区,当前mypv上没有数据所以这里移除时提示没有数据。

那么接下来就从myvg中能够移除这个pv

移除sdb11

# vgreduce myvg/dev/sdb11

使用vgs再次查看vg的大小

#vgs

如今可看到vg的大小已经有10G缩减一个3G的sdb11后仅仅有7G了

使用pvs查看

#pvs

此时的sdb11已经不属于不论什么一个vg了

当一个pv不属于不论什么一个vg时 就能够使用pvremove来删除该pv

删除sdb11

#pvremove /dev/sdb11

再次输入pvs就已经找不到之前的sdb11了

扩展myvg

#vgextend myvg/dev/sdb13

将之前已经创好了的sdb13加入到myvg中

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

然后使用vgs查看,能够看到之前缩小到7G的myvg加入一个7G的sdb13的pv后大小变为14G

注意:一旦将一个pv增加到已经存在的vg中后。该pv上的物理盘区PE大小会自己主动确定,保持和vg中物理盘区大小一致。

查看sdb13的物理盘区大小

#pvdisplay /dev/sdb13

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

能够看到该pv上的物理盘区大小和之前vg上的物理盘区大小一样都是8M

第三步、在vg上创建lv

创建一个50M左右的lv(逻辑卷)

#lvcreate -L 50M-n testlv myvg

即:在myvg上创建一个50M大小的lv名称为testlv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

使用lvs能够查看系统上的lv

#lvs

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这里能够看到我们创建的testlv实际大小为56M,这是由于PE大小的原因,系统必须依照整个PE去给lv分配大小。所以这里testlv的大小必须是PE的整数倍。

使用lvdisplay能够查看lv的具体信息

#lvdisplay /dev/myvg/testlv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

使用mke2fs为testlv创建文件系统

#mke2fs -j/dev/myvg/testlv

#挂载textlv到/ftpftp/gandian/gz2文件夹以下

#mount /dev/myvg/testlv /ftpftp/gandian/gz2

如今。testlv已经挂载,能够使用了。

使用mount查看挂载信息

#mount

这里我们能够看到挂载的testlv是/dev/mapper/myvg-testlv,事实上/dev/mapper/才是真正的设备文件,在/dev/myvg/testlv仅仅是个链接文件。

#ls -la /dev/myvg/testlv

移除lv前lv不能处于挂载状态,

卸载testlv

#umount /dev/myvg/testlv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

移除testlv

#lvremove /dev/myvg/testlv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这里会提示你该设备上或许有文件。是否确定移除。输入y就可以

#lvs

刚才的textlv就已经找不到了。

这里lv的创建以及基本操作就完毕了。

第四、扩展lv

首先,创建分区的过程实际就是创建物理边界的过程。给分区创建文件系统,就相当于在这个分区上创建逻辑边界。

实际上逻辑边界是紧临物理边界的。那么假设要扩展一个lv首先要扩展其物理边界,然后在扩展其逻辑边界也就是文件系统边界。反之缩减一个lv就要先缩减逻辑边界(即文件系统边界)。然后再缩减物理边界。

一般,扩展风险小,缩减风险大。

扩展和缩减的步逐不能搞反。否则会损坏文件系统。

先创建一个2G的逻辑卷lv名称为testlv

# lvcreate -L 2G -n testlv myvg

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="57" width="563">

格式化testlv

# mke2fs -j /dev/myvg/testlv

挂载testlv

# mount /dev/myvg/testlv /ftpftp/gandian/gz2

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

查看挂载信息

#mount

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

拷贝一个文件到该文件夹以下

# cp /etc/inittab /ftpftp/gandian/gz2

查看磁盘信息

#df -lh

能够看到该testlv大小为2G。那么如今我们将它扩展到5G

第一步:先扩大lv逻辑边界

# lvextend -L 5G/dev/myvg/testlv

注意:这里扩展之前一定要确保vg中有足够的空间可用。

分别使用df -lh 和lvs查看比較

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

能够发现,此时testlv的大小已经扩展到5G的,但挂载上的信息依旧显示2G,这里是由于文件系统还没有扩展的原因。也就是逻辑边界还没有扩展。

第二步:扩展逻辑边界(即。扩展文件系统边界)

# resize2fs -p /dev/myvg/testlv

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这里就是将文件系统扩展到最大可用范围。

如今使用df -lh 和lvs查看比較

这里已经都显示5G了。即扩展完毕。

所以,扩展逻辑卷。并不影响当中原有文件的使用。而且风险很小,而且这个文件系统就算处于挂载状态,不用卸载任然能够扩展。

第五、缩减lv

上面已经再扩展lv中解释过,缩减lv的次序和扩展lv的次序相反。先要缩减逻辑边界,能够使用resize2fs。

注意:缩减逻辑卷的风险很大。

第一、  一定不要在线缩减,得先卸载;

第二、  确保缩减后的空间大小依旧能存储原有的全部数据。

第三、  在缩减之前应该先强行检查文件系统,确保文件系统处于一致性状态。

文件系统缩减完毕后能够使用lvreduce去缩减lv(即:逻辑边界)大小。

这里演示样例为将刚才的5Gtestlv缩减到3G

第一步:卸载testlv

#umount /dev/myvg/testlv

X卸载完毕后能够使用mount来检查。

第二步:强行检查testlv的文件系统

# e2fsck -f  /dev/myvg/testlv

检查后没问,就可用继续下一步:

第三步:缩减文件系统边界到3G

# resize2fs /dev/myvg/testlv 3G

第四步:缩减testlv的物理边界到3G

# lvreduce -L 3G /dev/myvg/testlv

这里提示的是,可能会损坏文件。假设损坏文件,责任自负,这里输入y就可以

没问题后能够挂在该设备

第五步:挂载testlv

# mount /dev/myvg/testlv /ftpftp/gandian/gz2

挂载后能够使用ls查看文件,发现之前拷贝的文件依旧存在。没有损坏。

使用df –lh 和lvs能够查看testlv的信息

显示testlv的磁盘大小为3G,即:lv的缩减成功。

第六、创建lv快照卷

本次演示样例将以之前testlv为例,为testlv创建快照卷。

注意:因为快照卷通常是不许改动,那么创建快照卷的同一时候一般制定为仅仅读的方式创造。

创建快照卷依旧使用lvcreate 只是要使用參数-s来指定创建的为快照卷。-p能够指定权限。

注意:快照卷必须和源卷在同一个卷组中。快照卷的主要作用是备份,那么在创建快照卷后,备份完毕后。

一般快照卷就没有意义了。能够删除。

快照卷的生命周期为整个数据时长:在这段时长内,数据的增长量不能超出快照卷大小:假设超出了快照卷的大小。那么文件的变化数据就超出了快照卷的大小。那些变化的数据就不能存在快照卷中。这样的情况仅仅要发生,那么快照卷就会放弃全部操作,而且自我损坏。

这样,你之前的备份就会挂掉。为了安全快照卷的大小能够和原卷的大小一样大。这样数据量再大。也不可能超出原卷大小,只是一般不建议这么做。

给textlv创建一个50M的快照卷

# lvcreate -L 50M -ntestlv-snap -s -p r /dev/myvg/testlv

使用lvs能够查看快照卷

#lvs

挂载快照卷到/ftpftp/gandian/kz/

# mount /dev/myvg/testlv-snap /ftpftp/gandian/kz/

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

挂载完毕后能够发现快照卷中文件和之前的testlv文件夹下的文件一样。

比如如今在testlv中创建一个文件能够发现testlv-snap快照卷中的文件不会更改。

备份快照卷

# tar -jcf /ftpftp/gandian/gz2.tar.bz2 /ftpftp/gandian/kz/

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

查看备份文件的信息

# tar -jtfgz2.tar.bz2

卸载快照卷

# umount /dev/myvg/testlv-snap

删除快照卷

# lvremove /dev/myvg/testlv-snap

删除快照卷后能够使用lvs验证

到这里快照卷的创建及备份就演示完成了。

---附加----------------------------------------------------

Lvm具体解释

【pv】Physical Volume 物理卷

【vg】Volume Group VG卷组

【lv】logical Volume逻辑卷

创建pv及查看pv相关命令

pv :注意pv是由磁盘分区构成,分区格式为(8e(linux))

【pvcreate】创建pv

比如:

pvcreate/dev/sda1 /dev/sda2   //级能够将sda1和sda2设备创建称为pv设备

【pvremove】删除pv

【pvscan】扫描pv(扫描系统上有多少个pv物理磁盘)

【pvdisplay】查看系统上pv的具体信息

【pvs】查看当前系统上的pv设备(简单查看)

【pvmove】移动pv

vg:注意:vg是由pv构成构成后对系统看来相当于一个磁盘

【vgcreate】创建vg将pv创建为vg

比如:

vgcreatemyvg /dev/sdb1 /dev/sdb2  //将已经用pv创建好了的磁盘sdb1和sdb2创建成vg名称为myvg

參数:

【-s #】指定盘区大小(PESize)默认盘区大小为4MB

比如:

gcreate-s 8M myvg /dev/sdb{5,6} //创建名称为myvg 使用pv已经创建好了的设备sdb5,sdb6构成,盘区PE大小为8M

【vgremove】移除vg

比如:     #vgremovemyvg  //将myvg删除

【vgmove】移动,把物理盘区移动到其它设备上         #pvmove/dev/sdb5  //将物理盘区sdb5上的数据移走(方便之后卸载该物理盘区)

【vgdisplay】查看vg设备的具体信息

【vgs】查看vg设备的基本信息

【vgscan】扫描系统上有多少个vg设备

【vgreduce】缩减vg   #vgreduce myvg /dev/sdb5 //将myvg设备上的sda5移除(即myvg的空间会缩小)

#pvremove/dev/sdb5(接着能够将pv磁盘设备sdb5移除)

【vgxtend】扩展vg     #vgextendmyvg /dev/sdb7 //将myvg设备扩展个pv的磁盘sdb7

#pvcreate/dev/sdb7(在上面之前要先创建)

lv :注意:lv是属于vg的,须要在vg中创建

【lvcreate】创建lv须要在vg上创建

參数:

【-n】:指定名称

【-L】:指定空间大小

比如:lvcreate -L 50M -n testlv myvg         //在myvg中创建一个lv,名称为testlv,大小为50M

mke2fs -j /dev/myvg/testlv     //即格式化testlv.格式化的文件系统为ext3

mount /dev/myvg/testlv /mnt         //将testlv挂载到mnt文件夹以下

【-p】:指定权限

【-s】:指定为快照卷

【创建快照卷】

1、生命周期为整个数据时长:在这段时长内,数据的增长量不能超出快照卷大小:

2、快照卷应该是仅仅读的:

3、快照卷和原卷在同一卷组内

语法【lvcreate-L # -n SLV_NAME -p r /PATH/TO/LV】

#lvcreate -L 50M -n lv1-snap -s -p r/dev/myvg/lv1  //为lv1设备创建一个大小为50M,名称为:lv1-snap,权限为仅仅读的快照卷

#mount /dev/myvg/lv1-snap /ftpftp/gandian     //将快照卷挂载在gandian目录下

#tar -jcf /beifeng.tar.bz2 /ftpftp/gandian     //将快照卷内容所有备份为beifeng.tar.bz2文件

#umount /dev/myvg/lv1-snap                         //卸载快照卷

#lvremove /dev/myvg/lv1-snap                              //移除快照卷(即将快照卷删除)

相关命令

lv :注意:lv是属于vg的,须要在vg中创建

【lvremove】移除        #lvremove/dev/myvg/testlv  //将testlv移除

#lvremovelvremove /dev/mapper/myvg-testlv      //也能够移除testlv(注意:/dev/myvg/testlv仅仅是个连接文件。真正的文件在/dev/mapper/myvg-testlv)

【lvs】

【lvdisplay】

【lvcan】

【lvextend】扩展

比如:#lvextend -L 7G /dev/myvg/testlv//将testlv物理边界扩展到7G

#resize2fs  -p /dev/myvg/testlv     //将testlv的文件系统边界扩展为最大(即物理边界有多少就用多少)

【lvreduce】缩小

注意:     1、不能在线缩减,得先卸载;

2、确保缩减后的空间大小依旧能存储原有的全部数据:

3、在缩减之前应该先强行检查文件。以确保文件系统处于以至性状态

比如:

#df -lh               //查看文件系统大小,以及已经使用大小

#umount/dev/myvg/testlv          //卸载testlv设备

#e2fsck -k/dev/myvg/testlv                   //强行检查testlv设备的文件系统

#resize2fs/dev/myvg/testlv 1G            //缩减文件系统大小到1G

#lvreduce -L 1G/dev/myvg/testlv       //缩减testlv物理边界到1G

#mount/dev/myvg/testlv /users                   //挂载

【lvresize】既能够扩展又能够缩小

一、扩展逻辑卷:

【lvextend 】扩展磁盘的逻辑卷

-L [+]# /PATH/TO/LV

【resize2fs】扩展文件系统逻辑编辑

resize2fs /PATH/TO/LV 5G

比如:#lvextend -L 7G /dev/myvg/testlv //将testlv物理边界扩展为7G

#resize2fs  -p /dev/myvg/testlv     //将testlv的文件系统边界扩展为最大(即物理边界有多少就用多少)

二、缩减逻辑卷:

注意:1、不能在线缩减,得先卸载;

2、确保缩减后的空间大小依旧能存储原有的全部数据:

3、在缩减之前应该先强行检查文件,以确保文件系统处于以至性状态

Linux中LVM2原理及制作LVM2的更多相关文章

  1. Linux中LVM2原理

    一.LVM原理 [MD]:Multi Device 多设备 Mdadm是一个用户空间工具,是RAID的管理工具,与真正的RAID工作没有太大关系.真正的RAID集成在linux内核中 [DM]Devi ...

  2. Linux中_ALIGN宏背后的原理——内存对齐

    转载自: http://englishman2008.blog.163.com/blog/static/2801290720114210254690/ 1. 原理    int a;     int ...

  3. Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理

    Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...

  4. 浅析 Linux 中的时间编程和实现原理一—— Linux 应用层的时间编程【转】

    本文转载自:http://www.cnblogs.com/qingchen1984/p/7007631.html 本篇文章主要介绍了"浅析 Linux 中的时间编程和实现原理一—— Linu ...

  5. linux中内存使用原理

    首先介绍一下linux中内存是如何使用的. 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存 来使用,也 ...

  6. 【翻译】TCP backlog在Linux中的工作原理

    原文How TCP backlog works in Linux水平有限,难免有错,欢迎指出!以下为翻译: 当应用程序通过系统调用listen将一个套接字(socket)置为LISTEN状态时,需要为 ...

  7. 深入解读键值产生原理,linux中的软链接和硬链接(转)

    键值 = 文件标示符 + 项目ID 当用到进程间的通信时, 必须要注意到的是键值是怎么产生的,我们知道任何一个文件时通过文件名来访问的, 而内核在对应的给其一个值,也就是文件标示符. 系统建立IPC通 ...

  8. openstack 制作镜像以及windows向Linux中通过xshell传文件

    慢慢的也要把openstack一些相关的笔记整理上来了 之前由于主要是在看horizon 实验室搭建的openstack平台并没有怎么实际的用起来,前几天别的同学要用来测试大数据的相关服务,才把这些内 ...

  9. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

随机推荐

  1. Vue Invalid handler for event "": got undefined

    原因:绑定的方法不是放在methods:{}里.比如我把绑定的函数写在了computed:{}里就会报这个错.

  2. Vue render: h => h(App) $mount

    $mount()手动挂载 当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中: 假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载.例如: new Vue({ //el: ...

  3. CSS笔记 - SVG Polyline 图片绘制动画边框

    <style> div{ width: 420px; height: 200px; background: url('./img/timg.jpg') no-repeat; } polyl ...

  4. BZOJ5394: [Ynoi2016]炸脖龙(欧拉广义降幂)

    就是让你求这个: 传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5394 解题思路: NOIP2018后第一道题,感觉非常像那个上帝与集合的 ...

  5. 内核中的宏定义__init、__initdata和__exit、__exitdata

    __init.__initdata和__exit.__exitdata的定义位于<kernel/include/linux/init.h> /* These are for everybo ...

  6. Redmine安装

    http://www.itnpc.com/news/web/146433249372595.html http://www.cnblogs.com/iluzhiyong/p/redmine.html ...

  7. php图像处理(thinkphp框架有相对强大的图像处理功能)

    php图像处理(thinkphp框架有相对强大的图像处理功能) 一.总结 1.php处理图像:php处理图像需要安装外库(gd库) 2.gd库函数可以非常完美的操作图像:安装好库之后,这个库里面的函数 ...

  8. Oracle调用Java类开发的存储过程、函数的方法

    oracle调用java类的基本步骤 1. 编写java代码,后续可以直接使用java代码,class文件或者jar包 2. 将写好的java代码导入到oracle数据库中,有两种方法:一种是使用lo ...

  9. common daemon

    http://zdsyouxiang.iteye.com/blog/1940202 http://commons.apache.org/proper/commons-daemon/procrun.ht ...

  10. IOS蓝牙项目总结

    常见的蓝牙标准有2.0和4.0.   特点 2.0 1.适用于数据量比较大得传输,比如音乐.语音2.IOS开发中,要求设备是经过MFI认证 4.0 1.适用于实时性比较高的数据传输,比如遥控类的鼠标. ...