您的位置:   主页 > 技术文章

Linux lvm卷组管理恢复与使用

时间:2011-03-20 09:48来源:青岛数据恢复 作者:青岛四通数据恢复公司 点击:425次




1假如我要把一个新的分区加入到现有的vg0当中该怎么做呢

比方sdb1加入到vg0中

首先将sdb1分区设置成8e格式然后创建成物理卷

[root@localhost/]#pvcreat/dev/sdb1

Physvolum"/dev/sdb1"successfullicreated

然后我把sdb1这个pv加入到vg0中去

检查一下全部pv信息

[root@localhost/]#pvs

PVVGFmtA ttrPSizePFree

/dev/sdb1lvm2--4.99G4.99G

/dev/sdc1vg0lvm2a-980.00M980.00M

/dev/sdd1vg0lvm2a-980.00M980.00M

/dev/sde1vg0lvm2a-980.00M980.00M

/dev/sdf1vg0lvm2a-980.00M980.00M

发现sdb1还没有加入到vg0里面去

[root@localhost/]#vgextendvg0/dev/sdb1这里就是把sdb1加入到vg0里面去拉)

Volumgroup"vg0"successfulliextended

已经胜利加入)[root@localhost/]#pv现在看见了吧。>

PVVGFmtA ttrPSizePFree

/dev/sdb1vg0lvm2a-4.99G4.99G

/dev/sdc1vg0lvm2a-980.00M980.00M

/dev/sdd1vg0lvm2a-980.00M980.00M

/dev/sde1vg0lvm2a-980.00M980.00M

/dev/sdf1vg0lvm2a-980.00M980.00M

 

2那么我要把sdb1vg0里面移动进去呢?

[root@localhost/]#vgreducvg0/dev/sdb1这里就是vg0里面把sdb1移除)

Remov"/dev/sdb1"fromvolumgroup"vg0"

[root@localhost/]#pvs

PVVGFmtA ttrPSizePFree

/dev/sdb1lvm2--4.99G4.99G

/dev/sdc1vg0lvm2a-980.00M980.00M

/dev/sdd1vg0lvm2a-980.00M980.00M

/dev/sde1vg0lvm2a-980.00M980.00M

/dev/sdf1vg0lvm2a-980.00M980.00M

 

3vg分离操作

[root@localhost/]#vgsplitvg0vg1/dev/sde1这里的意思是从vg0里面提出/dev/sde1进去新建到一个vg1里面去)

[root@localhost/]#vg这里我很清楚的看见了新建的VG1刚好是sde1容量)

VG#PV#LV#SNAttrVSizeVFree

vg0300wz--n-2.87G2.87G

vg1100wz--n-980.00M980.00M

vg删除:

[root@localhost/]#vgremovvg1

Volumgroup"vg1"successfulliremoved

那么下面我就来基于卷组上面创建LV也就是逻辑卷。以上是pv和vg创建以及转换。>

 

②lv逻辑卷的创立)lvcreatlvlvdisplairesize2flvresizlvextendlvreduclvremove

[root@localhost/]#lvcreat-L500-nlv0vg0这里我基于vg0上面创立了一个大小为500Mlv0逻辑卷)

也就是MB如果是–l那么就是指定的物理块(PE每个物理块我创立的时候为4MB–n指定lv名字上面需要注意的–L表示指定逻辑卷的大小。>

Logvolum"lv0"created

[root@localhost/]#lvs

LVVGA ttrLSizeOriginSnap%MoveLogCopy%Convert

lv0vg0-wi-a-500.00M

下面我可以基于这个lv0逻辑卷创建文件系统了

下面就可以把这个带有ext3文件系统的逻辑卷挂载到指定目录为我提供服务了[root@localhost/]#mkfs.ext3-Llv0/dev/vg0/lv0运用mkfs.ext3创立了文件系统。>

mke2f1.3929-May-2006

Filesystemlabel=lv0

OStype:Linux

Blocksize=1024log=0

Fragsize=1024log=0

512000blocks128016inodes.>

25600block5.00%reservforthesuperuser

Firstdatablock=1

Maximumfilesystemblocks=67633152

63blockgroups

8192fragmentpergroup8192blockpergroup.>

2032inodpergroup

Superblockbackupstoreonblocks:

8193.40961,24577.57345,73729,204801,221185,401409

Writinodtables:done

Crjournal8192block:done

Writsuperblockandfilesystemaccountinformation:done

Thifilesystemwillbeautomatcheckeveri37mountor

whichevcomefirst.Usetune2f-cor-itooverride180days..

 

 

[root@localhost/]#mkdir/werll创建挂载点)

[root@localhost/]#mount-Llv0/werll/挂载lv0

[root@localhost/]#df-TH

FilesystemTypeSizeUsedA vailUse%Mounton

/dev/sda3ext34.1G2.1G1.8G55%/

/dev/sda1ext3104M12M87M12%/boot

tmpftmpf264M0264M0%/dev/shm

/dev/mapper/vg0-lv0ext3508M11M471M3%/werll

如上所示我看见了LV0挂载点大小正好是创立lv0时候分配的500MB

 

调整lv和filesystem文件系统)大小:

