关于磁盘分区,参考
磁盘分区完后再想扩容或者缩容就比较麻烦了,甚至很多时候不能扩容或者缩容,这时候就要用到linux非常常用的硬盘设备资源管理技术:LVM了。
LVM,英文全称叫做 "Logical Volume Manager",翻译过来的意思叫做"逻辑卷管理器",主要解决的是磁盘动态扩容或缩容的问题。
它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM是在磁盘分区与文件系统之间增加的一层逻辑层,LVM能让下层的各个磁盘分区被文件系统看做为一个整体的大磁盘,供文件系统使用;可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便,它相比传统的分区系统可以更灵活地管理磁盘。
一、逻辑卷管理器基本概念
图中涉及到几个概念:
PV(Physical Volume):物理卷,顾名思义,它可能是一个硬盘,也可能是一个RAID磁盘阵列。
VG(Volume Group):卷组,多个物理卷(PV)组成一个卷组。
LV(Logical Volume):逻辑卷,也即是我们探讨的核心了,它基于卷组分配管理磁盘资源。
PE(Physical Extent):基本单元,LV能管理分配的最小单位,LVM分配出来的每个空间都必须是PE的整数倍。
也就是说物理卷(PV)组成了卷组(VG),逻辑卷(LV)基于卷组(VG)分配管理基本单元(PE)。
上图中的逻辑卷A跨硬盘将若干个PE合并起来,对外直接使用逻辑卷A即可,而不用关心逻辑卷A下到底有几个硬盘。
1.物理卷(PV)
PV (Physical Volume)实体滚动条
PV 是LVM最基本的物理组成部分,利用fdisk命令把实际的partition转化成8e的系统格式,然后利用指令pvcreate把partition变成能够利用的physical volume
2.卷组(VG)
VG (Volume Group)滚动条群组
VG,说的简单些就如我们使用的磁盘,是可以进行分区的,对于LVM上面的文件系统而言,VG就是一个大磁盘。文件系统时看不到LVM下面的组成部分的,它只管使用,而LVM则负责管理下面的组成储存块
3.逻辑卷(LV)
LV (Logical Volume)逻辑滚动条
LV就是VG切成的类似于分区的东西啦,我们可以用格式化,挂载使用啦,但是LV是VG切割成的,而VG又是有数量众多的PE组成,所以LV的大小取决于LV所包含的PE的数量的多少
4.物理块(PE)
PE (Physical Extend)实体延伸区块
PE是LVM最小的存储单位,一般为4MB大小,它是构成VG的基本单位,PE对于VG来说就如block对于分区来讲,它是存储数据的单元。而pe的大小并不是固定的,而是可以变化的,所以pe决定了LVM的灵活性,即能扩增,也能缩减。
二、逻辑卷管理实战
LVM部署时,需要逐个配置物理卷、卷组和逻辑卷,常用的部署命令如下所示:
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
创建 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩容 | vgextend | lvextend | |
缩容 | vgreduce | lvreduce |
有人或许会问,为啥逻辑卷管理没有扩容和缩容的命令呢?
答:逻辑卷对应着底层的硬盘或者RAID磁盘阵列,如果它能扩容或者缩容,就用不到LVM了。
以下操作基于VMware16Pro, Centos7系统。
1、物理卷和卷组创建
先给虚拟机新增加两块10G的硬盘,然后开机。可以看到sdb, sdc两块硬盘已经就绪。
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
第一步:创建物理卷,让两块硬盘支持lvm技术
格式:pvcreate device1 device2
pvcreate /dev/sdb /dev/sdc
[root@192 ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
[root@192 ~]#
第二步:创建卷组
格式:vgcreate vg_name pv1 pv2
创建卷组vg_storage, 并把两块硬盘/dev/sdb, /dev/sdc加入到vg_storage卷组中
vgcreate vg_storage /dev/sdb /dev/sdc
[root@192 ~]# vgcreate vg_storage /dev/sdb /dev/sdc
Volume group "vg_storage" successfully created
[root@192 ~]#
第三步:查看卷组状态
vgdisplay
[root@192 ~]# vgdisplay
--- Volume group ---
VG Name vg_storage
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 19.99 GiB
PE Size 4.00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GiB
VG UUID tdPWXF-cZZB-MVk7-OBdx-NLyh-KYpV-E8hC5t
[root@192 ~]#
从上述图中可以看到,卷组创建完成后,PE相关的参数就已经确定好了,大小是4MB,20G的空间一共划分出了5118个PE等待lvm划分逻辑卷使用。
2、逻辑卷创建
第一步: 创建逻辑卷
格式:lvcreate -L <lv_size> <vg_name> -n <lv_name>
lvcreate -L 指定要给的lv的大小 卷组的名称 -n 给逻辑卷命名
我们现在从vg_storage卷组中切割出来一块201M的逻辑卷设备,切割出来的逻辑卷名称是lv_test。
这里要注意,切割方式有两种:
-
按照大小切割,使用的参数是
-L
,比如-L 150M
表示的是切割出来150MB大小的逻辑卷; -
以基本单元的个数为单位,使用的参数是
-l
,每个基本单元的默认大小是4MB,比如-l 37
,就可以生成37*4MB=148MB大小的逻辑卷。
比较方便的肯定是根据大小进行切割:
lvcreate -L 201M vg_storage -n lv_test
[root@192 ~]# lvcreate -L 201M vg_storage -n lv_test
Rounding up size to full physical extent 204.00 MiB
Logical volume "lv_test" created.
[root@192 ~]#
创建是成功了,但是可以看到它提示了个信息:Rounding up size to full physical extent 204.00 MiB。这个意思就是四舍五入创建了204MB的逻辑卷设备。为什么呢,我们明明创建的是201MB大小,它擅自给改成了204MB?答案是我们创建的大小必须是PE(Physical Extent,基本单元)的整数倍,PE大小是4MB,所以就给修正成了204MB。
Linux 系统会把 LVM 中的逻辑卷设备存放在/dev 设备目录中(实际上就是个快捷方式),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。
第二步: 查看逻辑卷
lvdisplay
[root@192 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_storage/lv_test
LV Name lv_test
VG Name vg_storage
LV UUID zCr49e-wRLU-jPGE-OIMg-Fflp-nyhc-SXOTd5
LV Write Access read/write
LV Creation host, time 192.168.222.128, 2024-09-23 15:54:28 +0800
LV Status available
# open 0
LV Size 204.00 MiB
Current LE 51
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@192 ~]#
第三步: 格式化和挂载LV
a. 格式化逻辑卷
格式:mkfs.<filesystem_type> 逻辑卷路径
<filesystem_type> 文件系统有ext2、ext3、ext4、xfs等...。本文的文件系统是xfs类型。
mkfs.xfs /dev/vg_storage/lv_test
[root@192 ~]# mkfs.xfs /dev/vg_storage/lv_test
meta-data=/dev/vg_storage/lv_test isize=512 agcount=4, agsize=13056 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=52224, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 204M 0 lvm
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
b. 挂载逻辑卷
格式:mount 逻辑卷路径 目录
mount /dev/vg_storage/lv_test 目录
将逻辑卷/dev/vg_storage/lv_test 挂载到/mydata目录下
mount /dev/vg_storage/lv_test /mydata
# 未挂载之前
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 10G 4.3G 5.7G 44% /
/dev/sda1 197M 147M 50M 75% /boot
tmpfs 199M 24K 199M 1% /run/user/1000
/dev/sr0 4.4G 4.4G 0 100% /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
# 挂载
[root@192 ~]# mount /dev/vg_storage/lv_test /mydata
[root@192 ~]#
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 10G 4.3G 5.7G 44% /
/dev/sda1 197M 147M 50M 75% /boot
tmpfs 199M 24K 199M 1% /run/user/1000
/dev/sr0 4.4G 4.4G 0 100% /run/media/shuai/CentOS 7 x86_64
/dev/mapper/vg_storage-lv_test 201M 11M 191M 6% /mydata
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 204M 0 lvm /mydata
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
Note: 当然为了挂载重启后不失效,需要将挂载信息写入到/etc/fstab
文件中,此处不赘述。
3、逻辑卷扩容
使用逻辑卷最大的用处就是可以为它动态扩容:卷组由若干块硬盘组成,用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。
逻辑卷扩容的步骤:取消挂载->逻辑卷扩容->检查硬盘完整性->重新挂载->重置设备在系统中的容量
第一步: 取消挂载
格式:umount 逻辑卷路径 目录
umount /dev/vg_storage/lv_test /mydata
[root@192 ~]# umount /dev/vg_storage/lv_test /mydata
umount: /mydata:未挂载
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 204M 0 lvm
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
第二步: 逻辑卷扩容(扩展物理空间)
格式:lvextend -L <extend_size> <lv_path>
lvextend -L 扩容数量 逻辑卷路径
将逻辑卷/dev/vg_storage/lv_test的容量从204.00 MB扩容到300MB
lvextend -L 300M /dev/vg_storage/lv_test
# lvs查看逻辑卷
[root@192 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_test vg_storage -wi-a----- 204.00m
[root@192 ~]#
[root@192 ~]# lvextend -L 300M /dev/vg_storage/lv_test
Size of logical volume vg_storage/lv_test changed from 204.00 MiB (51 extents) to 300.00 MiB (75 extents).
Logical volume vg_storage/lv_test successfully resized.
[root@192 ~]#
[root@192 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_test vg_storage -wi-a----- 300.00m
[root@192 ~]#
同时,它也提示了“Size of logical volume storage/kdyzm_lv changed from 204.00 MiB (51 extents) to 300.00 MiB (75 extents).”,这个逻辑卷原来的容量是204M(51个基本单元),现在扩容到了300M(75个基本单元)。
第三步: 检查硬盘完整性
确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
应该是下面这句
[root@192 ~]# fsck -a /dev/vg_storage/lv_test
fsck,来自 util-linux 2.23.2
/sbin/fsck.xfs: XFS file system.
第四步: 重新挂载
[root@192 ~]# mount /dev/vg_storage/lv_test /mydata
第五步: 同步到文件系统(扩展文件系统)
格式: xfs_growfs [选项] 文件系统
[选项] -f:强制调整文件系统大小,即使文件系统处于脏状态.
-l:保留预留块.
-m:指定要调整的文件系统类型.
刚刚是对 LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
xfs_growfs /dev/vg_storage/lv_test
[root@192 ~]# xfs_growfs /dev/vg_storage/lv_test
meta-data=/dev/mapper/vg_storage-lv_test isize=512 agcount=4, agsize=13056 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=52224, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 52224 to 76800
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 300M 0 lvm /mydata
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 10G 4.3G 5.7G 44% /
/dev/sda1 197M 147M 50M 75% /boot
tmpfs 199M 24K 199M 1% /run/user/1000
/dev/sr0 4.4G 4.4G 0 100% /run/media/shuai/CentOS 7 x86_64
/dev/mapper/vg_storage-lv_test 297M 11M 287M 4% /mydata
需要注意的是这里显示的容量是287M,而非300M,要比我们当初设计的扩容容量小一些,这个原因是硬件厂商的制造标准是1M=1000KB,1KB=1000B;在计算机系系统中则是1M=1024KB,1KB=1024B。因此硬盘容量会有些“缩水”,300M的硬盘最终会被识别为 300MB*1000K*1000B/1024B/1024K=286.1022MB ,大概的算法就是这么算的。
4、缩小逻辑卷
缩容操作数据丢失的风险会比较大,所以Linux系统规定,为了保证数据安全,在对LVM逻辑卷进行缩容操作之前,必须先检查文件系统的完整性。完整的缩容步骤如下:
取消挂载->检查文件系统完整性(免去)->通知系统内核即将缩容->逻辑卷缩容->重新挂载
第一步: 取消挂载
umount /dev/vg_storage/lv_test /mydata
[root@192 ~]# umount /dev/vg_storage/lv_test /mydata
umount: /mydata:未挂载
第二步: 将文件系统容量缩小到100M
xfs_growfs /dev/vg_storage/lv_test 100M
[root@192 ~]# xfs_growfs /dev/vg_storage/lv_test 100M
Usage: xfs_growfs [options] mountpoint
Options:
-d grow data/metadata section
-l grow log section
-r grow realtime section
-n don't change anything, just show geometry
-i convert log from external to internal format
-t alternate location for mount table (/etc/mtab)
-x convert log from internal to external format
-D size grow data/metadata section to size blks
-L size grow/shrink log section to size blks
-R size grow realtime section to size blks
-e size set realtime extent size to size blks
-m imaxpct set inode max percent to imaxpct
-V print version information
第三步: 逻辑卷缩容
格式: lvreduce -L <reduce_size> <lv_path>
lvreduce -L 缩小数量 逻辑卷路径
通过lvreduce命令将逻辑卷的容量缩小到100M
lvreduce -L 100M /dev/vg_storage/lv_test
[root@192 ~]# lvreduce -L 100M /dev/vg_storage/lv_test
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_storage/lv_test? [y/n]: y
Size of logical volume vg_storage/lv_test changed from 300.00 MiB (75 extents) to 100.00 MiB (25 extents).
Logical volume vg_storage/lv_test successfully resized.
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 100M 0 lvm
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
第四步: 重新挂载
[root@192 ~]# mount /dev/vg_storage/lv_test /mydata
mount: /dev/mapper/vg_storage-lv_test:不能读超级块
[root@192 ~]#
mount: /dev/mapper/vg_storage-lv_test:不能读超级块。挂载出错,所以选择格式化逻辑卷,然后再挂载
[root@192 ~]# mkfs.xfs /dev/vg_storage/lv_test
mkfs.xfs: /dev/vg_storage/lv_test appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@192 ~]# mkfs.xfs -f /dev/vg_storage/lv_test
meta-data=/dev/vg_storage/lv_test isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@192 ~]#
[root@192 ~]# mount /dev/vg_storage/lv_test /mydata
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
└─vg_storage-lv_test 253:0 0 100M 0 lvm /mydata
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
[root@192 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 1d6735cc-c03e-4320-b79b-625fed572702 /boot
├─sda2 swap 91bfb5a7-4d6d-465c-b19f-9b827756d1f5 [SWAP]
└─sda3 xfs 054d83d4-4be7-4a4e-8c9c-bc3623607b57 /
sdb LVM2_member jOyJd8-y6O5-go88-ncBR-rRsB-9Kbn-Kb4fJK
└─vg_storage-lv_test xfs 7c298253-8fa6-475f-bded-6707d7ee8f9d /mydata
sdc LVM2_member 3ccX6O-LjQ2-BpSq-HPjq-l4i8-ekxT-GPSMF5
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/shuai/CentOS 7 x86_64
5、删除逻辑卷
删除逻辑卷,需要依次删除逻辑卷、卷组、物理卷设备,顺序不可颠倒。
第一步: 取消挂载
[root@192 ~]# umount /dev/vg_storage/lv_test /mydata
umount: /mydata:未挂载
删除/etc/fstab文件中记录的挂载信息,取消挂载关联。由于没有写/etc/fstab文件,所以这里不需要删除相关信息。
第二步: 删除逻辑卷
格式:lvremove 逻辑卷路径
[root@192 ~]# lvremove /dev/vg_storage/lv_test
Do you really want to remove active logical volume vg_storage/lv_test? [y/n]: y
Logical volume "lv_test" successfully removed
[root@192 ~]#
第三步: 删除卷组
格式:vgremove 卷组名
[root@192 ~]# vgremove vg_storage
Volume group "vg_storage" successfully removed
这里只需要写卷组名称,因为我们当初创建卷组的时候也是这么创建的。
第四步: 删除物理卷
格式:pvremove device1 device2
[root@192 ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
[root@192 ~]#
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 10G 0 part /
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/shuai/CentOS 7 x86_64
[root@192 ~]#
[root@192 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 1d6735cc-c03e-4320-b79b-625fed572702 /boot
├─sda2 swap 91bfb5a7-4d6d-465c-b19f-9b827756d1f5 [SWAP]
└─sda3 xfs 054d83d4-4be7-4a4e-8c9c-bc3623607b57 /
sdb
sdc
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/shuai/CentOS 7 x86_64