这是坚持技术写作计划(含翻译)的第62篇,定个小目标999,每周最少2篇。
本文主要基于ubuntu讲解如何配置lvm的物理卷,逻辑卷,逻辑卷组,以及常见的扩容缩容操作。
物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physicalvolume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logicalvolume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
操作步骤
从esxi/vmware添加磁盘,新加磁盘默认用fdisk -l
看不到,要么重启,要么 echo "scsi add-single-device 32 0 2 0">/proc/scsi/scsi
后再fdisk -l
fdisk -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 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 /dev/sdc: 50 GiB, 53687091200 bytes, 104857600 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
# ...省略无用
发现有两块待用磁盘,具体操作如下
创建物理卷,逻辑卷组,逻辑卷
# 基于磁盘创建物理卷
> pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
# 查看已有物理卷
> pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name rancher-252-vg
PV Size 49.28 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12616
Free PE 4
Allocated PE 12612
PV UUID 9FdgPm-P5Ao-zK2Q-FEiA-aYOi-QBcM-PRVjIn
"/dev/sdc" is a new physical volume of "50.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 50.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID FGkHWb-y0d8-iq4D-OeFd-JAh4-Dx2K-vp46W0
# 创建逻辑卷组
> vgcreate vg_data /dev/sdc
Volume group "vg_data" successfully created
# 查看逻辑卷组
> vgdisplay
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / 50.00 GiB
VG UUID 8VgOL0-H0FU-ATx1-e9cF-NO2D-xffH-iDUqoD
--- Volume group ---
VG Name rancher-252-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.28 GiB
PE Size 4.00 MiB
Total PE 12616
Alloc PE / Size 12612 / 49.27 GiB
Free PE / Size 4 / 16.00 MiB
VG UUID MWvlQB-lTEX-Svxu-wcTA-R6EC-wniE-RKpzGH
# 创建逻辑卷并分配所有空间
> lvcreate -l 100%VG -n lv_data vg_data
Logical volume "lv_data" created.
# 格式化并挂载磁盘
# 格式化
mkfs.ext4 /dev/mapper/vg_data-lv_data
# 创建文件夹
mkdir -p /data
# 备份
cp /etc/fstab /etc/fstab.bak
# 弄成开机自动挂载
echo `blkid /dev/mapper/vg_data-lv_data | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab
# 现在挂载
mount /dev/mapper/vg_data-lv_data /data/
df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 8.8M 1.6G 1% /run
/dev/mapper/rancher--252--vg-root 48G 2.0G 44G 5% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda1 720M 58M 626M 9% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/mapper/vg_data-lv_data 50G 52M 47G 1% /data
# 发现已经挂载了一块50G的卷到了/data目录
卷扩容
向50G 的 /dev/mapper/vg_data-lv_data
逻辑卷上增加一块100G盘(/dev/sdb)扩成150G空间
# 卸载
umount /data/
# 创建物理卷
pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
# 将磁盘加到vg_data 逻辑组中
vgextend vg_data /dev/sdb
# 查询vg_data 显示为150G
vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 149.99 GiB
PE Size 4.00 MiB
Total PE 38398
Alloc PE / Size 12799 / 50.00 GiB
Free PE / Size 25599 / 100.00 GiB
VG UUID 8VgOL0-H0FU-ATx1-e9cF-NO2D-xffH-iDUqoD
# 扩容逻辑卷
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data
Size of logical volume vg_data/lv_data changed from 50.00 GiB (12799 extents) to 149.99 GiB (38398 extents).
Logical volume lv_data successfully resized.
# 查看逻辑卷容量
lvdisplay /dev/mapper/vg_data-lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 02Xd3v-05hl-ZH2v-l3Qp-BkXE-ndbB-wbhdRu
LV Write Access read/write
LV Creation host, time rancher-252, 2021-04-27 15:15:49 +0800
LV Status available
# open 1
LV Size 149.99 GiB
Current LE 38398
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2
# 重新计算逻辑卷大小
resize2fs /dev/mapper/vg_data-lv_data
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mapper/vg_data-lv_data is mounted on /data; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
The filesystem on /dev/mapper/vg_data-lv_data is now 39319552 (4k) blocks long.
df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 8.8M 1.6G 1% /run
/dev/mapper/rancher--252--vg-root 48G 2.0G 44G 5% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda1 720M 58M 626M 9% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/mapper/vg_data-lv_data 148G 60M 141G 1% /data
# 检查文件完整性
e2fsck -f /dev/mapper/vg_data-lv_data
e2fsck 1.42.13 (17-May-2015)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mapper/vg_data-lv_data: 11/9830400 files (0.0% non-contiguous), 664949/39319552 blocks
# 挂载
mount /dev/mapper/vg_data-lv_data /data/
卷缩容
一般不会缩容,除非是,实在没剩余空间了,而另外一个文件夹更需要磁盘,将A缩容省出的空间给B。
# 卸载
umount /data/
# 检查文件完整性
e2fsck -f /dev/mapper/vg_data-lv_data
e2fsck 1.42.13 (17-May-2015)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mapper/vg_data-lv_data: 11/9830400 files (0.0% non-contiguous), 664949/39319552 blocks
# 缩容到50G
resize2fs /dev/mapper/vg_data-lv_data 49G
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/mapper/vg_data-lv_data to 12845056 (4k) blocks.
The filesystem on /dev/mapper/vg_data-lv_data is now 12845056 (4k) blocks long.
# 逻辑卷缩容到49G
lvreduce -L 50G /dev/mapper/vg_data-lv_data
WARNING: Reducing active logical volume to 50.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_data? [y/n]: y
Size of logical volume vg_data/lv_data changed from 149.99 GiB (38398 extents) to 49.00 GiB (12544 extents).
Logical volume lv_data successfully resized.
# 查看逻辑卷信息
lvdisplay /dev/mapper/vg_data-lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 02Xd3v-05hl-ZH2v-l3Qp-BkXE-ndbB-wbhdRu
LV Write Access read/write
LV Creation host, time rancher-252, 2021-04-27 15:15:49 +0800
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12544
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2
# 将/dev/sdb硬盘从逻辑卷组中移除
vgreduce vg_data /dev/sdb
Removed "/dev/sdb" from volume group "vg_data"
# 查看信息
vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 12544 / 49.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID 8VgOL0-H0FU-ATx1-e9cF-NO2D-xffH-iDUqoD
# 挂载
mount /dev/mapper/vg_data-lv_data /data/
df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 8.8M 1.6G 1% /run
/dev/mapper/rancher--252--vg-root 48G 2.0G 44G 5% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda1 720M 58M 626M 9% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/mapper/vg_data-lv_data 50G 52M 47G 1% /data
招聘小广告
山东济南的小伙伴欢迎投简历啊 加入我们 , 一起搞事情。
长期招聘,Java程序员,大数据工程师,运维工程师,前端工程师。