RHEL6.5 LVM使用解析推荐

Linux用户在安装操作系统时,会遇到的一个常见问题就是如何正确地评估各分区大小,以便划分合适的硬盘空间。普通的磁盘分区管理方式在各分区划分好后就无法改变其大小,而当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。或遇到某个分区空间快耗尽时,解决的方法通常是使用符号链接,或者新建目录外挂分区以及使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。其实在Linux下,利用LVM,这些问题都可以迎刃而解,用户在无需停机的情况下就可以方便地调整各个分区大小。

一、LVM命令简介

LVM(Logical Volume Manager)是一个应用于Linux的内核的逻辑卷管理器,是Linux环境下对磁盘进行分区管理的一种机制。 LVM中需要知道的名词: 1、PV(物理卷)可以是一个磁盘,一个分区。由PE(物理盘区)组成,多个PV可以组成一个VG(卷组). 2、VG(卷组)是多个物理卷组成的一个组,但是卷组不可以直接使用,需要在上面创建LV(逻辑卷)才可以使用。VG上可以创建多个LV。 3、PE(物理盘区)就像我们之前学习的磁盘的block块,默认是4MB。 4、LV(逻辑卷) 是建立在卷组之上的一个可用空间。有物理边界和逻辑边界两种边界。

二、相关命令介绍

1、物理卷PV pvcreate 创建pv 例:pvcreate /dev/sda1 pvs 查看pv信息 例:直接在命令行里输入pvs pvdisplay 查看pv详细信息 例:pvcreate /dev/sda1 pvmove 将pv数据移动到其他pv 例:pvmove /dev/sda1 /dev/sda4 pvremove 将pv删除 例:pvremove /dev/sda12、卷组VG 如何创建、查看、删除vg vgcreate 创建vg 例:vgcreate myvg /dev/sda{m,n} vgs 查看vg信息 例:直接在命令行里输入vgs vgdisplay 查看vg详细信息 例:vgdisplay myvg vgremove 将vg删除 例:vgremove myvg 如何扩展vg 首先准备好一个PV; 然后使用vgextend 命令即可完成扩展; 格式: vgextend VG_NAME /PATH/TO/PV vgextend testvg /dev/sdb2 扩展myvg卷组,把/dev/sda2加进去 如何缩减vg 1)确定要移除的PV; 2)将此PV上的数据转移至其它PV; pvmove /path/ to /pv 3)从卷组中将此PV移除; 格式:vgreduce VG_NAME /PATH/TO/PV vgreduce testvg /dev/sdb2 缩减myvg卷组,把/dev/sda2去掉3、逻辑卷LV 如何创建、查看、删除lv lvcreate 创建lv 例:lvcreate lv1 /dev/myvg lvs 查看lv信息 例:直接在命令行里输入lvs lvdisplay 查看lv详细信息 例:vgdisplay lv1 lvremove 将lv 移除 例:lvremove /dev/myvg/lv1 如何扩展lv

确定需要扩展多大空间

确定当前逻辑卷所在的卷组是否有足够的空闲空间;

扩展举例:1、物理边界lvextend -L [+]SIZE /path/to/lv2、逻辑边界resize2fs /path/to/device

如何缩减lv确定缩减的大小,但前提是至少能容纳原有的所有数据。缩减:1)卸载并强行检测文件系统;umount /pathe2fsck -f2)逻辑边界resize2fs /path/to/device SIZE3)物理边界lvreduce -L [-]SIZE /path/to/lv

4、快照卷1) 生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;2) 快照卷应该是只读的;3) 跟原卷在同一卷组内; lvcreate -L 指定快照卷的大小 -s 创建快照卷 -p r 创建的快照卷为只读访问 格式: lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv

三、lv之示例

1、创建一个分区

[root@test11 ~]# fdisk -l //查看分区的情况[root@test11 ~]# fdisk /dev/sda //进行分区Command (m for help): n //n为添加一个分区,p查看分区First cylinder (2898-10443, default 2898): //按【Enter】键决定Using default value 2898 //起始柱面选择默认 值Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G // 给2G的大小Command (m for help): t //更改分区类型Partition number (1-5): 5 //选着分区Hex code (type L to list codes): l //分区类型列表Hex code (type L to list codes):8e //将新添加的分区标注成lvmCommand (m for help): p //查看分区表/dev/sda5 2756 2999 1959898+ 8e Linux LVMCommand (m for help): w //保存[root@test11 ~]# partprobe /dev/sda //是系统识别分区(代替重启)[root@test11 ~]# mkfs.ext4 /dev/sda5 //格式化新添加的分区

2、PV的创建

[root@test11 ~]# pvcreate /dev/sda5 //创建pvWriting physical volume data to disk “/dev/sda5″Physical volume “/dev/sda5” successfully created[root@test11 ~]# pvs //查看当前pv的信息PV VG Fmt Attr PSize PFree/dev/sda5 lvm2 a– 1.87G 1.87G

3、VG的创建

[root@test11 ~]# vgcreate vg0 /dev/sda5 //vg0为当前vg的名Volume group “vg0” successfully created[root@test11 ~]# vgs //查看vg的信息VG #PV #LV #SN Attr VSize VFreevg0 1 0 0 wz–n- 1.87G 1.87G

4、lv的创建

