一,基本介绍
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.创建一个分区
[[email protected] ~]# fdisk -l // 查看分区的情况
[[email protected] ~]# 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 // 保存
[[email protected] ~]# partprobe /dev/sda // 是系统识别分区(代替重启)
[[email protected] ~]# mkfs.ext3 /dev/sda5 // 格式化新添加的分区
2.PV的创建
[[email protected] ~]# pvcreate /dev/sda5 // 创建pv
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[[email protected] ~]# pvs 或pvdisplay // 查看当前pv的信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a-- 1.87G 1.87G
3.VG的创建
[[email protected] ~]# vgcreate vg0 /dev/sda5 //vg0 为当前vg的名
Volume group "vg0" successfully created
[[email protected] ~]# 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 名字 隶属哪一个巻组
[[email protected] ~]# lvcreate -L 500M -n lv01 vg0
Logical volume "lv01" created
[[email protected] ~]# 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
[[email protected] ~]# 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的增大
[[email protected] ~]# lvextend -L +300M /dev/vg0/lv01 //( 原来lv 大小500M ,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[[email protected] ~]# resize2fs /dev/vg0/lv01 //拉伸文件系统
[[email protected] ~]# 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
[[email protected] ~] # mount /dev/vg0/lv01 /mnt/lv01
[[email protected] ~]# cd /mnt/lv01
[[email protected] lv01]# touch {a,b,c}{a,b,c}
[[email protected] lv01]# ls
aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable
2.为lvm创建快照
[[email protected] lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01
Logical volume "lv-backup" created
3.挂载快照
[[email protected] lv01]# mkdir /mnt/lv-backup
[[email protected] mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/
4.备份快照
[[email protected] 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.删除快照
[[email protected] tmp]# umount /mnt/lv-backup/
[[email protected] 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下得内容
[[email protected] tmp]# umount /mnt/lv01
[[email protected] tmp]# mkfs.ext3 /dev/vg0/lv01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
7.恢复数据
[[email protected] tmp]# mount /dev/vg0/lv01 /mnt/lv01
[[email protected] tmp]# cd /mnt/lv01
[[email protected] lv01]# ls
lost+found
[[email protected] lv01]# restore -rf /tmp/lv-backup.dump //恢复
restore: ./lost+found: File exists
[[email protected] lv01]# ls //由于之前都删除了,所以这些都是改变的部分
aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable
六, lvm的关闭 (删除)
[[email protected] ~]# umount /mnt/lv01
[[email protected] ~]# lvremove /dev/vg0/lv01 // 删除lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
[[email protected] ~]# vgchange -a n vg0 //使 vg0不具有 active标志
0 logical volume(s) in volume group "vg0" now active
[[email protected] ~]# vgremove vg0 // 删除vg
Volume group "vg0" successfully removed
[[email protected] ~]# pvremove /dev/sda5 // 删除pv
Labels on physical volume "/dev/sda5" successfully wiped