lvm在线调整lv的容量

lvm

pv 物理卷 带有逻辑卷元数据的物理设备:分区、硬盘、镜像文件、raid设备等

vg 卷组  由多个物理卷组成,容量是所有物理卷的累计,提供容量的存储池

lv 逻辑卷 真正操作的对象,对它进行格式化、挂载


盘碟  硬盘  分区

pv \  / lv
  vg 
pv /  \ lv

 

动态调整容量、条带化、镜像、快照


例子1:创建逻辑卷

1、pv
# pvcreate /dev/sda7 /dev/sda8

# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda7       lvm2 --   1.92G 1.92G
  /dev/sda8       lvm2 --   1.92G 1.92G

# pvdisplay
2、vg
# vgcreate mysql-vg /dev/sda7
  Volume group "mysql-vg" successfully created

# vgs
  VG       #PV #LV #SN Attr   VSize VFree
  mysql-vg   1   0   0 wz--n- 1.91G 1.91G

# vgdisplay

# vgextend mysql-vg /dev/sda8  《---增加pv到vg中,进行扩容
  Volume group "mysql-vg" successfully extended

# vgs
  VG       #PV #LV #SN Attr   VSize VFree
  mysql-vg   2   0   0 wz--n- 3.83G 3.83G


3、lv
# lvcreate -n mysql-lv -L 1G mysql-vg
  Logical volume "mysql-lv" created

# lvs
  LV       VG       Attr   LSize Origin Snap%  Move Log Copy%  Convert
  mysql-lv mysql-vg -wi-a- 1.00G

# lvdisplay

# ll /dev/mysql-vg/mysql-lv 
lrwxrwxrwx 1 root root 31 11-15 16:27 /dev/mysql-vg/mysql-lv -> /dev/mapper/mysql--vg-mysql--lv

 

# mkfs.ext3 /dev/mysql-vg/mysql-lv


例子2:如何在线调整lv的容量

一、增加容量
# mount /dev/mysql-vg/mysql-lv  /mnt 
# lvextend -L 2G /dev/mysql-vg/mysql-lv  《---逻辑卷是正在挂载使用

# resize2fs /dev/mysql-vg/mysql-lv 

# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda2              39G   27G   11G  73% /
/dev/sda1             190M  169M   12M  94% /boot
tmpfs                1009M     0 1009M   0% /dev/shm
/dev/sda5              94G   61G   29G  68% /vmware
/dev/sda6              46G   23G   21G  53% /soft
/dev/mapper/mysql--vg-mysql--lv
                      2.0G   34M  1.9G   2% /mnt

二、裁减容量

前提:确保裁减后容量要不比原来设备已用的容量要大

1、取消挂载,停止使用
# umount /dev/mapper/mysql--vg-mysql--lv

2、手工检测文件系统是否有错

# fsck -f /dev/mysql-vg/mysql-lv

3、调整文件系统的容量
# resize2fs  /dev/mysql-vg/mysql-lv 1.50G

4、裁减容量
# lvreduce -L 1.50G /dev/mysql-vg/mysql-lv 
  WARNING: Reducing active logical volume to 1.51 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mysql-lv? [y/n]: y
  Reducing logical volume mysql-lv to 1.51 GB
  Logical volume mysql-lv successfully resized

# lvs
  LV       VG       Attr   LSize Origin Snap%  Move Log Copy%  Convert
  mysql-lv mysql-vg -wi-a- 1.51G 

5、再次检查文件系统
fsck -f /dev/mysql-vg/mysql-lv
mkfs.ext3 /dev/mysql-vg/mysql-lv 裁减容量需要格式化空间
mount /dev/mysql-vg/mysql-lv  /mnt 

-------------------------------------------------------------------------------
例子1:实现LVM条带化
pvcreate  /dev/sda7  /dev/sda8
# pvs
  PV         VG       Fmt  Attr PSize PFree  
  /dev/sda7  mysql-vg lvm2 a-   1.91G 936.00M
  /dev/sda8  mysql-vg lvm2 a-   1.91G   1.91G

创建:
# lvcreate -L 300M -n webroot -i 2 mysql-vg
  Using default stripesize 64.00 KB
  Rounding size (75 extents) up to stripe boundary size (76 extents)
  Logical volume "webroot" created
-i:此处写lv用到的pv的数量,不能超过所在vg的pv数量,一般设置与vg的pv个数相同
-I:条带单元大小,单位Kb
-L:lv的大小,默认为Mb,可带单位G,M,K
-l:小写L,分配给lv的LE个数,对应于VG中的PE,在上条vgdisplay的输出中可看到VG中一共有1533个PE。
-n:自定义lv的名字,默认从lvol0开始往下排。

# pvs
  PV         VG       Fmt  Attr PSize PFree  
  /dev/sda7  mysql-vg lvm2 a-   1.91G 784.00M
  /dev/sda8  mysql-vg lvm2 a-   1.91G   1.77G

 

验证
# iostat -dk sda7 sda8 2


例子2:实现lvm镜像

 

# lvcreate -L 500M -n uplv -m 1 mysql-vg
  Logical volume "uplv" created

 -m 1 把数据保存到一个原始设备,明且镜像保存到另外一个原始设备。
  至少需要三个原始设备,其中还有一个保存镜像日志


删除逻辑卷
# lvremove /dev/mysql-vg/uplv

 

例子3:实现lvm快照

 快照卷不支持镜像lv

对一个普通的lv建立快照

# lvcreate -L 100M -n mysql-lv-sp -s /dev/mysql-vg/mysql-lv 
  Logical volume "mysql-lv-sp" created


挂载,看到的数据和mysql-lv是一样
# mount /dev/mysql-vg/mysql-lv-sp  /mnt/mysql-lv-sp/


 根据快照原理,一般用于快速备份。


例子:使用快照卷实现mysql的"热"备份

前提:mysql数据文件保存在逻辑卷


锁表
 mysql> flush tables with read lock;
创建快照
解锁
 mysql> unlock tables;

挂载快照卷,拷贝数据到备份目录


# lvcreate -L 100M -n mysql-lv-sp -s /dev/mysql-vg/mysql-lv 
  Logical volume "mysql-lv-sp" created

==========================================

 

你可能感兴趣的:(lvm在线调整lv的容量)