LINUX   LVM 硬盘管理及LVM的扩容

一、LVM简介

       LVM 是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)

                             lvm物理与(pv、vg、lv)逻辑对照

wKioL1PFONPyu0XYAADGDnF83RY509.jpg  wKiom1PFOQjSf37WAAD8vH0t0vI924.jpg


二、 LVM基本术语

       PV

       物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

       VG

       卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区(逻辑卷),LVM卷组由一个或多个物理卷组成。

      LV

       逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr)

       PV:是物理的磁盘分区

      VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG中、可以将VG理解为一个仓库或者是几个大的硬盘。

      LV:也就是从VG中划分的逻辑分区


三、 安装LVM
      首先确定系统中是否安装了lvm工具,没有安装的话要安装之后才能使用,否则没有命了功能支持,我的是centos6.5默认安装了。如果输入命令没有提示没有查询到就要安装lvm程序啦。

[root@localhost ~]# rpm -qa | grep lvm    查询是否安装lvm

mesa-private-llvm-3.3-0.3.rc3.el6.x86_64

lvm2-libs-2.02.100-8.el6.x86_64

lvm2-2.02.100-8.el6.x86_64

四、实验

    实验是划分三个3g的硬盘,演示pv、vg、lv、的创建、扩容、删除

1、添加磁盘用虚拟机添加一个20g的硬盘,此处省略

2、创建分区

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

Command (m for help): n    创建主分区

Command action

   e   extended       逻辑分区

   p   primary partition (1-4)

p

Partition number (1-4): 1    第一个分区

First cylinder (1-2610, default 1):  开始块

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +3G   划分3g容量


Command (m for help): t     修改文件类型

Selected partition 1

Hex code (type L to list codes): 8e   文件类型(Linux LVM)

Changed system type of partition 1 to 8e (Linux LVM)


Command (m for help): p     查看分区


Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xba762e8d


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         393     3156741   8e  Linux LVM

按此照做分区结果如下

                          分区结果

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         393     3156741   8e  Linux LVM

/dev/sdb2             394         786     3156772+  8e  Linux LVM

/dev/sdb3             787        1179     3156772+  8e  Linux LVM    主分区

/dev/sdb4            1180        2610    11494507+   5  Extended

/dev/sdb5            1180        1572     3156741   8e  Linux LVM    逻辑分区  

3、查看所创建分区系统是否识别到、没有识别到要 partx -a /dev/sdbx直到识别到或者重启系统。

[root@localhost ~]# cat /proc/partitions    查看创建分区

major minor  #blocks  name


   8        0   83886080 sda

   8        1     204800 sda1

   8        2   62914560 sda2

   8        3      39163 sda3

   8        4          1 sda4

   8        5      40131 sda5

   8       16   20971520 sdb

   8       17    3156741 sdb1

   8       18    3156772 sdb2

   8       19    3156772 sdb3

   8       20          1 sdb4

   8       21    3156741 sdb5

4、创建pv 

[root@localhost ~]# pvcreate /dev/sdb{2,3,5}  创建2,3,5三块磁盘的pv

  Physical volume "/dev/sdb2" successfully created

  Physical volume "/dev/sdb3" successfully created

  Physical volume "/dev/sdb5" successfully created

5、创建vg

[root@localhost ~]# vgcreate dd /dev/sdb2   创建名为dd的vg

  Volume group "dd" successfully created

[root@localhost ~]# vgcreate dd /dev/sdb3   增加 vg dd的容量

  A volume group called dd already exists.

[root@localhost ~]# vgcreate ee /dev/sdb3   创建名为ee的vg

  Volume group "ee" successfully created

[root@localhost ~]# vgextend dd /dev/sdb5   给dd这个vg增加容量

 Volume group "dd" successfully extended

root@localhost ~]# vgs       查看创建的vg

  VG   #PV #LV #SN Attr   VSize  VFree

  dd     2   0   0 wz--n-  6.02g 6.02g      创建后dd ee的大小

  ee     1   0   0 wz--n-  3.01g 3.01g

  vg0    1   4   0 wz--n- 59.99g 7.99g

6、创建lv

[root@localhost ~]# lvcreate -L 2G -n yy dd  在dd这个卷组中创建名为yy2g的lv

Logical volume "zz" created