[root@test11 ~]# lvcreate -L 500M -n lv01 vg0Logical volume “lv01” created[root@test11 ~]# lvs //查看lv的信息LV VG Attr LSize Origin Snap% Move Log Copy% Convertlv01 vg0 -wi-a- 500.00M[root@test11 ~]# mkfs.ext4 /dev/vg0/lv01 //格式化

5、lv的增大

[root@test11 ~]# lvextend -L +300M /dev/vg0/lv01 //(原来lv大小500M ,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MBLogical volume lv01 successfully resized[root@test11 ~]# resize2fs /dev/vg0/lv01 //拉伸文件系统[root@test11 ~]# lvsLV VG Attr LSize Origin Snap% Move Log Copy% Convertlv01 vg0 -wi-ao 800.00M //大小变成了800M

6、lv的减小

# umount /dev/vg0/lv01 //卸载逻辑卷/dev/vg0/lv01# df -h //查看# e2fsck -f /dev/vg0/lv01 //磁盘校验# resize2fs /dev/vg0/lv01 500M //回缩文件系统到 500M# lvreduce -L 500M /dev/vg0/lv01 //回缩分区到 500MWARNING: Reducing active logical volume to 500.00 MBTHIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce lv01? [y/n]: y# lvsLV VG Attr LSize Origin Snap% Move Log Copy% Convertlv01 vg0 -wi-a- 500.00M //此时已变成500M大小# mount /dev/vg0/lv01 /mnt/lv01 //重新挂载分区# df -h //查看# ls /mnt/lv01 //查看文件

四、lvm的关闭

[root@test11 ~]# umount /mnt/lv01[root@test11 ~]# lvremove /dev/vg0/lv01 //删除lvDo you really want to remove active logical volume lv01? [y/n]: yLogical volume “lv01” successfully removed[root@test11 ~]# vgchange -a n vg0 //使vg0不具有active标志0 logical volume(s) in volume group “vg0” now active[root@test11 ~]# vgremove vg0 //删除vgVolume group “vg0” successfully removed[root@test11 ~]# pvremove /dev/sda5 //删除pvLabels on physical volume “/dev/sda5” successfully wiped

五、扩展根分区和SWAP

[root@zkdb1 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda3 vg_zkdb1 lvm2 a– 557.46g 521.46g

[root@zkdb1 ~]# lvs

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

root vg_zkdb1 -wi-ao—- 20.00g

swap vg_zkdb1 -wi-ao—- 16.00g

[root@zkdb1 ~]# lvcreate -L 30720M vg_zkdb1

Logical volume “lvol0” created

[root@zkdb1 ~]# lvs

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

lvol0 vg_zkdb1 -wi-a—– 30.00g

root vg_zkdb1 -wi-ao—- 20.00g

swap vg_zkdb1 -wi-ao—- 16.00g

[root@zkdb1 ~]# lvextend -L +30G /dev/mapper/vg_zkdb1-root

Extending logical volume root to 50.00 GiB

Logical volume root successfully resized

[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-root

e2fsck 1.41.12 (17-May-2010)

/dev/mapper/vg_zkdb1-root is mounted.

e2fsck: Cannot continue, aborting.

[root@zkdb1 ~]# lvs

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

lvol0 vg_zkdb1 -wi-a—– 30.00g

root vg_zkdb1 -wi-ao—- 50.00g

swap vg_zkdb1 -wi-ao—- 16.00g

[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-root

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/mapper/vg_zkdb1-root is mounted on /; on-line resizing required

old desc_blocks = 2, new_desc_blocks = 4

Performing an on-line resize of /dev/mapper/vg_zkdb1-root to 13107200 (4k) blocks.

The filesystem on /dev/mapper/vg_zkdb1-root is now 13107200 blocks long.

扩展SWAP

[root@zkdb1 ~]# lvs

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

lvol0 vg_zkdb1 -wi-a—– 30.00g

root vg_zkdb1 -wi-ao—- 50.00g

swap vg_zkdb1 -wi-ao—- 16.00g

[root@zkdb1 ~]# lvextend -L +16G /dev/mapper/vg_zkdb1-swap

Extending logical volume swap to 32.00 GiB

Logical volume swap successfully resized

[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-swap

e2fsck 1.41.12 (17-May-2010)

/dev/mapper/vg_zkdb1-swap is mounted.

e2fsck: Cannot continue, aborting.

[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-swap

resize2fs 1.41.12 (17-May-2010)

resize2fs: Bad magic number in super-block while trying to open /dev/mapper/vg_zkdb1-swap

Couldn’t find valid filesystem superblock.

[root@zkdb1 ~]# lvs

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

lvol0 vg_zkdb1 -wi-a—– 30.00g

root vg_zkdb1 -wi-ao—- 50.00g

swap vg_zkdb1 -wi-ao—- 32.00g

附:根分区变只读解决办法

1 单用户模式

输入命令修复文件系统:fsck -C -y

修复完成后输入命令重启:reboot

2 重挂载

mount -o remount,rw 分区名即可变成读写

mount -o remount,rw /

如果提示文件系统类型

mount -t ext3-o remount,rw /

在人生的道路上,谁都会遇到困难和挫折,

RHEL6.5 LVM使用解析推荐

相关文章:

你感兴趣的文章:

标签云: