linux-create-lvm-partition
文章目录
TL;dr
cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
exp
## 创建磁盘
qemu-img create -f qcow2 disk000.qcow2 200G
## 挂载磁盘
virsh attach-disk \
--domain demo-server \
--source /data/images/disk000.qcow2 \
--target vdb \
--targetbus virtio \
--driver qemu \
--subdriver qcow2 \
--cache none \
--persistent
## 反挂载磁盘
virsh detach-disk \
--domain demo-server /data/images/disk000.qcow2 \
--persistent
## 启动虚机
virsh start demo-server
yum install lvm2
ls /dev/vd*
/dev/vda /dev/vda1 /dev/vda2 /dev/vdb
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
fdisk /dev/vdb
# (echo n; echo p; echo 1; echo ; echo ; echo w) | fdisk /dev/vdb
fdisk -l /dev/vdb
Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa07d338c
Device Boot Start End Blocks Id System
/dev/vdb1 2048 419430399 209714176 83 Linux
fdisk /dev/vdb
t
8e
w
# 或者直接执行这个命令
(echo t; echo 8e; echo w) | fdisk /dev/vdb
pvcreate /dev/vdb1
# pvdisplay
vgcreate vg1 /dev/vdb1
# vgdisplay
lvcreate --size 60G --name lv1 vg1
lvcreate --size 60G --name lv2 vg1
lvcreate --size 70G --name lv3 vg1
# lvdisplay
ls -l /dev/vg1
total 0
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv1 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv2 -> ../dm-3
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv3 -> ../dm-4
lsblk -l /dev/vdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 252:16 0 200G 0 disk
vdb1 252:17 0 200G 0 part
vg1-lv3 253:4 0 70G 0 lvm
vg1-lv1 253:2 0 60G 0 lvm
vg1-lv2 253:3 0 60G 0 lvm
mkfs.xfs /dev/vg1/lv1
mkfs.xfs /dev/vg1/lv2
mkfs.xfs /dev/vg1/lv3
echo "/dev/vg1/lv1 /var/lib/docker/ xfs defaults 0 0" >> /etc/fstab
echo "/dev/vg1/lv2 /var/lib/containerd/ xfs defaults 0 0" >> /etc/fstab
echo "/dev/vg1/lv3 /var/lib/kubelet xfs defaults 0 0" >> /etc/fstab
[root@localhost lib]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 2004520 0 2004520 0% /dev
tmpfs 2017796 0 2017796 0% /dev/shm
tmpfs 2017796 8732 2009064 1% /run
tmpfs 2017796 0 2017796 0% /sys/fs/cgroup
/dev/mapper/centos-root 49250820 17657692 31593128 36% /
/dev/vda1 1038336 216460 821876 21% /boot
/dev/mapper/vg1-lv1 62883840 33220 62850620 1% /var/lib/docker
/dev/mapper/vg1-lv2 62883840 33112 62850728 1% /var/lib/containerd
/dev/mapper/vg1-lv3 73364480 32992 73331488 1% /var/lib/kubelet
tmpfs 403560 0 403560 0% /run/user/1000
[root@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 252:16 0 200G 0 disk
└─vdb1 252:17 0 200G 0 part
├─vg1-lv3 253:4 0 70G 0 lvm /var/lib/kubelet
├─vg1-lv1 253:2 0 60G 0 lvm /var/lib/docker
└─vg1-lv2 253:3 0 60G 0 lvm /var/lib/containerd
vda 252:0 0 50G 0 disk
├─vda2 252:2 0 49G 0 part
│ ├─centos-swap 253:1 0 2G 0 lvm [SWAP]
│ └─centos-root 253:0 0 47G 0 lvm /
└─vda1 252:1 0 1G 0 part /boot
pvscan
lvscan
lvchange -ay /dev/vg1/lv1
[root@localhost ~]# lvscan
ACTIVE '/dev/vg1/lv1' [60.00 GiB] inherit
inactive '/dev/vg1/lv2' [60.00 GiB] inherit
inactive '/dev/vg1/lv3' [70.00 GiB] inherit
# 卸下挂载中的Vol01逻辑卷
umount /dev/VolGroup0/Vol01
# 检查文件系统的完整性
e2fsck -f /dev/VolGroup0/Vol01
# 将文件系统减小1G
resize2fs /dev/VolGroup0/Vol01 1G
# 关闭逻辑卷
lvchange -an /dev/VolGroup0/Vol01
# 减小Vol01逻辑卷1G的空间
lvreduce -L -1G /dev/VolGroup0/Vol01
# 打开逻辑卷
lvchange -ay /dev/VolGroup0/Vol01
# 如果不做lvchange操作而直接做减小逻辑卷,可能会导致数据寸坏
# 查看Vol01的大小已减少1G为
lvs
# 缩小逻辑卷组
# 将hda5中的数据传到hda6中
pvmove /dev/hda5 /dev/hda6
# 若VG由hda5 和hda6组成,这里去掉hda5就缩小了VG
vgreduce VolGroup0 /dev/hda5
# 将hda5从物理卷中移除
pvremove /dev/hda5
# 删除逻辑卷:
# 卸下正在使用的逻辑卷
mount /dev/VolGroup0/Vol01
# 关闭逻辑卷
lvchange -an /dev/VolGroup0/Vol01
# 删除逻辑卷Vol01
lvremove /dev/VolGroup0/Vol01
lvs
# 删除卷组:
vgchange -an /dev/VolGroup0
vgremove VolGroup0
# PV:物理卷
# VG:卷组(物理层面上一个VG由一个或多个PV组成)
# LV:逻辑卷(逻辑层面上一个VG由一个或多个LV组成)
# 建立逻辑卷,选定hda5来做逻辑,首先要确认hda5处于umount状态
# 查看挂载状态 hda5在mount状态
df -h
# 卸下hda5
umount /dev/hda5
# 将hda5创建为物理卷
pvcreate /dev/hda5
# 查看当前所有的物理卷,确认有hda5
pvscan
# 创建卷组VolGroup0 ,将hda5添加到卷组中
vgcreate VolGroup0 /dev/hda5
# 查看当前所有的卷组,确认有VolGroup0
vgscan
# 创建一个5G的逻辑卷Vol01 ,指定卷组为VolGroup0
lvcreate -L 5G -n Vol01 VolGroup0
# 查看当前所有的逻辑卷,确认有Vol01
lvscan
# 格式化新建的逻辑卷Vol01
mkfs.ext3 /dev/VolGroup0/Vol01
# 创建一个目录
mkdir /test
# 将逻辑卷Vol01挂载到test目录下
mount /dev/VolGroup0/Vol01 /test
########################################################
# 扩展逻辑卷:VG的空间足够大,只扩展LV
########################################################
# 给逻辑卷Vol01加2G的空间
lvextend -L +2G /dev/VolGroup0/Vol01
# 重置Vol01的大小
resize2fs /dev/VolGroup0/Vol01
lvscan
reboot
df -h
########################################################
# 扩展逻辑卷:VG的空间不足,扩展VG
########################################################
# 扩展VG的前提是你的硬盘还有剩余未分配空间
# 新建一个5G的扩展分区 分区号是6
fdisk /dev/hda n -> e -> 6 -> +5G -> w
# 格式化新建的hda6
mkfs.ext3 /dev/hda6
fdisk -l
# 将hda6创建为物理卷
pvcreate /dev/hda6
pvscan
# 将hda6加入到VolGroup0卷组中
vgextend VolGroup0 /dev/hda6
vgs
# 查看磁盘uuid
ls -l /dev/disk/by-uuid
blkid -s UUID /dev/sda1
tune2fs -l /dev/sda1 |grep 'UUID'
dumpe2fs /dev/sda1 |grep 'UUID'
命令 | 命令解释 |
---|---|
lvchange | 修改指定LV的一些属性,包括是否是激活状态、是否只读…… |
lvconvert | 转换指定LV的属性,从线性转化为镜像或者快照 |
lvcreate | 创建LV |
lvs | 简略地查看系统内的LV情况 |
lvdisplay | 详细地查看系统内的LV情况 |
lvextend | 扩展指定LV的容量大小 |
lvm | 管理LVM的一个shell工具 |
lvmconf | LVM配置修改器 |
lvmconfig | 查看LVM配置的工具 |
lvmdiskscan | 扫描所有LVM2可见的设备 |
lvmdump | 创建LVM的dump文件,用于诊断 |
lvmetad | 缓存LVM元数据的守护程序 |
lvmpolld | LVM操作命令的轮询守护程序 |
lvreduce | 缩容指定的LV |
lvremove | 删除指定的LV |
lvrename | 重命名指定的LV |
lvresize | 调整指定LV的大小,即可以扩容也可以缩容 |
lvscan | 扫描系统的LV |
ref
上次更新 2020-01-31
原始文档 查看本文 Markdown 版本 »