红联Linux门户
Linux帮助

lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录

发布时间:2016-06-12 11:01:31来源:linux网站作者:散尽浮华

一,基本介绍

Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,lvm是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux环境下对磁盘分区进行管理的一种机制, LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM基本术语:
1. 物理存储介质:这里指系统的存储设备:硬盘,如: /dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
2. 物理卷physical volume (PV )
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如 RAID),是 LVM的基本存储逻辑块
3. 卷组Volume Group (VG )
LVM卷组由一个或多个物理卷组成,但是更确切的说,它包含由这些物理卷提供的许多PE。
4. 逻辑卷logical volume (LV )
这里是我们存储信息的地方,在逻辑卷之上可以建立文件系统 (比如/home或者 /usr等)。
5. PE  (physical extent )
每一个物理卷被划分为称为 PE的基本单元,具有唯一编号的 PE是可以被 LVM寻址的最小单元。 PE的大小是可配置的,默认为 4MB。


二,具体操作

1.创建一个分区
[root@stau11 ~]# fdisk -l             // 查看分区的情况
[root@stau11 ~]# 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     // 将新添加的分区标注成 lvm
Command (m for help): p              // 查看分区表
/dev/sda5            2756        2999     1959898+  8e  Linux LVM
Command (m for help): w            // 保存
[root@localhost ~]# partprobe /dev/sda      // 是系统识别分区(代替重启)
[root@localhost ~]# mkfs.ext3 /dev/sda5    // 格式化新添加的分区

2.PV的创建
[root@localhost ~]# pvcreate /dev/sda5            // 创建pv
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[root@localhost ~]# pvs  或pvdisplay         // 查看当前pv的信息
PV         VG   Fmt  Attr PSize PFree
/dev/sda5       lvm2 a--  1.87G 1.87G

3.VG的创建
[root@localhost ~]# vgcreate vg0 /dev/sda5    //vg0 为当前vg的名
Volume group "vg0" successfully created
[root@localhost ~]# vgs 或vgdispaly           // 查看vg 的信息
VG   #PV #LV #SN Attr   VSize VFree
vg0    1   0   0 wz--n- 1.87G 1.87G

4.lvm的创建
#lvcreate  -L 大小 -n  名字 隶属哪一个巻组
#lvcreate  -l   PE 个数  -n  名字 隶属哪一个巻组
[root@localhost ~]# lvcreate -L 500M -n lv01 vg0
Logical volume "lv01" created

[root@localhost ~]# lvs 或lvdispaly           // 查看lv 的信息
LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
lv01 vg0  -wi-a- 500.00M                                     
You have mail in /var/spool/mail/root
[root@localhost ~]# mkfs.ext3 /dev/vg0/lv01      //格式化
5. lvm的使用
# mkdir /mnt/lv01        建立挂在目录
#  mount /dev/vg0/lv01 /mnt/lv01         将制作的lvm挂载起来
#  df -h
# touch /mnt/lv01/lv.file
#ls /mnt/lv01


三,lvm的增大

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


四,lvm的减小

# 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      //回缩分区到 500M
WARNING: Reducing active logical volume to 500.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y 
# lvs
LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%   Convert
lv01 vg0  -wi-a- 500.00M          //此时已变成500M大小
# mount  /dev/vg0/lv01   /mnt/lv01     //重新挂载分区
# df -h      //查看
# ls /mnt/lv01    //查看文件


五,lvm的系统快照

原理:系统快照(snapshot)是 lvm的另外一种重要的功能,快照就是将当时的数据记录下来,就好像照相记录一样,以后数据有任何改动,原数据会被移动到快照区,没有被改变的区域则由快照区与文件系统共享。
由于快照区和原本的 LV共享很多 PE,所以快照区与被快照的区域必须在同一个 VG上
操作:
以上面创建的 lv01为例

1.挂载lvm
[root@localhost ~] # mount /dev/vg0/lv01 /mnt/lv01   
[root@localhost ~]# cd /mnt/lv01
[root@localhost lv01]# touch {a,b,c}{a,b,c}
[root@localhost lv01]# ls
aa  ab  ac  ba  bb  bc  ca  cb  cc   lost+found  lv.file  restoresymtable

2.为lvm创建快照
[root@localhost lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01
Logical volume "lv-backup" created

3.挂载快照
[root@localhost lv01]# mkdir /mnt/lv-backup
[root@localhost mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/

4.备份快照
[root@localhost tmp]# dump -0u -f /tmp/lv-backup.dump /mnt/lv-backup/       //备份
DUMP: Date of this level 0 dump: Sun Nov 11 14:53:31 2012
DUMP: Dumping /dev/mapper/vg0-lv--backup (/mnt/lv-backup) to /tmp/lv-backup.dump

5.删除快照
[root@localhost tmp]# umount /mnt/lv-backup/
[root@localhost tmp]# lvremove /dev/vg0/lv-backup
Do you really want to remove active logical volume lv-backup? [y/n]: y
Logical volume "lv-backup" successfully removed

6.清空/dev/vg0/lv01下得内容
[root@localhost tmp]# umount /mnt/lv01
[root@localhost tmp]# mkfs.ext3 /dev/vg0/lv01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux

7.恢复数据
[root@localhost tmp]# mount /dev/vg0/lv01 /mnt/lv01
[root@localhost tmp]# cd /mnt/lv01
[root@localhost lv01]# ls
lost+found
[root@localhost lv01]# restore -rf /tmp/lv-backup.dump   //恢复
restore: ./lost+found: File exists
[root@localhost lv01]# ls  //由于之前都删除了,所以这些都是改变的部分
aa  ab  ac  ba  bb  bc  ca  cb  cc  lost+found  lv.file  restoresymtable


六,lvm的关闭 (删除)
[root@localhost ~]# umount /mnt/lv01
[root@localhost ~]# lvremove /dev/vg0/lv01  // 删除lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@localhost ~]# vgchange -a n vg0      //使 vg0不具有 active标志
0 logical volume(s) in volume group "vg0" now active
[root@localhost ~]# vgremove vg0       // 删除vg
Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/sda5     // 删除pv
Labels on physical volume "/dev/sda5" successfully wiped


本文永久更新地址:http://www.linuxdiyf.com/linux/21452.html