root@localhost ~]# lvs        查看lv

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

  yy   dd   -wi-a-----  2.00g                                             

  root vg0  -wi-ao---- 20.00g                                             

  swap vg0  -wi-ao----  2.00g                                             

  usr  vg0  -wi-ao---- 10.00g                                             

  var  vg0  -wi-ao---- 20.00g          

[root@localhost ~]# lvcreate -L 2G -n zz dd   在dd这个卷组中创建名为zz2g的lv

  Logical volume "zz" created

[root@localhost ~]# lvs

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

  yy   dd   -wi-a-----  2.00g                                             

  zz   dd   -wi-a-----  2.00g                                             

  root vg0  -wi-ao---- 20.00g                                             

  swap vg0  -wi-ao----  2.00g                                             

  usr  vg0  -wi-ao---- 10.00g                                             

  var  vg0  -wi-ao---- 20.00g 

7、格式化         

[root@localhost ~]# mkfs -t ext4 /dev/dd/zz  格式化lv 

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

131072 inodes, 524288 blocks

26214 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=536870912

16 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks: 

32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            

Creating journal (16384 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

8、挂载

[root@localhost ~]# mount /dev/dd/zz /tmp/mnt      挂载lv

[root@localhost ~]# cd /tmp/mnt

[root@localhost mnt]# ls -a

.  ..  lost+found

[root@localhost mnt]# cd /

                           至此lv就可以分配给用户使用啦

四、扩展逻辑卷

1、先确定扩展的目标大小、并确保对应的卷组中有足够的空闲空间可用;

2、扩展物理边界

3、扩展逻辑边界

[root@localhost /]# lvextend -L 4G /dev/dd/zz   对zz物理边界进行在线扩容为4g

  Extending logical volume zz to 4.00 GiB

  Logical volume zz successfully resized

[root@localhost /]# resize2fs  /dev/dd/zz       对zz逻辑边界进行在线扩容为4g 

[root@localhost /]# lvs

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

  yy   dd   -wi-a-----  2.00g                                             

  zz   dd   -wi-ao----  4.00g        扩容后的显示                                        

  root vg0  -wi-ao---- 20.00g                                             

  swap vg0  -wi-ao----  2.00g                                             

  usr  vg0  -wi-ao---- 10.00g                                             

  var  vg0  -wi-ao---- 20.00g 

root@localhost ~]# mount  查看挂载信息

/dev/mapper/vg0-root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

/dev/mapper/vg0-usr on /usr type ext4 (rw)

/dev/mapper/vg0-var on /var type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

/dev/mapper/dd-zz on /tmp/mnt type ext4 (rw)    查看挂载信息

五、缩小逻辑卷


缩减很危险!!!!

缩减要离线

1、先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据;

2、先强制检测文件系统,并要执行强制检测 

3、缩减逻辑边界

4、缩减物理边界

[root@localhost ~]# umount /tmp/mnt    卸载

[root@localhost ~]# e2fsck -f /dev/dd/zz  强制检测文件系统,并要执行强制检测

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/dd/zz: 11/131072 files (0.0% non-contiguous), 25388/524288 blocks 信息显示

[root@localhost /]# resize2fs /dev/dd/zz 3G    离线缩减逻辑 lv zz为3g

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/dd/yy to 786432 (4k) blocks.

The filesystem on /dev/dd/yy is now 786432 blocks long.

[root@localhost ~]# lvreduce -L 3G /dev/dd/zz  离线缩减物理 lv zz为3g

  WARNING: Reducing active logical volume to 3.00 GiB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce zz? [y/n]: y   提示

  Reducing logical volume zz to 3.00 GiB

  Logical volume zz successfully resized

[root@localhost ~]# lvs   查看缩减后的信息

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

  yy   dd   -wi-a-----  2.00g                                             

  zz   dd   -wi-a-----  3.00g                                             

  root vg0  -wi-ao---- 20.00g                                             

  swap vg0  -wi-ao----  2.00g                                             

  usr  vg0  -wi-ao---- 10.00g                                             

  var  vg0  -wi-ao---- 20.00g 

这样就实现了lv的缩减啦

然后在挂载就可以使用啦

本文出自 “天涯海角” 博客,谢绝转载!

你可能感兴趣的:(系统工具,系统管理员,Physical)