因为鄙人是最后接触的linux,初识LVM概念觉得与windows平台的存储池,vmware平台的存储整合有相似概念。
Synopsis: 将机器识别到的底层磁盘设备创建为一整个存储空间(卷组),再进行划分逻辑卷、扩容、压缩等操作。
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
扫描 | pvscan | vgscan | lvscan |
创建 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
这里演示由2块物理磁盘:开启LVM,创建卷组、划分逻辑卷、扩容、压缩等操作。
两块物理磁盘 /dev/sde ,/dev/sdf
默认的磁盘没有开启LVM, 首先开启,
[root@localhost ~]# pvcreate /dev/sde /dev/sdf
Physical volume "/dev/sde" successfully created.
Physical volume "/dev/sdf" successfully created.
创建卷组:
[root@localhost ~]# vgcreate storage1 /dev/sde /dev/sdf
Volume group "storage1" successfully created
划分逻辑卷:
因为卷组创建后,最小的计算单位为4MB,所以创建的逻辑卷为4的倍数。
语法: lvcreate -n [逻辑卷名] -L [human readable 格式M、G] [卷组名]
[root@localhost ~]# lvcreate -n lvDisk0 -L 150M storage1
Rounding up size to full physical extent 152.00 MiB
Logical volume "lvDisk0" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage1/lvDisk0
LV Name lvDisk0
VG Name storage1
LV UUID wecLpy-A0B5-cwrJ-8xiQ-q4vc-fs9m-uCLgNQ
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-02-18 14:08:31 +0800
LV Status available
# open 0
LV Size 152.00 MiB
Current LE 38
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
创建好的逻辑卷会在 /dev 目录下创建一个符号链接(软链接),同时会以卷组名生成一个文件夹, 逻辑卷完整路径为 /dev/卷组名/逻辑卷名
下面进行格式化,并挂载
[root@localhost ~]# ll /dev/storage1/
total 0
lrwxrwxrwx. 1 root root 7 Feb 18 14:08 lvDisk0 -> ../dm-2
[root@localhost ~]# mkfs.ext4 /dev/storage1/lvDisk0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38912 inodes, 155648 blocks
7782 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# mkdir /tmp/lv0
[root@localhost ~]# mount /dev/storage1/lvDisk0 /tmp/lv0/
查看挂载状态,写入配置/etc/fstab
/dev/storage1/lvDisk0 /tmp/lv0 ext4 defaults 0 0
扩展、压缩逻辑卷
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.1G 14G 18% /
/dev/sdb2 3.9G 16M 3.6G 1% /tmp/app
/dev/sdb1 2.0G 3.1M 1.9G 1% /tmp/backup
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/storage1-lvDisk0 144M 1.6M 132M 2% /tmp/lv0
[root@localhost ~]# umount /dev/mapper/storage1-lvDisk0 #变更容量需要先卸载挂载点
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.1G 14G 18% /
/dev/sdb2 3.9G 16M 3.6G 1% /tmp/app
/dev/sdb1 2.0G 3.1M 1.9G 1% /tmp/backup
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 378M 0 378M 0% /run/user/0
[root@localhost ~]# lvextend /dev/storage1/lvDisk0 -L 300M
Size of logical volume storage1/lvDisk0 changed from 152.00 MiB (38 extents) to 300.00 MiB (75 extents).
Logical volume storage1/lvDisk0 successfully resized.
[root@localhost ~]# e2fsck -f /dev/storage1/lvDisk0 #硬盘自检
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage1/lvDisk0: 11/38912 files (0.0% non-contiguous), 10567/155648 blocks
[root@localhost ~]# resize2fs /dev/storage1/lvDisk0 # resize刷新一下硬盘容量
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage1/lvDisk0 to 307200 (1k) blocks.
The filesystem on /dev/storage1/lvDisk0 is now 307200 blocks long.
[root@localhost ~]# mount /dev/storage1/lvDisk0 /tmp/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.1G 14G 18% /
/dev/sdb2 3.9G 16M 3.6G 1% /tmp/app
/dev/sdb1 2.0G 3.1M 1.9G 1% /tmp/backup
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/storage1-lvDisk0 287M 2.1M 266M 1% /tmp/lv0
压缩=卸载+e2fsck -f /dev/xxx+resize2fs /dev/xxx [size例如130M]+lvreduce -L [size 130M] /dev/xxx+挂载
[root@localhost ~]# umount /dev/mapper/storage1-lvDisk0
[root@localhost ~]# e2fsck -f /dev/storage1/lvDisk0
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage1/lvDisk0: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@localhost ~]# resize2fs /dev/storage1/lvDisk0 96M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage1/lvDisk0 to 98304 (1k) blocks.
The filesystem on /dev/storage1/lvDisk0 is now 98304 blocks long.
[root@localhost ~]# lvreduce -L 96M /dev/storage1/lvDisk0
WARNING: Reducing active logical volume to 96.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage1/lvDisk0? [y/n]: y
Size of logical volume storage1/lvDisk0 changed from 300.00 MiB (75 extents) to 96.00 MiB (24 extents).
Logical volume storage1/lvDisk0 successfully resized.
[root@localhost ~]# mount /dev/storage1/lvDisk0
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.1G 14G 18% /
/dev/sdb2 3.9G 16M 3.6G 1% /tmp/app
/dev/sdb1 2.0G 3.1M 1.9G 1% /tmp/backup
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/storage1-lvDisk0 89M 1.6M 81M 2% /tmp/lv0