小蚂蚁 发表于 2021-10-3 14:36:00

linux下磁盘管理之利器 lvm使用介绍

LVM(Logical Volume Manager)是一个应用于Linux的内核的逻辑卷管理器,是Linux环境下对磁盘进行分区管理的一种机制
一、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/sda1
2、卷组VG
    2.1 创建、查看、删除vg
      vgcreate   创建vg               例:vgcreate myvg/dev/sda{m,n}
      vgs      查看vg信息         例:直接在命令行里输入vgs
      vgdisplay查看vg详细信息       例:vgdisplay myvg
      vgremove   将vg删除             例:vgremove myvg
   2.2 扩展vg
首先准备好一个PV;
   然后使用vgextend命令即可完成扩展;
   格式: vgextend VG_NAME /PATH/TO/PV
         vgextend myvg /dev/sdb2 扩展myvg卷组,把/dev/sda2加进去
   2.3 缩减vg
      1)确定要移除的PV;
2)将此PV上的数据转移至其它PV;
pvmove /path/to/pv
3)从卷组中将此PV移除;
    格式:vgreduce VG_NAME /PATH/TO/PV
vgreduce myvg /dev/sdb2 缩减myvg卷组,把/dev/sda2去掉
3逻辑卷LV
    3.1 创建、查看、删除lv
      lvcreate   创建lv               例:lvcreate lv1 /dev/myvg
      lvs      查看lv信息         例:直接在命令行里输入lvs
      lvdisplay查看lv详细信息       例:vgdisplay lv1
      lvremove   将lv 移除            例:lvremove/dev/myvg/lv1
   3.2扩展lv
确定扩展多大
确定当前逻辑卷所在的卷组有足够的空闲空间;
扩展:
1、物理边界
lvextend -L [+]SIZE /path/to/lv
2、逻辑边界
resize2fs /path/to/device
3.3缩减lv
确定缩减的大小,但前提是至少能容纳原有的所有数据。
缩减:
1)卸载并强行检测文件系统;
e2fsck -f
2)逻辑边界
resize2fs /path/to/device SIZE
3)物理边界
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、创建一个分区
代码如下:



# fdisk -l //查看分区的情况

# 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 //保存

# partprobe /dev/sda //是系统识别分区(代替重启)

# mkfs.ext3 /dev/sda5 //格式化新添加的分区2、PV的创建
代码如下:



# pvcreate /dev/sda5 //创建pv

Writing physical volume data to disk "/dev/sda5"

Physical volume "/dev/sda5" successfully created

# pvs //查看当前pv的信息

PV VG Fmt Attr PSize PFree

/dev/sda5 lvm2 a-- 1.87G 1.87G 3、VG的创建
代码如下:



# vgcreate vg0 /dev/sda5 //vg0为当前vg的名

Volume group "vg0" successfully created

# vgs //查看vg的信息

VG #PV #LV #SN Attr VSize VFree

vg0 1 0 0 wz--n- 1.87G 1.87G4、lv的创建
代码如下:



# lvcreate -L 500M -n lv01 vg0

Logical volume "lv01" created

# lvs //查看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

# mkfs.ext3 /dev/vg0/lv01 //格式化 lvm的使用
5、lv的增大
代码如下:



# lvextend -L +300M /dev/vg0/lv01 //(原来lv大小500M ,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MB

Logical volume lv01 successfully resized

# resize2fs /dev/vg0/lv01 //拉伸文件系统

# lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

lv01 vg0 -wi-ao 800.00M //大小变成了800M6、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 //回缩分区到 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

# 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的系统快照
1、挂载lvm
代码如下:



# mount /dev/vg0/lv01 /mnt/lv01

# cd /mnt/lv01

# touch {a,b,c}{a,b,c}

# ls

aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable 2、为lvm创建快照
代码如下:



# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01

Logical volume "lv-backup" created 3、挂载快照
代码如下:



# mkdir /mnt/lv-backup

# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/ 4、备份快照
代码如下:



# 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、删除快照
代码如下:



# umount /mnt/lv-backup/

# lvremove /dev/vg0/lv-backup

Do you really want to remove active logical volume lv-backup? : y

Logical volume "lv-backup" successfully removed 6、清空/dev/vg0/lv01下得内容
代码如下:



# umount /mnt/lv01

# mkfs.ext3 /dev/vg0/lv01

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux 7、lvm的关闭
代码如下:



# umount /mnt/lv01

# lvremove /dev/vg0/lv01 //删除lv

Do you really want to remove active logical volume lv01? : y

Logical volume "lv01" successfully removed

# vgchange -a n vg0 //使vg0不具有active标志

0 logical volume(s) in volume group "vg0" now active

# vgremove vg0 //删除vg

Volume group "vg0" successfully removed

# pvremove /dev/sda5 //删除pv

Labels on physical volume "/dev/sda5" successfully wiped
http://www.zzvips.com/article/34241.html
页: [1]
查看完整版本: linux下磁盘管理之利器 lvm使用介绍