LVM 管理

freeopen [符文秘录] #lvm #linux

一、关系

物理卷 physical volumes(PV)

物理卷处于逻辑卷管理器中的底层,任何的逻辑卷和卷组都必需依靠物理卷来建立;物理卷可以是一个完整的硬盘,也可以是硬盘中的一个分区,并有一个名字 ( 如 hdisk0)。

逻辑卷 logical volumes (LV)

逻辑卷建立在卷组之上,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意在卷组的空闲空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组。LV 是位于 PV 上的信息的组合,在 LV 上的数据可以连续或者不连续地出现在 PV。

卷组 logical volume group(VG)

卷组是建立在物理卷之上,一个卷组中可以包含一个物理卷组或者多个物理卷。所有的物理卷属于一个称作 rootvg 的卷组。

pv (物理卷) 对应 硬盘的分区 或 整个硬盘; vg (卷组) 由一到多个pv组成,相当于等待分区的硬盘抽象层,这样就能跨越多块硬盘; lv (逻辑卷)在vg上的分区;

pe(Physical Extents) lvm中的最小存储单元,默认4M, 创建vg时可以改变pe大小,vgcreate -s 8M … le (logical extents) 逻辑卷的最小存储单元

二、查看

* :指代 pv vg lv

*s, *scan, *display , 显示由简到繁

df -Th 查看挂载、容量等

三、新建所有

新盘创建lvm分区

(注, parted 可以做2T以上的分区, fdisk 则仅2T内)

parted /dev/sdc
mklabel gpt
mkpart  part_name filesye_type(ext4) 0G  500G(whole disk: -0G)
set 1 lvm on
quit

partprobe # 重读系统中全部设备的分区表信息, 立即生效
  1. 修改分区类型为lvm
  2. pvcreate /dev/sda1 (or pvcreate /dev/sdb{1,2,3})
  3. vgcreate vg_name /dev/sda1 /dev/sda2 (or vgcreate vg1 /dev/sdb{5,6,7,8})
  4. lvcreate -L 50G -n lv_name vg_name (-l pe_num)
  5. mkfs.ext4 /dev/vg_name/lv_name
  6. mount /dev/vg_name/lv_name /mnt ( or vim /etc/fstab)

lvcreate -l 100%VG [100%FREE]

四、lv 增减容量

lv 扩容

如果vg不够,需要为vg增加pv,否则直接从第3步开始 可以在线进行。

  1. 为新分区创建物理卷
  2. 加入卷组 vgextend vg_name /dev/sdb5
  3. lvresize -l +100 /dev/vg_name/lv_name (推荐用pe,更准确)
  4. resize2fs /dev/vg_name/lv_name (调整文件系统大小,缺少这一步,df查看容量未变)

lv 缩容

注意,必须离线,即先卸载lv

  1. umount lv的挂载点
  2. 回缩文件系统大小 resize2fs /dev/vg_name/lv_name 5000M (用m更准确,因为PE、LE的单位为M)
  3. 缩小lv大小 lvresize -l -1000 /dev/vg_name/lv_name
  4. 挂载并验证 mount … and df -Th

五、从vg移除pv

移除pv前,被移除pv不能划分lv

vgreduce vg_name /dev/sdb1

但:vg 还剩最后一个 pv时,vgreduce 不能成功, 如果目的是要移除硬盘,且该硬盘的vg仅有一个pv, 必须先移除vg, 才能移除pv, 用命令:

vgremove vg_name

六、移除lv

lvremove /dev/vg1/lv1

七、移除硬盘

  1. 从vg移除pv
  2. 移除pv pvremove /dev/sdb1
  3. 删除分区
  4. 重启

八、快照卷

快照原理

LVM中snapshot通过“写时复制”(copy on write) 来实现,即当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data),并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作时,snapshot跟踪原始卷块的改变,这时原始卷上被改变之前的数据先拷贝到snapshot里,然后再在原始卷上写入数据。

snapshot的大小并不需要和原始卷一样大,其大小仅仅只需要考虑两个方面:从shapshot创建到释放这段时间内,估计块的改变量有多大;数据更新的频率。一旦 snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot立刻被释放,从而无法使用,从而导致这个snapshot无效。

用处:可以用于大大减少备份期间服务/数据库关闭的时间,因为快照通常会在几分之一秒内创建。 创建快照后,您可以在服务和数据库正常运行时备份快照。

  1. lvcreate -l pe_num -s -n lv_snap /dev/vg1/lv1 [-p rw] (-p 选项为权限)
  2. 挂载快照
  3. 备份快照, 用dd复制快照内容
  4. 删除快照

九、检查修复损坏的逻辑卷

(特别注意,这是最后的方法,先用修复lvm的命令进行修复)

e2fsck -f -y /dev/mapper/VolGroup-lv_home

十、消除VG警告

WARNING: PV /dev/sda1 in VG ubuntu-vg is using an old PV header, modify the VG to update.

vgck --updatemetadata ubuntu-vg

评论区🔗

你可以在这里快速开始评论,如果 name 填写为 email 时,当有回复时,会收到邮件提醒( 注:邮件提醒功能还在制作中 ).


回应区🔗

你有对这篇文章写回应吗? 你可以在这里提交你的文章网址或者推特链接(文章或推特内容需要包含这篇文章的地址,点击这里了解 Webmention):

回应内容会被 webmention.io 机器人收集,另一位机器人会在24小时内把回应展示到这里, 也欢迎通过 邮件 Twitter DM 和我讨论。

Back to top