这里有两个概念:

第一:如果是增加容量。然后再增加文件系统的大小

第二:如果是减小容量。意思是如果你先减少了LV2GB那么如果LV文件系统里面的数据是大于2GB那么有可能会损坏文件系统或者出现减少容量不成功,那么我先要收缩文件系统的大小再减少LV大小。所以我减少LV容量的时候,应该考虑文件系统里面的数据实际大小而定。

只不过lvextend处置未被格式化和挂载的LV比较好些。这里增大LV大小可以用lvextend和lvresiz都行。>

当前我LV大小为500MB所处的VG0大小为2G那么我可以再为LV增加500M容量扩展。

[root@localhost/]#lvresiz-L+500/dev/vg0/lv0为LV0增加了500M大小的容量)

/dev/cdrom:openfailed:Read-onlifilesystem

Extendlogicvolumlv0to1000.00MB

Logvolumlv0successfulliresized

 

增加了lv0大小后我还得为基于LV0上面的文件系统做增量操作

[root@localhost/]#umount/werll/首先卸载掉挂载点)

[root@localhost/]#resize2fs/dev/vg0/lv0这里运行resize2f调整增大后的LV所对应的文件系统实际大小)

resize2f1.3929-May-2006

下面我继续).Pleasrun'e2fsck-f/dev/vg0/lv0'first提示我进行磁盘效验检查。>

[root@localhost/]#fsck.ext3-f/dev/vg0/lv0

e2fsck1.3929-May-2006

Pass1:Checkinodes.andsizes

Pass2:Checkdirectoristructure

Pass3:Checkdirectoriconnectivity

Pass4:Checkrefercounts

Pass5:Checkgroupsummariinformation

26700/512000blockslv0:11/128016file9.1%non-contigu.>

[root@localhost/]#resize2f/dev/vg0/lv0

resize2f1.3929-May-2006

Resthefilesystemon/dev/vg0/lv0to10240001kblocks.

Thfilesystemon/dev/vg0/lv0isnow1024000blocklong.

[root@localhost/]#mount/dev/vg0/lv0/werll/挂载上我增加过后的LV

[root@localhost/]#df-TH

FilesystemTypeSizeUsedA vailUse%Mounton

/dev/sda3ext34.1G2.1G1.8G55%/

/dev/sda1ext3104M12M87M12%/boot

tmpftmpf264M0264M0%/dev/shm

/dev/mapper/vg0-lv0ext31.1G12M953M2%/werll这里显示容量变大了

 

下面我实现怎么减少文件系统容量和LV容量。减少容量我用lvresize和lvreduce都行以上为增大LV以及所对应的文件系统容量。>

顺序不能搞反了呵呵这里我要考虑我要先收缩文件系统然后再收缩LV卷的大小。>

原来的1000MB减少到800吧

[root@localhost/]#umount/werll/

[root@localhost/]#resize2f/dev/vg0/lv0800M后面的那个800M表示为你收缩过后文件系统的实际大小)

resize2f1.3929-May-2006

Pleasrun'e2fsck-f/dev/vg0/lv0'first.

[root@localhost/]#fsck.ext3-f/dev/vg0/lv0运行磁盘检查)

e2fsck1.3929-May-2006

Pass1:Checkinodes.andsizes

Pass2:Checkdirectoristructure

Pass3:Checkdirectoriconnectivity

Pass4:Checkrefercounts

Pass5:Checkgroupsummariinformation

42831/1024000blockslv0:11/254000file9.1%non-contigu.>

那么再次进行收缩操作)[root@localhost/]#resize2f/dev/vg0/lv0800M磁盘检查过后没有错误。>

resize2f1.3929-May-2006

Resthefilesystemon/dev/vg0/lv0to8192001kblocks.

Thfilesystemon/dev/vg0/lv0isnow819200blocklong.

[root@localhost/]#lvextend-L-200/dev/vg0/lv0

Negargumentnotpermit-uslvreduce

Run`lvextend--help'formoreinformation.

[root@localhost/]#lvreduc-L-200/dev/vg0/lv0

/dev/cdrom:openfailed:Read-onlifilesystem

WA RNING:Reducactivlogicvolumto800.00MB

THISMA YDESPOYYOURDA TA filesystemetc.

Doyourealliwanttoreduclv0?[y/n]:y

Reduclogicvolumlv0to800.00MB

Logvolumlv0successfulliresized

[root@localhost/]#mount/dev/vg0/lv0/werll/

[root@localhost/]#df-TH

FilesystemTypeSizeUsedA vailUse%Mounton

/dev/sda3ext34.1G2.1G1.8G55%/

/dev/sda1ext3104M12M87M12%/boot

tmpftmpf264M0264M0%/dev/shm

呵呵) /dev/mapper/vg0-lv0ext3813M12M760M2%/werll这正是需要的效果。

 

下面我来实现基于LVM线性卷。快照的建立

线性卷(Linearvolum建立:

检查一下VG0下面有几个PV

[root@localhost/]#pvs

PVVGFmtA ttrPSizePFree

/dev/sdc1vg0lvm2a-980.00M980.00M

/dev/sdc2lvm2--1.04G1.04G

/dev/sdd1vg0lvm2a-980.00M980.00M

/dev/sdd2lvm2--1.04G1.04G

/dev/sde1lvm2--980.50M980.50M

/dev/sde2lvm2--1.04G1.04G

分别是sdc1和sdd1大小分别是980MB和1.04GB有两个。>

[root@localhost/]#lvcreat-l250-nlv0vg0/dev/sdc1:0-150/dev/sdd1:0-100

以上的-l250需要建立LV0大小。下面我检查一下

[root@localhost/]#lvs

LVVGA ttrLSizeOriginSnap%MoveLogCopy%Convert

lv0vg0-wi-ao1000.00M这里刚好是1000M容量)

接下来是LVM镜像卷的建立:

镜像卷有两种创建方式:

第一种是指定MB大小

第二种是指定VG?上面多少个PE去创建

[root@localhost/]#lvcreat-L500-m1--corelog-nlv1vg1

上面我用到-m1和—corelog参数启用了镜像卷和核心日志功能

条带卷的创立

[root@localhost/]#lvcreat-nlv1-i2-I64-L1000vg1

-I参数指定单位为KB块大小-i参数告诉LVM应该在多少个PV上分散数据。>

Logvolum"lv1"created

[root@localhost/]#lvs

LVVGA ttrLSizeOriginSnap%MoveLogCopy%Convert

lv0vg0-wi-ao1000.00M

lv1vg1-wi-a-1000.00M

  LVM快照的建立。如果快照的容量超越了所记录的最大数,这里需要注意的快照记录的改变过后的东西。那么LVM会自动把这个快照删除。

[root@localhost/]#mount/dev/vg0/lv0/werll/

[root@localhost/]#cd/werll/

[root@localhostwerll]#ls

lost+found

[root@localhostwerll]#touch123456

[root@localhostwerll]#ls

那么一会我建立的快照里面会有和他里面内容一样的数据呈现) 123456lost+found这里的目的LV0文件系统上面给他发生数据。

[root@localhost/]#lvcreat-L500-s-nbackup/dev/vg0/lv0这里我发生一个大小为500MLV0快照)

Logvolum"backup"created

[root@localhost/]#mount/dev/vg0/backup/backup/挂载快照到backup目录上)

[root@localhost/]#cd/backup/

[root@localhostbackup]#ls

证明了快照建立成功) 123456lost+found这里显示了和LV0里面一样的内容。

 

 

 


Linux  lvm 卷组管理的使用。。。