半瓶内容

 results 1 - 1 of about 1 for Linux下如何使用LVM进行存储管理. (0.301 seconds) 

Linux下如何使用LVM进行存储管理

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。它将多个磁盘分区连接为一个整块的卷组(volume group),可以在卷组上创建逻辑卷(logical volumes),并进一步在逻辑卷组上创建文件系统。

要理解LVM,首先要了解以下专有称呼(所谓的术语):

物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。
卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应,不过在镜像的环境中,一个LE可对应2个或以上的PE。

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

要创建一个LVM系统,一般通过以下步骤进行:

1、 创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。具体操作步骤可参阅《Linux下磁盘分区命令fdisk的使用方法》

2、创建物理卷(PV)

将某个分区创建为PV:

[root@localhost ~]# pvcreate /dev/sda6
Physical volume "/dev/sda6" successfully created

如要将整个磁盘创建为物理卷,则命令为:

# pvcreate /dev/hdb

查看PV:

[root@erpdevdb ~]# lvm pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rootvg lvm2 a- 20.00G 0
/dev/sda3 rootvg lvm2 a- 20.00G 0
/dev/sda5 rootvg lvm2 a- 20.00G 192.00M
/dev/sda6 oraclevg lvm2 a- 95.75G 0
/dev/sda7 oraclevg lvm2 a- 95.25G 21.00G

3、创建卷组(VG)

创建VG命令:

[root@localhost ~]# vgcreate oraclevg /dev/sda6
Volume group "oraclevg" successfully created

查看VG:

[root@erpdevdb /]# vgs
VG #PV #LV #SN Attr VSize VFree
oraclevg 2 2 0 wz--n- 191.00G 21.00G
rootvg 3 2 0 wz--n- 60.00G 192.00M
[root@localhost ~]# vgdisplay oraclevg
--- Volume group ---
VG Name oraclevg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 95.77 GB
PE Size 4.00 MB
Total PE 24517
Alloc PE / Size 0 / 0
Free PE / Size 24517 / 95.77 GB
VG UUID YbrSY0-6gF1-PGuj-P7ps-RXce-C1wn-gZiNVI

删除VG:

[root@localhost ~]# vgremove oraclevg
Volume group "oraclevg" successfully removed

创建时指定VG的PE为128M,刚才默认的为4M,一般来说太小了:

[root@localhost ~]# vgcreate oraclevg /dev/sda6 -s 128
Volume group "oraclevg" successfully created

4、激活卷组

[root@localhost ~]# vgchange -a y oraclevg
0 logical volume(s) in volume group "oraclevg" now active

5、从卷组中增加或删除物理卷

扩展卷组,增加PV:

[root@erpdevdb /]# vgextend oraclevg /dev/sda7
Volume group "oraclevg" successfully extended

从VG中删除PV:

# vgreduce oraclevg /dev/sda7

6、创建逻辑卷(LV)

在oraclevg上创建逻辑卷LV,-L后边参数的单位默认是M,也可以写单位,如-L 3T,-n后是LV的名称:

[root@localhost ~]# lvcreate -L 2048 -n oraclesoft oraclevg
Logical volume "oraclesoft" created

扩展LV:

[root@erpdevdb /]# lvextend -L +120G /dev/oraclevg/oradata
Extending logical volume oradata to 160.00 GB
Logical volume oradata successfully resized

查看LV:

[root@erpdevdb /]# lvdisplay

扩展ext3文件系统,如果已经mount,要先卸载:(也可使用ext2online命令,该命令是 RHELv4 暂时提供 ext2fs 可以 online resize 的工具,RHEL5 回归使用原本的 resize2fs 命令,而且已经支持 online resize 的功能。早期版本可用e2fsadm代替lvextend直接对LV和FS扩容。)以下测试不能在线扩展,注意不要对mount的文件系统执行e2fsck:

[root@sherpdatabak /]# umount /bkfiles
[root@sherpdatabak /]# e2fsck -f /dev/bakvg/baklv
[root@sherpdatabak /]# resize2fs /dev/bakvg/baklv
[root@sherpdatabak /]# mount /dev/bakvg/baklv /bkfiles

删除LV,如果已经mount,要先卸载:

# umount /dev/oraclevg/oraclesoft
[root@localhost orasoft]# lvremove /dev/oraclevg/oraclesoft
Do you really want to remove active logical volume "oraclesoft"? [y/n]: y
Logical volume "oraclesoft" successfully removed

7、建立文件系统

用ext3格式化逻辑卷:

[root@localhost orasoft]# mkfs.ext3 /dev/oraclevg/oracle
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

建立挂载点并mount

[root@localhost orasoft]# mkdir /u02
[root@localhost orasoft]# mount /dev/oraclevg/oracle /u02

8、加入到/etc/fstab文件,否则mount在重启后会失效:

[root@erpdevdb ~]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/rootvg/rootlv / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/rootvg/swaplv swap swap defaults 0 0
/dev/oraclevg/oracle /test ext3 defaults 0 0
/dev/oraclevg/oradata /u02 ext3 defaults 0 0
......


Leave a Comment