测试环境:CentOS 5.10 x64sda 20Gsdb 1Gsdc 2G.

一、创建逻辑卷镜像关系的步骤:
1)通过pvcreate命令将linux分区处理成物理卷(PV)
2)通过vgcreate命令将创建好的物理卷处理成卷组(Vg)
3)通过lvcreate命令使用–m1 参数将卷若干个PV组成一个逻辑镜像卷(Lv)
之后我们可以对镜像逻辑卷进行格式化,挂载,删除等操作。

二、创建磁盘分区

首先将sbcsdc分区,并创建三个pvsdb1sdc1sdc2),其中sdb1作为数据盘,sdc1作为镜像盘,sdc2作为日志盘,日志盘不应太小(一般10G左右)。

1)将sdb分区

[root@Centos~]# fdisk /dev/sdb

Devicecontains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Buildinga new DOS disklabel. Changes will remain in memory only,

until youdecide to write them. After that, of course, the previous

contentwon't be recoverable.

Warning:invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command(m for help): n

Commandaction

e extended

p primary partition (1-4)

p

Partitionnumber (1-4): 1

Firstcylinder (1-130, default 1):

Usingdefault value 1

Lastcylinder or +size or +sizeM or +sizeK (1-130, default 130): +1024M

Command(m for help): p

Disk/dev/sdb: 1073 MB, 1073741824 bytes

255heads, 63 sectors/track, 130 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 125 1004031 83 Linux

Command(m for help): w

Thepartition table has been altered!

Callingioctl() to re-read partition table.

Syncingdisks.

[root@Centos ~]#

2)将sdc分区

[root@Centos ~]#fdisl /dev/sdc

bash: fdisl:command not found

[root@Centos ~]#fdisk /dev/sdc

Device containsneither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a newDOS disklabel. Changes will remain in memory only,

until you decideto write them. After that, of course, the previous

content won't berecoverable.

Warning: invalidflag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m forhelp): n

Command action

e extended

p primary partition (1-4)

p

Partition number(1-4): 1

First cylinder(1-261, default 1): 1

Last cylinder or+size or +sizeM or +sizeK (1-261, default 261): +1024M

Command (m forhelp): n

Command action

e extended

p primary partition (1-4)

p

Partition number(1-4): 2

First cylinder(126-261, default 126):

Using defaultvalue 126

Last cylinder or+size or +sizeM or +sizeK (126-261, default 261): +1000M

Command (m forhelp): p

Disk /dev/sdc:2147 MB, 2147483648 bytes

255 heads, 63sectors/track, 261 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdc1 1 125 1004031 83 Linux

/dev/sdc2 126 248 987997+ 83 Linux

Command (m forhelp): w

The partitiontable has been altered!

Calling ioctl()to re-read partition table.

Syncing disks.

3)重读分区表

[root@centos ~]#partprobe

如果sdbsdcFCiscsiDAS存储,且配置了多路径,则使用如下命令更新分区表,若还未更新就只能init 6 重启服务器了:

kpartx –a/dev/mapper/mpathbp1 然后 ls/dev/mapper/ 查看分区设备

4pvcreate 创建pv 设备

[root@Centos ~]#pvcreate /dev/sdb1 /dev/sdc1 /dev/sdc2

Writing physical volume data to disk"/dev/sdb1"

Physical volume "/dev/sdb1"successfully created

Writing physical volume data to disk"/dev/sdc1"

Physical volume "/dev/sdc1"successfully created

Writing physical volume data to disk"/dev/sdc2"

Physical volume "/dev/sdc2"successfully created

[root@Centos ~]#

查看pv设备表:

[root@centos ~]#pvscan (或者pvs,或者 pvdisplay查看详细信息包括pvuuid

PV /dev/sda2 VG VolGroup00 lvm2 [19.88 GB/ 0 free]

PV /dev/sdb1 lvm2 [980.50 MB]

PV /dev/sdc1 lvm2 [980.50 MB]

PV /dev/sdc2 lvm2 [964.84 MB]

Total: 4 [22.73 GB] / in use: 1 [19.88 GB] /in no VG: 3 [2.86 GB]

[root@Centos ~]#

5vgcreate创建 vg0物理卷组

[root@Centos ~]#vgcreate vg0 /dev/sdb1 /dev/sdc1 /dev/sdc2

Volume group "vg0" successfullycreated

[root@Centos ~]#

三、创建LVM Mirror镜像卷

[root@Centos ~]# lvcreate -L 970M -m1 -n mirror vg0 /dev/sdb1/dev/sdc1

Rounding up size to full physical extent972.00 MB

Logical volume "mirror" created

[root@Centos ~]#lvdisplay /dev/vg0/mirror 查看/dev/vg0/mirror

--- Logical volume ---

LV Name /dev/vg0/mirror

VG Name vg0

LV UUID vX60P8-MmjC-tNX8-w2jI-t2qt-AZnD-Rnj0IN

LV Write Access read/write

LV Status available

# open 0

LV Size 972.00 MB

Current LE 243

Mirrored volumes 2

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:5

[root@Centos ~]#lvs -a -o +devices 查看当前LVM中设备状态

[root@Centos ~]# mkfs.ext3 /dev/vg0/mirror 格式化lvm,创建文件系统

四、管理lvm mirror

1)破坏一个pv设备(sdb1),然后再查看lvs状态,发现少了一个pv设备sdb1

[root@Centos ~]#dd if=/dev/zero of=/dev/sdb1 count=10

10+0 records in

10+0 records out

5120 bytes (5.1 kB) copied, 0.000856 seconds, 6.0 MB/s

spacer.gif

2)把损坏的pvvg0卷组删除(缩小vg0卷组):

[root@Centos ~]#vgreduce --removemissing --force vg0

Couldn't find device with uuidkJc1oG-Ua0R-RDiC-KaJ5-oomD-cH9Q-2DbWQ2.

Wrote out consistent volume group vg0

[root@Centos ~]#

因为上面我们是手动破坏pv,如果是pv离线或者减少vgpv设备,使用如下指令:

[root@Centos ~]#vgreduce vg0 /dev/sdb1

移除之后发现vg0详细信息中没有了Mirrored volumes选项

[root@Centos ~]#vgdisplay /dev/vg0

--- Volume group ---

VG Name vg0

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 9

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 1

Open LV 0

Max PV 0

Cur PV 2

Act PV 2

VG Size 1.91 GB

PE Size 4.00 MB

Total PE 490

Alloc PE / Size 243 / 972.00 MB

Free PE / Size 247 / 988.00 MB

VG UUID q620jv-Oc9a-pUlg-q6wM-TFXl-wAa7-jh40Fs

[root@Centos ~]#

3)扩展vg0卷组:

[root@Centos ~]#vgextend vg0 /dev/sdb1 扩展vg0卷组

Writing physical volume data to disk"/dev/sdb1"

Physical volume "/dev/sdb1"successfully created

Volume group "vg0" successfullyextended

[root@Centos ~]#pvs 查看pv状态

PV VG Fmt Attr PSize PFree

/dev/sda2 VolGroup00 lvm2 a-- 19.88G 0

/dev/sdb1 vg0 lvm2 a-- 980.00M 980.00M

/dev/sdc1 vg0 lvm2 a-- 980.00M 8.00M

/dev/sdc2 vg0 lvm2 a-- 980.00M 980.00M

4)镜像卷组数据恢复:

[root@Centos ~]#lvconvert -m1 /dev/vg0/mirror /dev/sdb1 /dev/sdc1 /dev/sdc2

vg0/mirror: Converted: 0.0%

vg0/mirror: Converted: 43.6%

vg0/mirror: Converted: 83.5%

vg0/mirror: Converted: 100.0%

[root@Centos ~]#lvs-a -o +devices 查看mirror卷组状态,会看到三个pv

[root@Centos ~]#lvdisplay /dev/vg0/mirror 查看lvm mirror详细信息,Mirrored

volumes再次出现

--- Logical volume ---

LV Name /dev/vg0/mirror

VG Name vg0

LV UUID vX60P8-MmjC-tNX8-w2jI-t2qt-AZnD-Rnj0IN

LV Write Access read/write

LV Status available

# open 0

LV Size 972.00 MB

Current LE 243

Mirrored volumes 2

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:5

[root@Centos ~]#