一、物理卷和逻辑卷
1.物理卷和逻辑卷的区别
逻辑卷(Logical Volume)和物理卷(Physical Volume)是Linux系统中LVM(Logical Volume Manager,逻辑卷管理器)概念中的两个重要组成部分。
物理卷是由物理磁盘或分区组成的存储设备。在LVM中,物理卷被组合成一个或多个卷组(Volume Group),以提供更大的存储池。
逻辑卷则是由物理卷划分出来的一部分空间,类似于传统的分区概念。在LVM中,逻辑卷可以跨越多个物理卷扩展,从而允许您更灵活地管理和分配存储空间。
具体来说,LVM的工作流程如下:
- 将一个或多个物理卷划分为一个或多个卷组。
- 在卷组上创建一个或多个逻辑卷。
- 将文件系统格式化为逻辑卷上,然后将其挂载到操作系统上。
2.在Linux系统中查看所有物理卷的信息
命令:pvdisplay
将显示系统上所有物理卷的信息,包括它们的名称、UUID、总大小等。如果物理卷已经被分配给卷组,则还会显示所属的卷组名称。如下图所示:
在LVM中,物理卷是由物理磁盘或分区组成的。上图中,/dev/vda2 是一个物理磁盘分区,被用作LVM物理卷。该物理卷属于VG(卷组) klas。
以下是每个字段的含义:
- PV Name:物理卷的名称。
- VG Name:物理卷所属的卷组的名称。
- PV Size:物理卷的总容量。
- Allocatable:指示物理卷是否可以分配给逻辑卷。
- PE Size:物理卷的物理扩展大小(通常为4MiB)。
- Total PE:物理卷中的总扩展数。
- Free PE:物理卷中当前未分配的扩展数。
- Allocated PE:物理卷中已分配的扩展数。
- PV UUID:物理卷的唯一标识符。
3.在Linux系统中查看所有逻辑卷的信息
命令:lvdisplay
将显示系统上所有逻辑卷的信息,包括它们的名称、UUID、大小等。如果逻辑卷已经被格式化为一个文件系统,则还会显示文件系统类型和挂载点。
参数说明:
- LV Path:逻辑卷的设备路径,这里是 /dev/klas/swap。
- LV Name:逻辑卷的名称,这里是 swap。
- VG Name:属于哪个卷组,这里是 klas 卷组。
- LV UUID:逻辑卷的唯一标识符。
- LV Write Access:读写权限,这里为可读写。
- LV Creation host, time:逻辑卷的创建主机和时间。LV Status:逻辑卷的状态,这里为 available 表示可用。
- open:当前打开了多少个文件描述符,这里为 2。
- LV Size:逻辑卷的大小,这里小于 3.92 GiB。
- Current LE:逻辑卷当前使用的物理区块数。
- Segments:逻辑卷的段数(由于这里只有一个物理区块,所以只有一个段)。
- Allocation:分配方式,这里继承自卷组设置。
- Read ahead sectors:预读区块数,这里设置为自动调整。
- Block device:逻辑卷对应的块设备文件,这里是 /dev/253:1。
二、文件系统
在Linux中,文件系统是挂载磁盘的重要概念。文件系统是指一种组织数据的方式,可以帮助我们在磁盘上存储和管理文件。常见的Linux文件系统有ext2、ext3、ext4、XFS等。
(1)ext2(第二扩展文件系统):是 Linux 最早引入的日志文件系统之一。它使用索引节点(inode)来管理文件和目录,并使用位图来管理磁盘块的分配。然而,ext2 没有日志功能,这使得在发生意外掉电或系统崩溃时恢复文件系统变得较慢。
(2)ext3(第三扩展文件系统):是 ext2 文件系统的升级版本。它引入了日志功能,使用日志记录(journaling)来跟踪文件系统操作。这样,在系统异常关机后可以更快地进行恢复,减少数据丢失的风险。与 ext2 相比,ext3 提供了更好的可靠性和性能。
(3)ext4(第四扩展文件系统):是 ext3 文件系统的进一步改进和扩展。它增强了文件系统的大小和性能,并支持更大的文件和分区。ext4 引入了多块分配、延迟分配和其他改进,以提高文件系统的性能和可靠性。它是目前最常用的 Linux 文件系统之一。
(4)XFS:是一个高性能的日志文件系统,最初由 SGI 开发。它设计用于处理大型文件和大容量存储,并针对高吞吐量的工作负载进行了优化。XFS 支持快速分配和回收磁盘空间,并具有出色的可扩展性和鲁棒性。它被广泛用于服务器环境和高性能计算领域。
在挂载磁盘之前,我们需要先在磁盘上创建文件系统。创建文件系统的命令为mkfs。
查看系统某个目录使用的文件系统类型,如下图:
举例:查看系统根目录的文件类型:df -T /
并且可以看到根目录挂载卷组(klas)和逻辑分区(root)
三、实操-对root(/)目录进行扩容
1.使用lsblk命令查看新加入的磁盘信息
上述中我们可以看到vdb就是系统新增的磁盘,并且没有挂载任何目录。
2.fdisk -l命令查看系统中磁盘分区详细信息
包括磁盘设备名称、分区表类型、起始扇区、结束扇区、总扇区数等。
3.使用fdisk分区新磁盘,并将分区标记为Linux文件系统类型(83)
这里采用对这个磁盘(/dev/vdb)进行分区2个,1一个是100G,一个是200G,并将100G的磁盘大小扩展到 根目录下。
命令:sudo fdisk /dev/vdb
按照命令依次输入:
n (新建分区)p (主分区)1 (分区号,即vdb1)[回车] (默认起始扇区)
+100G (分区大小)
n (新建分区)p (主分区)2 (分区号,即vdb2)[回车] (默认起始扇区)
+200G (分区大小)
w (保存并退出)
具体操作如下:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-629145599, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-629145599, default 629145599): +100G
Created a new partition 1 of type 'Linux' and of size 100 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (209717248-629145599, default 209717248):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (209717248-629145599, default 629145599):
Created a new partition 2 of type 'Linux' and of size 200 GiB.
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): L
Hex code (type L to list all codes): 83
Changed type of partition 'Linux' to 'Linux'.
说明:
n: 创建新分区。出现选择分区类型的提示时,默认选择主分区(primary)。
p: 选择分区类型为 "p",即主分区。
1: 输入分区号码为 "1",表示创建第一个分区,如果不选默认就是1。
First sector: 输入第一个扇区的起始位置,默认值为 2048。你可以保持默认值(按 Enter 键),这样分区将从第一个可用扇区开始。
Last sector: 输入最后一个扇区的位置,可以输入结束位置或者分区大小。默认值为设备的最大扇区数(2048-209715199)。你可以输入具体的扇区数或者可选的单位表示分区大小(如 "100G" 表示 100GB)。根据你的输入,分区大小将为 100 GiB。例如:+100G 就是分区大小100G
t: 更改分区类型。选择分区编号为 1 的分区。
L: 查看当前系统的文件类型。根据前面序号选择。如图:
83: 设置分区类型为 83,表示 Linux 文件系统类型。
w: 保存并写入分区表更改。
最后几行提示分区表已经被修改,并且正在同步磁盘。
4.检查是否分区成功
lsblk
5.创建物理卷
pvcreate /dev/vdb1
6.将磁盘扩容到卷组
vgextend klas /dev/vdb1
说明:klas是系统有的一个卷组名称,并且它下面有个逻辑卷挂载到了根目录下,因此我们对根目录扩容,还是先将分好的磁盘大小先扩展到对应的卷组上。
7.扩展逻辑分区
说明:这一步就是将上一步加入的100G大小区域进行扩展到我们目前这个根目录的逻辑分区上,可自行选择将扩容到卷组大小的内存分配到逻辑卷中。
lvextend -l+100%FREE /dev/klas/root
/dev/klas/root:是目前系统已经存在的一个逻辑分区,可以用lvdisplay查看
其中100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例
也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L)
8.使其扩展生效(xfs_growfs)
xfs_growfs /dev/klas/root
说明:如果使用ext4文件系统,resize2fs替换xfs_growfs命令.
9.验证是否生效
(1)先检查磁盘使用情况df -h
(2)检查磁盘详细信息 lsblk
上图所示:磁盘root目录扩容成功,由原来的35.1G变成了135.1G,这是和步骤1之前的图片对比得来的结果。
四、物理卷、逻辑卷常用命令
1.物理卷
(1)创建物理卷
pvcreate 磁盘分区1 磁盘分区2 ...
如:pvcreate /dev/sdb1 # 创建一个名为 /dev/sdb1 的物理卷
(2)显示物理卷信息
pvdisplay # 显示所有物理卷的详细信息
(3)扩展物理卷
pvresize /dev/sdb1 # 调整 /dev/sdb1 物理卷的大小
(4)移除物理卷:
pvremove /dev/sdb1 # 移除 /dev/sdb1 物理卷的 LVM 标记
2.逻辑卷
(1)创建逻辑卷:****
lvcreate -L 10G -n my_volume my_vg
在名为 my_vg 的卷组中创建一个名为 my_volume 大小为 10G 的逻辑卷.
(2)显示逻辑卷信息:****
lvdisplay # 显示所有逻辑卷的详细信息
(3)扩展逻辑卷:
lvextend -L +5G /dev/my_vg/my_volume # 将名为 my_volume 的逻辑卷扩展 5G
(5)缩小逻辑卷:
lvreduce -L 5G /dev/my_vg/my_volume # 将名为 my_volume 的逻辑卷缩小至 5G
(6)移除逻辑卷:
lvremove /dev/my_vg/my_volume # 移除名为 my_volume 的逻辑卷
版权归原作者 荒Huang 所有, 如有侵权,请联系我们删除。