RAID与逻辑卷
使用场景:
1 、RAID适用于 “要求数据冗余和高性能” 的环境。例如,关键业务系统、数据库服务器和存储密集型应用程序等。RAID可以提供数据冗余和恢复能力,以及并行读/写操作加速数据访问。
2 、逻辑卷适用于 “对存储管理灵活性和易管理性” 要求较高的环境。通过逻辑卷,管理员可以根据需要划分和管理存储空间,实现数据的逻辑隔离和动态调整。
结合使用与选择:
1 、RAID和逻辑卷可以结合使用。RAID可以提供数据冗余和性能,而逻辑卷提供更灵活的存储管理能力。这可以通过在RAID阵列上创建逻辑卷来实现。管理员可以在RAID上创建逻辑卷,并根据需求调整其大小、分配给不同的应用程序等。
2 、在某些情况下,只需要选择RAID或逻辑卷中的一个应用于生产环境。这取决于您的特定需求和环境。如果您更关注数据冗余和性能,那么RAID可能是更合适的选择。如果您更关注存储灵活性和可管理性,那么逻辑卷可能更适合您的需求。
总结:对于关键的生产环境,通常建议使用RAID与逻辑卷结合,以提供数据冗余、性能和灵活的存储管理能力。
一、PV(物理卷)
pvcreate(创建物理卷)
功能
1 、pvcreate命令用于创建物理卷,使其成为逻辑卷管理器的一部分。
2 、物理卷是LVM中的基本单元,用于构建逻辑卷组(Volume Group)。
3 、物理卷负责管理存储设备的分配和分块,它们可以被添加到逻辑卷组中,并进一步分配给逻辑卷(Logical Volume)。
4 、在执行pvcreate命令时,可以指定一个或多个物理设备作为参数,这些设备将被标记为物理卷。
5 、在创建物理卷之前,建议确保指定的设备没有包含重要数据,因为pvcreate命令可能会擦除该设备上的数据。
6 、创建物理卷后,可以使用pvdisplay命令来查看物理卷的详细信息。
在使用pvcreate创建物理卷之前,通常需要在物理设备上进行分区操作。分区可以使用工具如fdisk或parted来完成。下面是一个常见的创建物理卷的步骤:
1 、使用fdisk -l或其他分区工具查看当前系统上的磁盘和分区信息。这将列出所有可用的物理设备和它们的分区。
2 、选择一个空闲的物理设备(如未分区的磁盘或一个未使用的分区)来创建物理卷。确保这个设备上没有重要的数据,因为分区操作会擦除设备上的数据。
3 、使用fdisk或parted等分区工具对选定的物理设备进行分区。
4 、对于fdisk,可以执行sudo fdisk /dev/< device> (例如,sudo fdisk /dev/sdb)来进入交互界面,然后按照提示进行分区操作。
5 、对于parted,可以执行sudo parted /dev/< device> (例如,sudo parted /dev/sdb),然后使用其命令行界面进行分区操作。
6 、创建完分区后,执行pvcreate命令来将分区标记为物理卷。例如,sudo pvcreate /dev/< partition> (例如,sudo pvcreate /dev/sdb1)。
7 、使用pvdisplay命令验证物理卷的创建结果。例如,sudo pvdisplay。
1 、空间管理:物理设备的整体空间可能超出所需的物理卷大小。通过进行分区,可以将设备的空间划分为较小的部分,使每个分区都可以用作独立的物理卷。这样可以更好地管理和利用设备的空间,将其分配给不同的逻辑卷或卷组。
2 、数据隔离:分区可以实现数据的逻辑隔离。通过将不同的数据存储在不同的分区中,可以避免数据交叉和冲突的问题,提高数据的安全性和可管理性。
3 、灾难恢复:分区可以简化灾难恢复的过程。当一个分区发生问题时,只需恢复该分区的数据,而不影响其他分区。这有助于减少数据丢失的风险和提高恢复的效率。
4 、不同的需求:通过将设备分区,可以根据不同的需求或用途将不同的分区格式化为不同的文件系统类型。例如,一个分区可以格式化为ext4文件系统用于存储操作系统文件,另一个分区可以格式化为XFS文件系统用于存储数据库文件。
5 、硬件限制:某些硬件设备要求对其进行分区才能使用。例如,某些磁盘阵列控制器可能要求将其硬盘驱动器分区为逻辑驱动器,然后才能创建物理卷和逻辑卷。
1 、然而,有一种特殊情况是直接使用整个磁盘作为物理卷的情况,而不需要额外的分区划分。这种方式被称为裸设备(raw device)或整个设备(whole device)操作。
2 、使用整个设备创建物理卷可能会失去分区带来的一些好处,如更好的管理和隔离数据。因此,在普遍的实践中,将物理设备进行分区是更常见和推荐的做法。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: A8E64868-3206-6A43-A117-92A853F07658
Device Start End Sectors Size Type
/dev/sdb1 2048 2099199 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: 572E99F2-8D56-0F4D-BD0A-24CD521FC7C5
Device Start End Sectors Size Type
/dev/sdb1 2048 2099199 2097152 1G Linux LVM
/dev/sdb2 2099200 4196351 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: 572E99F2-8D56-0F4D-BD0A-24CD521FC7C5
Device Start End Sectors Size Type
/dev/sdb1 2048 2099199 2097152 1G Linux LVM
/dev/sdb2 2099200 4196351 2097152 1G Linux LVM
/dev/sdb3 4196352 6293503 2097152 1G Linux LVM
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: B41C78D3-FDA4-FA45-8CED-FF85199246B3
Device Start End Sectors Size Type
/dev/sdc1 2048 2099199 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: B41C78D3-FDA4-FA45-8CED-FF85199246B3
Device Start End Sectors Size Type
/dev/sdc1 2048 2099199 2097152 1G Linux LVM
/dev/sdc2 2099200 4196351 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: B41C78D3-FDA4-FA45-8CED-FF85199246B3
Device Start End Sectors Size Type
/dev/sdc1 2048 2099199 2097152 1G Linux LVM
/dev/sdc2 2099200 4196351 2097152 1G Linux LVM
/dev/sdc3 4196352 6293503 2097152 1G Linux LVM
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: 6A83F9D1-E178-9140-90B1-2366091D1611
Device Start End Sectors Size Type
/dev/sdd1 2048 2099199 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: 6A83F9D1-E178-9140-90B1-2366091D1611
Device Start End Sectors Size Type
/dev/sdd1 2048 2099199 2097152 1G Linux LVM
/dev/sdd2 2099200 4196351 2097152 1G Linux LVM
[ root@ubuntu ~]
Disklabel type: gpt
Disk identifier: 6A83F9D1-E178-9140-90B1-2366091D1611
Device Start End Sectors Size Type
/dev/sdd1 2048 2099199 2097152 1G Linux LVM
/dev/sdd2 2099200 4196351 2097152 1G Linux LVM
/dev/sdd3 4196352 6293503 2097152 1G Linux LVM
[ root@ubuntu ~]
NAME SIZE
sdb 20G
├─sdb1 1G
├─sdb2 1G
└─sdb3 1G
sdc 20G
├─sdc1 1G
├─sdc2 1G
└─sdc3 1G
sdd 20G
├─sdd1 1G
├─sdd2 1G
└─sdd3 1G
[ root@ubuntu ~]
pvs(显示pv的简要信息)
[ root@ubuntu ~]
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 1 .00g 1 .00g
/dev/sdb2 lvm2 --- 1 .00g 1 .00g
/dev/sdb3 lvm2 --- 1 .00g 1 .00g
/dev/sdc1 lvm2 --- 1 .00g 1 .00g
/dev/sdc2 lvm2 --- 1 .00g 1 .00g
/dev/sdc3 lvm2 --- 1 .00g 1 .00g
/dev/sdd1 lvm2 --- 1 .00g 1 .00g
/dev/sdd2 lvm2 --- 1 .00g 1 .00g
/dev/sdd3 lvm2 --- 1 .00g 1 .00g
pvdisplay(显示物理卷属性信息)
[ root@ubuntu ~]
PV Name /dev/sdb1
PV Name /dev/sdb2
PV Name /dev/sdb3
PV Name /dev/sdc1
PV Name /dev/sdc2
PV Name /dev/sdc3
PV Name /dev/sdd1
PV Name /dev/sdd2
PV Name /dev/sdd3
[ root@ubuntu ~]
Device "/dev/sdb1" has a capacity of 1.00 GiB
Device "/dev/sdb2" has a capacity of 1.00 GiB
Device "/dev/sdb3" has a capacity of 1.00 GiB
Device "/dev/sdc1" has a capacity of 1.00 GiB
Device "/dev/sdc2" has a capacity of 1.00 GiB
Device "/dev/sdc3" has a capacity of 1.00 GiB
Device "/dev/sdd1" has a capacity of 1.00 GiB
Device "/dev/sdd2" has a capacity of 1.00 GiB
Device "/dev/sdd3" has a capacity of 1.00 GiB
[ root@ubuntu ~]
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg1
PV Size 1.00 GiB / not usable 16.00 MiB
Allocatable yes ( but full)
PE Size 16.00 MiB
Total PE 63
Free PE 0
Allocated PE 63
PV UUID gLrAxg-oTWT-FRqG-VoUR-XNel-2Yv0-F2aD2e
pvresize(调整卷组中的物理卷的大小)
-d 调试模式
-h 帮助信息
-t 以测试模式运行
-v 制定发送消息的详细等级
-y 总是选择确定(谨慎)
--reportformat basic| json 重写当前报告的输出格式
--setphysicalvolumesize< 卷大小> 覆盖物理卷自动检测到的尺寸
扩展物理卷的大小:
[ root@ubuntu ~]
上述命令将扩展物理卷 /dev/sdb1 的大小,以利用其提供的额外磁盘空间。
收缩物理卷的大小:
[ root@ubuntu ~]
上述命令将物理卷 /dev/sdb1 的大小收缩为 100GB,可以用来释放不再需要的磁盘空间。
使用 --verbose 选项显示详细的命令执行信息:
[ root@ubuntu ~]
这会显示更详细的输出,包括操作的过程和结果。
pvmove(在物理卷上移动逻辑卷组中的数据)
使用pvmove时,你将指定要迁移的源物理卷和目标物理卷。LVM将数据从源物理卷复制到目标物理卷,并在迁移完成后更新逻辑卷组的映射关系,以确保逻辑卷继续可用。
pvmove操作是热迁移(hot move)的,即在系统运行时进行迁移而无需停止逻辑卷的访问。这使得数据迁移过程不会中断正在使用逻辑卷的应用程序。
1 、扩展逻辑卷组容量:如果逻辑卷组的存储空间不足,你可以添加一个新的物理卷到逻辑卷组中,并使用pvmove命令将数据从旧物理卷迁移到新的物理卷上。这样可以扩展逻辑卷组的容量并确保数据的连续性。
2 、替换故障的物理卷:如果一个物理卷发生故障或成为不可用状态,你可以添加一个新的物理卷到逻辑卷组中,并使用pvmove命令将故障的物理卷上的数据迁移到新的物理卷上。这样可以恢复逻辑卷组的正常运行并保护数据的完整性。
3 、平衡逻辑卷组的负载:有时,逻辑卷组中的数据分布不均匀,导致某些物理卷的负载过重。使用pvmove命令可以将物理卷上的数据重新分布到其他物理卷上,以平衡逻辑卷组的负载,提高性能和可靠性。
4 、迁移数据到更高性能的存储设备:如果你希望将数据从旧的低性能存储设备(如传统机械硬盘)迁移到新的高性能存储设备(如固态硬盘),可以使用pvmove命令进行迁移。这样可以增加系统的响应速度和吞吐量。
[ root@ubuntu ~]
二、VG(卷组)
vgcreate(创建卷组)
vgcreate [ ( options) .. .] [ vg_name] [ devices]
vgcreate 特定选项:
-A, --autobackup y| n:指定是否自动备份卷组的元数据信息。当设置为 “y” 时,创建卷组时会自动备份元数据。
-c, --clustered y| n:指定卷组是否为群集模式。设置为 “y” 表示创建一个群集卷组。
-l, --maxlogicalvolumes Number:设置卷组允许的最大逻辑卷数目。
-p, --maxphysicalvolumes Number:设置卷组允许的最大物理卷数目。
-M, --metadatatype lvm2:指定元数据的类型为 “lvm2”。
-s, --physicalextentsize Size[ m| UNIT] :指定物理区的大小,可以以 MiB 为单位的数字表示,或带有单位的字符串。
其他选项包括 -f, --force(强制执行操作)、--addtag Tag(给新卷组添加标签)、--alloc contiguous| cling| cling_by_tags| normal| anywhere| inherit(指定逻辑卷的分配策略)、--metadataprofile String(指定元数据配置文件)、--labelsector Number(指定标签的扇区位置)、--metadatasize Size[ m| UNIT] (指定元数据的大小)等。
公共选项(Common options):
这些选项是 LVM 工具共享的通用选项,用于控制整个 LVM 命令行工具的行为,例如调试、帮助、输出控制等。其中的一些常用选项包括:
-d, --debug:启用调试模式。
-h, --help:显示帮助信息。
-v, --verbose:显示详细的操作日志和输出信息。
-y, --yes:自动回答 “yes”。
-t, --test:运行测试模式,不实际执行操作。
--version:显示版本信息。
[ root@ubuntu ~]
Volume group "vg0" successfully created
vgs(显示vg卷组简要信息)
[ root@ubuntu ~]
VG
vg0 3 0 0 wz--n- 2 .95g 2 .95g
vgdisplay(显示卷组属性信息)
-A:仅显示活动卷组的属性
-s:使用短格式输出信息
[ root@ubuntu ~]
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 2.95 GiB
PE Size 16.00 MiB
Total PE 189
Alloc PE / Size 0 / 0
Free PE / Size 189 / 2.95 GiB
VG UUID vdxENP-TMPj-TcSK-OKq4-4MIn-bNaQ-Taum81
vgchange(修改卷组的属性)
经常用来设备卷组是处于活动状态或者非活动状态
-a: 设置卷组的活动状态
[ root@ubuntu ~]
Volume( s) in volume group "vg1" now active
[ root@ubuntu ~]
VG Status resizable
vgextend(向卷组中添加物理卷)
将一个或多个物理卷(PV)添加到现有卷组(VG)中,扩展卷组的存储容量。
增加卷组中的物理卷数量,以适应更多的存储需求。
使卷组能够利用新添加的物理卷所提供的额外磁盘空间。
-v 或 --verbose:显示详细的命令执行信息。
-A 或 --autobackup y| n:指定是否自动备份卷组配置文件。默认情况下,LVM 在执行危险的操作前会自动备份配置文件。
-f 或 --force:强制执行操作,即使可能存在风险。
-b y| n 或 --bootstrapping y| n:指定是否正在引导过程中执行此操作。如果设置为 “y”,LVM 将避免在不安全的时间间隙对卷组进行更改。
添加单个物理卷到卷组:
[ root@ubuntu ~]
上述命令将物理卷 /dev/sdb1 添加到名为 myvg 的卷组中。
添加多个物理卷到卷组:
[ root@ubuntu ~]
上述命令将物理卷 /dev/sdb1、/dev/sdc1 和 /dev/sdd1 添加到名为 myvg 的卷组中。
使用 --verbose 选项显示详细的命令执行信息:
[ root@ubuntu ~]
这会显示更详细的输出,包括操作的过程和结果。
vgreduce(从卷组中删除物理卷)
从卷组中移除一个或多个物理卷(PV),以减小卷组的存储容量。
减少卷组中的物理卷数量,以释放不再需要的存储空间。
使卷组不再使用指定的物理卷,从而允许对该物理卷进行其他操作。
-v 或 --verbose:显示详细的命令执行信息。
-A 或 --autobackup y| n:指定是否自动备份卷组配置文件。默认情况下,LVM 在执行危险的操作前会自动备份配置文件。
-f 或 --force:强制执行操作,即使可能存在风险。
从卷组中移除单个物理卷:
[ root@ubuntu ~]
上述命令将物理卷 /dev/sdb1 从名为 myvg 的卷组中移除。
从卷组中移除多个物理卷:
[ root@ubuntu ~]
上述命令将物理卷 /dev/sdb1、/dev/sdc1 和 /dev/sdd1 从名为 myvg 的卷组中移除。
使用 --verbose 选项显示详细的命令执行信息:
[ root@ubuntu ~]
这会显示更详细的输出,包括操作的过程和结果。
vgremove(删除卷组)
可以完全删除一个卷组及其包含的逻辑卷(LV)和物理卷(PV)。
释放卷组占用的存储空间。
-v 或 --verbose:显示详细的命令执行信息。
-A 或 --autobackup y| n:指定是否自动备份卷组配置文件。默认情况下,LVM 在执行危险的操作前会自动备份配置文件。
-f 或 --force:强制执行操作,即使可能存在风险。
删除指定的卷组:
[ root@ubuntu ~]
上述命令将完全删除名为 myvg 的卷组及其相关的逻辑卷和物理卷。
使用 --verbose 选项显示详细的命令执行信息:
[ root@ubuntu ~]
这会显示更详细的输出,包括操作的过程和结果。
三、LV(逻辑卷)
lvcreate(创建逻辑卷)
-L, --size:指定逻辑卷的大小。可以使用字节(B)、千字节(K)、兆字节(M)、吉字节(G)等作为后缀,如-L 1G表示1GB大小。
-n, --name:指定逻辑卷的名称。需提供逻辑卷的名称作为参数。
-C, --chunksize:指定逻辑卷的块大小。逻辑卷块是LVM分配空间的最小单位。可以用字节(B)、千字节(K)、兆字节(M)等后缀表示,如-C 4M表示4MB块大小。
-A, --alloc:指定逻辑卷的空闲空间分配策略。可以选择的选项有:contiguous(连续分配,即尽量使空闲空间在逻辑卷中连续)、cling(尽量将空闲空间与现有物理卷关联)、normal(普通分配,默认选项)。
-i, --stripes:设置逻辑卷的条带数量。逻辑卷的条带是LVM在多个物理卷上分布数据的单位。可以指定条带的数量,如-i 2 表示使用2个条带。
-I, --stripesize:设置逻辑卷的条带大小。可以用字节(B)、千字节(K)、兆字节(M)等后缀表示,如-I 256K表示256KB条带大小。
--type:指定逻辑卷的类型。可以选择的选项有:linear(线性)、striped(条带化)、mirror(镜像)、raid(RAID)等。
--poolmetadatasize:指定缓存池(cache pool)的元数据大小。可以用字节(B)、千字节(K)、兆字节(M)等后缀表示。
-l, --extents:使用-l选项后,您可以指定逻辑卷的大小以LVM专有的逻辑卷磁盘空间的卷数为单位。一个体积组(Volume Group)中的逻辑卷磁盘空间被分割成多个逻辑卷扩展(Logical Extents),而-l选项允许您使用逻辑卷扩展的数量来指定逻辑卷的大小。例如,-l 100 表示使用100个逻辑卷扩展作为逻辑卷的大小。
-s, --snapshot:-s选项用于创建逻辑卷的快照。快照是逻辑卷的只读副本,可用于数据备份、测试和恢复等目的。通过使用-s选项,可以在lvcreate命令中创建逻辑卷的快照。例如,lvcreate -s -n snapshots_lv -L 10G /dev/myvg/mylv表示在/dev/myvg/mylv逻辑卷上创建一个名为snapshots_lv的10GB大小的快照逻辑卷。
-p, --permission:-p选项用于指定逻辑卷的权限。逻辑卷的权限可以是r(只读)或rw(读写)。默认情况下,逻辑卷的权限为读写。使用-p选项可以将权限设置为只读。例如,lvcreate -p r -n readonly_lv -L 20G /dev/myvg/mylv表示在/dev/myvg/mylv逻辑卷上创建一个名为readonly_lv的20GB大小的只读逻辑卷。
-r, --readahead:-r选项用于设置逻辑卷的预读块数(read ahead blocks)。预读块是在访问逻辑卷数据时从磁盘读取的额外数据块。预读可以提高读取性能,特别是对于顺序读取操作。使用-r选项,您可以指定逻辑卷的预读块数。例如,lvcreate -r 1024 -n readahead_lv -L 50G /dev/myvg/mylv表示在/dev/myvg/mylv逻辑卷上创建一个名为readahead_lv的50GB大小的逻辑卷,并设置预读块数为1024。
LE(Logical Extent)是逻辑卷的最小分配单元。当创建逻辑卷时,您可以指定LE的大小。LE的大小对逻辑卷的分割、操作以及可用空间的管理起着重要的作用。
当您设置LE的大小后,以下是可能会发生的情况:
1 、空间分配的粒度变化:LE的大小决定了逻辑卷的空间分配的最小单位。较小的LE大小意味着较细粒度的空间分配,您可以更灵活地分配存储空间。然而,较小的LE大小也会引入一定的空间开销,因为每个LE都需要一些元数据来管理。
2 、操作的粒度变化:LE的大小还决定了逻辑卷上一些操作的粒度。例如,当您执行resize、移动或者修改逻辑卷的操作时,这些操作通常以LE为单位进行。较小的LE大小允许您更细粒度地执行这些操作,但也需要更多的元数据来管理。
总的来说,设置LE大小可以影响逻辑卷的灵活性、性能和空间利用率。较小的LE大小提供更精细的控制和更高的灵活性,但可能会带来一些额外的开销。相反,较大的LE大小可能会稍微减少一些开销,但在分配和操作空间时可能不够灵活。要选择适合您需求的LE大小,可以考虑您对空间管理的需求、性能需求以及整体的空间利用情况。
[ root@ubuntu ~]
Logical volume "lv01" created.
[ root@ubuntu ~]
[ root@ubuntu ~]
创建一个包含3个条带、条带大小为8KiB,大小为100MiB的条带化逻辑卷。逻辑卷名称由lvcreate选择。
[ root@ubuntu ~]
创建一个包含两个镜像、可用大小为500MiB的RAID1逻辑卷。这个操作需要两个设备,每个镜像一个设备。RAID元数据(超级块和位图)也会包含在这两个设备上。
[ root@ubuntu ~]
创建一个包含两个镜像、可用大小为500MiB的镜像逻辑卷。这个操作需要三个设备:两个用于镜像,一个用于磁盘日志。
[ root@ubuntu ~]
创建一个包含两个镜像、可用大小为500MiB的镜像逻辑卷。这个操作只需要两个设备,因为日志在内存中。
[ root@ubuntu ~]
创建一个逻辑卷的写时复制快照:
[ root@ubuntu ~]
创建一个写时复制快照,大小足以覆盖原始逻辑卷大小的20%。
[ root@ubuntu ~]
创建一个稀疏逻辑卷,虚拟空间为1TiB,实际空间略小于100MiB。
[ root@ubuntu ~]
在指定的物理范围上创建一个线性逻辑卷,可用大小为64MiB。
[ root@ubuntu ~]
创建一个包含3个条带、条带大小为64KiB,可用大小为5GiB的RAID5逻辑卷,使用总共4个设备(包括一个用于校验)。
[ root@ubuntu ~]
使用VG中的所有可用空间,在VG的所有PV上创建一个RAID5逻辑卷(如果VG中的PV超过8个,则命令会失败,在这种情况下,必须使用-i 7 来达到当前最大值,即包括校验的8个设备)。
[ root@ubuntu ~]
创建一个使用2个条带,每个条带上的两个镜像的RAID10逻辑卷,可用大小为5GiB。(注意-i和-m参数的行为不同:-i指定总条带数,但-m指定镜像数,除了第一个镜像)。
[ root@ubuntu ~]
创建一个大小为1TiB的thin LV(mythin),在vg00中的256GiB thinpool(tpool0)中。
[ root@ubuntu ~]
首先创建一个新的thin池(mypool),然后在其中创建一个大小为1TiB的thin LV(mylv),thin池具有100MiB的空间,使用2个条带,每个条带具有64KiB的条带大小和256KiB的块大小。
[ root@ubuntu ~]
创建一个thin LV(mysnap),作为另一个thin LV(thinvol)的快照(注意,不能使用size选项,否则将创建一个写时复制快照)。
[ root@ubuntu ~]
在一个只读的非活动LV(名为"origin" )上创建一个thin LV(mysnap)的快照,将其作为thin快照LV的外部起点。
[ root@ubuntu ~]
创建一个缓存池,使用一个快速物理设备,该缓存池可以用来缓存一个逻辑卷。
[ root@ubuntu ~]
创建一个缓存逻辑卷,首先在一个慢速物理设备上创建一个新的原始逻辑卷,然后将新的原始逻辑卷与现有的缓存池组合起来。
[ root@ubuntu ~]
创建一个VDO逻辑卷vdo0,其VDOPoolLV大小为10GiB,名称为vpool1。
[ root@ubuntu ~]
lvs(显示逻辑卷简要信息)
[ root@ubuntu ~]
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg0 -wi-a----- 1 .00g
lvdisplay(显示逻辑卷属性信息)
[ root@ubuntu ~]
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID KLTx3w-yKyv-I1j6-V12f-PtSL-06tl-Ks8LiO
LV Write Access read/write
LV Creation host, time ubuntu, 2023 -08-13 10 :27:47 +0000
LV Status available
LV Size 2.95 GiB
Current LE 189
Segments 3
Allocation inherit
Read ahead sectors auto - currently set to 256
Block device 253 :1
lvextend(扩展逻辑卷)
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
第一步:实现逻辑卷空间扩展
[ root@ubuntu ~]
第二步:实现文件系统的扩展
[ root@ubuntu ~]
[ root@ubuntu ~]
lvresize(扩展逻辑卷,可识别文件系统)
-L, --size: 指定逻辑卷的新大小。可以通过添加单位来指定大小,例如 G 表示以 GB 为单位,M 表示以 MB 为单位。例如,lvresize -L +2G /dev/vg1/lv1 将逻辑卷 /dev/vg1/lv1 增加 2GB。
-l, --extents: 指定逻辑卷的新大小以 extents(区段)为单位。可以使用 + 或 - 符号表示相对大小的增加或减少。例如,lvresize -l +100 /dev/vg1/lv1 将逻辑卷 /dev/vg1/lv1 增加 100 个 extents。
-r, --resizefs: 自动调整关联的文件系统的大小以匹配逻辑卷的新大小。当逻辑卷上运行的是 ext2、ext3、ext4 或 XFS 等常见文件系统时,可以使用该选项自动调整文件系统大小。例如,lvresize -L +1G -r /dev/vg1/lv1 将逻辑卷 /dev/vg1/lv1 增加 1GB 并自动调整关联的文件系统大小。
-n, --name: 指定逻辑卷的名称。可以使用该选项来重命名逻辑卷。例如,lvresize -L +1G -n newlvname /dev/vg1/lv1 将逻辑卷 /dev/vg1/lv1 增加 1GB 并将其重命名为 newlvname。
-v, --verbose: 显示详细的操作过程和输出信息。
[ root@ubuntu ~]
lvremove(删除逻辑卷)
[ root@ubuntu ~]
Do you really want to remove and DISCARD active logical volume vg0/lv01? [ y/n] : y
Logical volume "lv01" successfully removed
lvreduce(收缩逻辑卷空间)
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
lvconvert(在逻辑卷之间进行转换操作)
-v, --verbose:显示详细的操作日志。
-y, --yes:自动回答所有提问,无需手动确认。
-n, --name:指定转换后的逻辑卷名称。
-t, --type:指定要转换的逻辑卷类型,例如转换为线性、条带化、镜像等。
-m, --mirrors:指定镜像的数量。可以用于增加或减少镜像的数量。
-s, --snapshot:创建或删除快照。
--corelog:在镜像或条带逻辑卷上启用或禁用核心日志(core log)。
--alloc:指定数据分配策略,如 --alloc anywhere 或 --alloc contiguous。
--stripes:设置条带逻辑卷的条带数量。
--stripesize:设置条带逻辑卷的条带大小。
--poolmetadatasize:设置逻辑卷池的元数据大小。
--poolmetadatachunks:设置逻辑卷池的元数据块数量。
--readahead:设置逻辑卷的预读块数。
--zero:初始化逻辑卷上的数据区域为零。
--thinpool:将逻辑卷转换为薄卷池。
--poolsize:设置薄卷池的大小。
--thin:将逻辑卷转换为薄卷。
将线性逻辑卷转换为双向镜像逻辑卷:
[ root@ubuntu ~]
将线性逻辑卷转换为双向 RAID1 逻辑卷:
[ root@ubuntu ~]
将镜像逻辑卷转换为使用内存日志:
[ root@ubuntu ~]
将镜像逻辑卷转换为使用磁盘日志:
[ root@ubuntu ~]
将镜像或 RAID1 逻辑卷转换为线性逻辑卷:
[ root@ubuntu ~]
将镜像逻辑卷转换为具有相同图像数的 RAID1 逻辑卷:
[ root@ubuntu ~]
将线性逻辑卷转换为双向镜像逻辑卷,并从特定物理卷范围分配新范围:
[ root@ubuntu ~]
将镜像逻辑卷转换为线性逻辑卷,并从特定物理卷释放物理范围:
[ root@ubuntu ~]
从镜像或 RAID1 逻辑卷中拆分一个图像,使其成为新的逻辑卷:
[ root@ubuntu ~]
从 RAID1 逻辑卷中拆分一个图像,并在拆分图像保持分离的同时跟踪对 RAID1 逻辑卷的更改:
[ root@ubuntu ~]
将之前使用 --splitmirrors 和 --trackchanges 创建的图像合并回原始的 RAID1 逻辑卷:
[ root@ubuntu ~]
在 RAID1/4/5/6/10 逻辑卷中使用 PV /dev/sdb1 替换 PV /dev/sdf1:
[ root@ubuntu ~]
在 RAID1 逻辑卷中使用 PV /dev/sd[ b-d] 1 替换为 PV /dev/sd[ f-h] 1 :
[ root@ubuntu ~]
在 RAID6 逻辑卷中将最多 2 个 PV /dev/sd[ bc] 1 替换为 PV /dev/sd[ gh] 1 :
[ root@ubuntu ~]
将现有的逻辑卷转换为指定薄卷池中的薄逻辑卷。现有的逻辑卷用作新薄逻辑卷的外部只读源。
[ root@ubuntu ~]
将现有的逻辑卷转换为指定薄卷池中的薄逻辑卷。现有的逻辑卷用作新薄逻辑卷的外部只读源,并将其重命名为 “external”。
[ root@ubuntu ~]
将现有的逻辑卷转换为使用另一个指定的逻辑卷作为缓存池元数据的缓存池逻辑卷。
[ root@ubuntu ~]
将现有的逻辑卷转换为使用指定的缓存池和块大小的缓存逻辑卷。
[ root@ubuntu ~]
从缓存逻辑卷中分离并保留缓存池。
[ root@ubuntu ~]
从缓存逻辑卷中分离并移除缓存池。
[ root@ubuntu ~]
四、文件系统
fsadm (检查和更改文件系统大小)
-h 或 --help:显示帮助信息。
-v 或 --verbose:显示详细信息。
-e 或 --ext-offline:在进行 ext2/ext3/ext4 文件系统调整大小之前卸载文件系统。
-f 或 --force:绕过完整性检查。
-n 或 --dry-run:打印命令而不实际执行它们,用于演示运行结果。
-l 或 --lvresize:调整给定设备的大小,如果它是 LVM(逻辑卷管理器)设备。
-c 或 --cryptresize:调整给定的加密设备大小。
-y 或 --yes:自动回答任何提示为 “yes”。
文件系统中的绝对块数,或使用后缀表示的绝对大小(以1024的幂为单位)。如果未提供 new_size,则使用整个设备。
new_size 是指要在文件系统中使用的绝对块数或绝对大小。如果使用块数表示,它代表文件系统中的块数量。如果使用大小表示,可以通过使用后缀来指定大小单位,后缀包括 K(千字节)、M(兆字节)、G(千兆字节)、T(万兆字节)、P(拍字节)、E(艾字节)。如果不提供 new_size,则该操作会使用整个设备。
用例1: 检查文件系统完整性
[ root@ubuntu ~]
此命令将使用 fsck 工具检查 /dev/sda1 上的文件系统,扫描并修复其中的错误。这是一个常见的用例,用于定期检查文件系统的健康状态,以确保数据的完整性。
用例1: 扩展文件系统大小
[ root@ubuntu ~]
此命令将文件系统 /dev/sdb1 的大小扩展到 2GB。文件系统将被调整以适应更大的容量,允许存储更多的数据。
用例2: 缩小文件系统大小
[ root@ubuntu ~]
此命令将文件系统 /dev/sdc1 的大小缩小到500MB。文件系统将被调整以适应更小的容量,可能用于释放空闲空间或将文件系统与其他分区进行调整。
resize2fs(扩容或缩小已卸载的ext文件系统)
-f:强制执行文件系统调整大小,而无需进行安全性检查。这个选项可以绕过某些潜在的问题,但需要谨慎使用。
-F:在执行文件系统调整大小之前,先强制执行完整性检查,并尝试修复文件系统中的错误。这可以确保在调整大小之前文件系统处于良好的状态。
-M:最小化文件系统。这个选项会尽量减小文件系统的大小,删除不再使用的块,以便有效地利用存储空间。但请注意,该操作不会缩小文件系统所在的分区。
-P:打印出执行文件系统调整大小所需的步骤,而不实际执行它们。这对于查看将会发生什么以及可能的结果非常有用。
-p:在调整大小过程中显示进度信息。这个选项会显示文件系统调整大小的进度百分比和估计剩余时间。
device:指定要调整大小的文件系统所在的设备路径。
-b| -s| new_size:用于指定新的文件系统大小。有三种选择:
-b:将新的文件系统大小指定为块数。
-s:将新的文件系统大小指定为扇区数。
new_size:将新的文件系统大小直接指定为字节数。可以使用后缀(如K、M、G、T)表示大小的单位。
-S RAID-stride:指定用于软RAID(虚拟磁盘阵列)所需的RAID步幅。这个选项通常用于性能优化。
-z undo_file:指定一个撤销文件,以便在调整大小失败时恢复到调整之前的状态。
调整文件系统大小为指定块数:
[ root@ubuntu ~]
此命令将文件系统 /dev/sda1 的大小调整为 100,000 个块。文件系统将被扩展或缩小以适应指定的块数。
调整文件系统大小为指定扇区数:
[ root@ubuntu ~]
此命令将文件系统 /dev/sdb1 的大小调整为 50,000 个扇区。文件系统将根据指定的扇区数进行扩展或缩小。
调整文件系统大小为指定字节数:
[ root@ubuntu ~]
此命令将文件系统 /dev/sdc1 的大小调整为 2GB。文件系统将根据指定的字节数进行扩展或缩小。
最小化文件系统:
[ root@ubuntu ~]
此命令将尽量减小文件系统 /dev/sda2 的大小,以删除不再使用的块,以便最大限度地利用存储空间。
xfs_growfs(要扩展XFS文件系统)
-d:扩展数据/元数据区段。
-l:扩展日志区段。
-r:扩展实时区段。
-n:仅显示几何信息,不做任何更改。
-i:将日志从外部格式转换为内部格式。
-t:指定挂载表 ( /etc/mtab) 的替代位置。
-x:将日志从内部格式转换为外部格式。
-D size:将数据/元数据区段扩展到指定的块数大小。
-L size:将日志区段扩展/缩小到指定的块数大小。
-R size:将实时区段扩展到指定的块数大小。
-e size:将实时扩展大小设置为指定的块数大小。
-m imaxpct:将 inode 最大百分比设置为指定的值。
-V:打印版本信息。
扩展XFS文件系统到分区的最大大小:
[ root@ubuntu ~]
这个命令将XFS文件系统扩展到 /dev/sda1 分区的最大可用大小。它会自动检测分区的可用空间并将文件系统扩展到该大小。
手动指定新的文件系统大小:
[ root@ubuntu ~]
这个命令将XFS文件系统在 /mnt/data 上的数据/元数据区段扩展到分区的最大可用大小,以适应可用的空间。使用 -d 选项来指定扩展数据/元数据部分。
手动指定新的日志区段大小:
[ root@ubuntu ~]
这个命令将XFS文件系统在 /mnt/data 上的日志区段扩展到2GB的大小。使用 -l 选项并指定新的大小来调整日志区段。
xfsdump(备份xfs文件系统)
对完整的文件系统进行备份,用xfsdump。他除了可以进行完整备份,还可以进行累积性备份。就是第一次使用xfsdump,是完整备份,定义为level 0 ,而第二次备份,则不会完整备份,而是和第一次的备份(level 0 )进行比较,仅备份有差异的文件(level 1 )。各个level的文件,一本存放在/var/lib/xfsdump/inventory中。
xfsdump有5个限制:
必须用root权限
只能备份已挂载的文件系统
只能备份XFS文件系统
只能用xfsrestore解释
透过文件系统的UUID来分辨备份档,因此不能备份相同UUID的文件系统
语法:
xfsdump [ -L S_lable] [ -M M_lable] [ -l
xfsdump -I
参数:
-L:xfsdump会记录每次备份的session标头,这里可以填写针对此文件系统的简易说明;
-M:xfsdump可以记录存储媒体的标头,这里可以填写此媒体的简易说明。
-l:是L的小写,就是指定等级,有0~9共10个等级,默认为0,即完整备份。
-f:有点类似tar,后面接产生的文件,也可以接例如/dev/st0设备文件名或其他一般文件文件名;
-I:大写的“i”,从/var/lib/xfsdump/inventory 列出目前备份的信息状态。
[ root@ubuntu ~]
----- -------- -------- --------------- ------
备份等级 文件说明 媒体说明 备份名 来源路径
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
xfsrestore(xfs文件系统的备份与还原)
-I:大写的“i”跟xfsdump相同的输出!可查询备份数据,包括Label名称和备份时间等;
-f:后面接的就是备份文件!企业中很有可能会接/dev/st0等磁带机!
-L:可用“-I”查询到的数据。在这个选项后输入;
-s:需要接某特定目录,也能复原某一文件或目录;
-r:如果是用文件来存储备份数据,那这个就不需要使用。如果是一个磁盘内有多个文件,需要使用它来达成累积复原;
-i:进入交互模式
[ root@ubuntu ~]
[ root@ubuntu ~]
五、整体流程
设备分区
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 82232BCA-60EF-0C45-B4EE-718EC86D776B
Device Start End Sectors Size Type
/dev/sdb1 2048 2099199 2097152 1G Linux LVM
/dev/sdb2 2099200 4196351 2097152 1G Linux LVM
/dev/sdb3 4196352 6293503 2097152 1G Linux LVM
/dev/sdb4 6293504 8390655 2097152 1G Linux LVM
检查系统存在的PV
[ root@ubuntu ~]
创建物理卷
[ root@ubuntu ~]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
[ root@ubuntu ~]
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg1
PV Size 1.00 GiB / not usable 16.00 MiB
Allocatable yes ( but full)
PE Size 16.00 MiB
Total PE 63
Free PE 0
Allocated PE 63
PV UUID gLrAxg-oTWT-FRqG-VoUR-XNel-2Yv0-F2aD2e
创建卷组
[ root@ubuntu ~]
PV /dev/sdb1 lvm2 [ 1.00 GiB]
PV /dev/sdb2 lvm2 [ 1.00 GiB]
PV /dev/sdb3 lvm2 [ 1.00 GiB]
PV /dev/sdb4 lvm2 [ 1.00 GiB]
Total: 5 [ < 202.00 GiB] / in use: 1 [ < 198.00 GiB] / in no VG: 4 [ 4.00 GiB]
[ root@ubuntu ~]
Volume group "vg1" successfully created
[ root@ubuntu ~]
Found volume group "vg1" using metadata type lvm2
[ root@ubuntu ~]
PV /dev/sdb1 VG vg1 lvm2 [ 1008.00 MiB / 1008.00 MiB free]
PV /dev/sdb2 VG vg1 lvm2 [ 1008.00 MiB / 1008.00 MiB free]
PV /dev/sdb3 VG vg1 lvm2 [ 1008.00 MiB / 1008.00 MiB free]
PV /dev/sdb4 lvm2 [ 1.00 GiB]
[ root@ubuntu ~]
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 2.95 GiB
PE Size 16.00 MiB
Total PE 189
Alloc PE / Size 0 / 0
Free PE / Size 189 / 2.95 GiB
VG UUID vdxENP-TMPj-TcSK-OKq4-4MIn-bNaQ-Taum81
将卷据设置为活动状态
1 、为什么要将卷组设置为活动状态?
2 、设置为活动状态以后,后续操作( 扩展,删除,维护) ,还需要做什么吗?
[ root@ubuntu ~]
logical volume( s) in volume group "vg1" now active
[ root@ubuntu ~]
VG Status resizable
创建逻辑卷
[ root@ubuntu ~]
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 2.95 GiB
PE Size 16.00 MiB
Total PE 189
Alloc PE / Size 0 / 0
Free PE / Size 189 / 2.95 GiB
VG UUID vdxENP-TMPj-TcSK-OKq4-4MIn-bNaQ-Taum81
[ root@ubuntu ~]
WARNING: ext4 signature detected on /dev/vg1/lv1 at offset 1080 . Wipe it? [ y/n] : Y
Wiping ext4 signature on /dev/vg1/lv1.
Logical volume "lv1" created.
[ root@ubuntu ~]
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID KLTx3w-yKyv-I1j6-V12f-PtSL-06tl-Ks8LiO
LV Write Access read/write
LV Creation host, time ubuntu, 2023 -08-13 10 :27:47 +0000
LV Status available
LV Size 2.95 GiB
Current LE 189
Segments 3
Allocation inherit
Read ahead sectors auto - currently set to 256
Block device 253 :1
[ root@ubuntu ~]
lrwxrwxrwx 1 root root 7 Aug 13 10 :27 /dev/vg1/lv1 -> .. /dm-1
1 、抽象化存储:逻辑卷的目的之一是将对物理存储的操作抽象化,使其对上层应用程序或文件系统是透明的。通过使用映射和引用,可以隐藏底层物理存储的细节,使应用程序和用户只需要关注逻辑卷的大小和属性。
2 、灵活的大小调整:逻辑卷可以在需要时动态调整大小,而无需改变上层应用程序或文件系统的配置。通过在物理存储上创建逻辑卷、物理卷和卷组之间的映射,可以轻松地扩展或收缩逻辑卷的容量,而无需重新配置其他组件。
3 、管理多个物理设备:逻辑卷可以由多个物理设备组成,例如多个硬盘驱动器或分区。通过使用映射和引用,可以将多个物理设备组合为一个逻辑卷,提供更大的存储空间和冗余性。
4 、管理数据分布和性能:通过逻辑卷映射和引用,可以将数据分布在多个物理设备上,以提高存储系统的性能和吞吐量。例如,可以使用条带化(striping)将数据均匀分布到多个物理设备上,以实现并行读写操作。
物理卷组的PE和逻辑卷的LE
LE是逻辑卷的最小地址单元,用于逻辑卷内部的存储和管理;PE是物理卷的最小地址单元,用于物理卷的存储和管理。LE和PE之间的大小应该一致或者是整数倍的关系,以便进行正确的映射和操作。
1 、逻辑卷(Logical Volume)由多个LE组成,而且LE的大小是固定的。
2 、物理卷(Physical Volume)由多个PE组成,而且PE的大小是固定的。
3 、当逻辑卷扩展时,LVM会自动分配更多的LE来填充逻辑卷,以增加其容量。
4 、当物理卷扩展时,LVM会自动分配更多的PE来填充物理卷,以增加其容量。
5 、LE和PE之间的大小应该一致或者是整数倍的关系,以便逻辑卷和物理卷之间的映射关系保持一致。
格式化逻辑卷,并且挂载
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
UUID = 800bbf4e-2333-4d5f-a3af-abe6426ce4bf /mnt/data ext4 defaults 0 0
[ root@ubuntu ~]
[ root@ubuntu ~]
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg1-lv1 2973368 24 2802132 1 % /mnt/data
一个逻辑卷可以挂载到多个目录中,如果多个逻辑卷挂载至一个目录中,那么目录中之前的文件会被隐藏,只会显示最后挂载逻辑卷中的文件。
扩展物理卷
1 、检查系统是否有物理卷未使用
[ root@ubuntu ~]
PV /dev/sdb1 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb2 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb3 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb4 lvm2 [ 1.00 GiB]
2 、再次增加几个物理卷
[ root@ubuntu ~]
[ root@ubuntu ~]
Physical volume "/dev/sdc1" successfully created.
[ root@ubuntu ~]
PV /dev/sdb1 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb2 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb3 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb4 lvm2 [ 1.00 GiB]
PV /dev/sdc1 lvm2 [ 1.00 GiB]
1 、空间管理:物理设备的整体空间可能超出所需的物理卷大小。通过进行分区,可以将设备的空间划分为较小的部分,使每个分区都可以用作独立的物理卷。这样可以更好地管理和利用设备的空间,将其分配给不同的逻辑卷或卷组。
2 、数据隔离:分区可以实现数据的逻辑隔离。通过将不同的数据存储在不同的分区中,可以避免数据交叉和冲突的问题,提高数据的安全性和可管理性。
3 、灾难恢复:分区可以简化灾难恢复的过程。当一个分区发生问题时,只需恢复该分区的数据,而不影响其他分区。这有助于减少数据丢失的风险和提高恢复的效率。
4 、不同的需求:通过将设备分区,可以根据不同的需求或用途将不同的分区格式化为不同的文件系统类型。例如,一个分区可以格式化为ext4文件系统用于存储操作系统文件,另一个分区可以格式化为XFS文件系统用于存储数据库文件。
5 、硬件限制:某些硬件设备要求对其进行分区才能使用。例如,某些磁盘阵列控制器可能要求将其硬盘驱动器分区为逻辑驱动器,然后才能创建物理卷和逻辑卷。
扩展卷组
[ root@ubuntu ~]
VG
vg1 3 1 0 wz--n- 2 .95g 0
[ root@ubuntu ~]
PV /dev/sdb1 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb2 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb3 VG vg1 lvm2 [ 1008.00 MiB / 0 free]
PV /dev/sdb4 lvm2 [ 1.00 GiB]
PV /dev/sdc1 lvm2 [ 1.00 GiB]
[ root@ubuntu ~]
Volume group "vg1" successfully extended
[ root@ubuntu ~]
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 5
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 5
Act PV 5
VG Size 4.92 GiB
PE Size 16.00 MiB
Total PE 315
Alloc PE / Size 189 / 2.95 GiB
Free PE / Size 126 / < 1.97 GiB
VG UUID vdxENP-TMPj-TcSK-OKq4-4MIn-bNaQ-Taum81
[ root@ubuntu ~]
VG
vg1 5 1 0 wz--n- 4 .92g < 1 .97g
扩展逻辑卷
[ root@ubuntu ~]
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 5
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 5
Act PV 5
VG Size 4.92 GiB
PE Size 16.00 MiB
Total PE 315
Alloc PE / Size 189 / 2.95 GiB
Free PE / Size 126 / < 1.97 GiB
VG UUID vdxENP-TMPj-TcSK-OKq4-4MIn-bNaQ-Taum81
[ root@ubuntu ~]
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID KLTx3w-yKyv-I1j6-V12f-PtSL-06tl-Ks8LiO
LV Write Access read/write
LV Creation host, time ubuntu, 2023 -08-13 10 :27:47 +0000
LV Status available
LV Size 2.95 GiB
Current LE 189
Segments 3
Allocation inherit
Read ahead sectors auto - currently set to 256
Block device 253 :1
[ root@ubuntu ~]
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg1-lv1 2973368 24 2802132 1 % /mnt/data
== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
[ root@ubuntu ~]
Size of logical volume vg1/lv1 changed from 2.95 GiB ( 189 extents) to 3.95 GiB ( 253 extents) .
Logical volume vg1/lv1 successfully resized.
resize2fs 1.46 .5 ( 30 -Dec-2021)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /mnt/data; on-line resizing required
old_desc_blocks = 1 , new_desc_blocks = 1
The filesystem on /dev/mapper/vg1-lv1 is now 1036288 ( 4k) blocks long.
== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
[ root@ubuntu ~]
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID KLTx3w-yKyv-I1j6-V12f-PtSL-06tl-Ks8LiO
LV Write Access read/write
LV Creation host, time ubuntu, 2023 -08-13 10 :27:47 +0000
LV Status available
LV Size 3.95 GiB
Current LE 253
Segments 5
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253 :1
[ root@ubuntu ~]
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg1-lv1 4002720 24 3791508 1 % /mnt/data
如果使用lvextend进行扩展,则不会同步至ext或xfs等其它类型的文件系统,需要使用文件系统专用工具进行同步。
第一步:实现逻辑卷空间扩展
[ root@ubuntu ~]
第二步:实现文件系统的扩展
[ root@ubuntu ~]
[ root@ubuntu ~]
如果逻辑卷已经被扩展,并且文件系统也自动调整为适应新大小(例如通过在线扩展功能),则只需要执行 lvresize -r -L 1G /dev/vg1/lv1 命令即可。
如果逻辑卷已被扩展,但文件系统没有自动调整大小,您可以先执行 lvresize -L 1G /dev/vg1/lv1 命令来调整逻辑卷的大小,然后再执行 resize2fs /dev/vg1/lv1 命令来调整文件系统的大小。
在缩小逻辑卷之前,首先需要调整文件系统的大小,以确保它适应逻辑卷的新大小。因此,需要先执行 resize2fs /dev/vg1/lv1 1G 命令来缩小文件系统。
然后,执行 lvresize -r -L 1G /dev/vg1/lv1 命令来调整逻辑卷的大小并同时调整文件系统的大小。
缩减逻辑卷
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
resize2fs和lvresize命令的功能和区别:
缩减:
需要首先调整文件系统的大小resize2fs,然后调整逻辑卷的大小lvresize,这样可以确保文件系统与逻辑卷的大小保持同步。
扩展:
需要首先调整逻辑卷的大小lvresize,然后调整文件系统的大小resize2fs,这样可以确保文件系统与逻辑卷的大小保持同步。
1 、resize2fs:resize2fs 是用于调整 ext4 和 ext3 文件系统大小的命令。它不会直接对逻辑卷进行调整,而是针对文件系统本身进行操作。它会调整文件系统的大小以适应所提供的大小参数(例如允许扩展或缩小文件系统)。该命令会修改文件系统的元数据来反映其新的大小,并允许使用更多或更少的存储空间。但是,它并不会修改逻辑卷本身的大小。
2 、lvresize:lvresize 是逻辑卷管理器(LVM)提供的命令,用于调整逻辑卷的大小。它可以增加或减小逻辑卷的大小,从而为文件系统、数据库或其他应用程序提供更多或更少的存储空间。lvresize 命令会直接影响逻辑卷,修改逻辑卷的元数据来反映其新的大小。
需要注意的是,调整文件系统大小时,需要首先调整逻辑卷的大小,然后再使用 resize2fs 命令来调整文件系统的大小以适应逻辑卷的变化。这样可以确保文件系统与逻辑卷的大小保持同步。
如果逻辑卷已经被扩展,并且文件系统也自动调整为适应新大小(例如通过在线扩展功能),则只需要执行 lvresize -r -L 1G /dev/vg1/lv1 命令即可。
如果逻辑卷已被扩展,但文件系统没有自动调整大小,您可以先执行 lvresize -L 1G /dev/vg1/lv1 命令来调整逻辑卷的大小,然后再执行 resize2fs /dev/vg1/lv1 命令来调整文件系统的大小。
在缩小逻辑卷之前,首先需要调整文件系统的大小,以确保它适应逻辑卷的新大小。因此,需要先执行 resize2fs /dev/vg1/lv1 1G 命令来缩小文件系统。
然后,执行 lvresize -r -L 1G /dev/vg1/lv1 命令来调整逻辑卷的大小并同时调整文件系统的大小。
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
移除某个卷组中的某个物理设备
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 436M 24K 402M 1 % /mnt/data
移除物理卷某个物理设备
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
跨主机迁移卷组
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
逻辑卷快照
1 、创建快照:在创建逻辑卷快照时,会记录源逻辑卷的状态,并创建一个与源逻辑卷相同的元数据结构(只包含元数据信息,不包含实际数据)。
2 、写时复制:随着源逻辑卷的变化,新写入的数据不会直接写入快照,而是会被复制到新的块中,以保持源逻辑卷和快照之间数据的独立性。
3 、快照数据存储:快照块以及变化的数据会被存储在其他位置(快照卷)中,而不是直接写入源逻辑卷。
1 、数据保护:逻辑卷快照是通过记录源逻辑卷的状态来实现的,因此在源逻辑卷数据损坏或删除后,可以使用快照来还原数据。
2 、快速创建:逻辑卷快照的创建速度较快,通常只需记录元数据信息,不会立即复制源逻辑卷的所有数据。
3 、存储效率:逻辑卷快照只存储源逻辑卷和快照之间的变化数据,因此占用的存储空间相对较小。
4 、需要较大的存储空间:虽然快照只存储源逻辑卷和快照之间的差异数据,但如果源逻辑卷的数据变化很大,快照所需的存储空间也会增加。
5 、有限的保留时间:快照的保留时间是有限的,超过一定时间或达到预设的存储空间限制后,需要删除旧的快照。
1 、逻辑卷快照的实现通常需要以下步骤:
2 、创建快照卷:创建一个用于存储快照数据的快照卷。
3 、记录源逻辑卷状态:记录源逻辑卷的当前状态,包括逻辑卷的元数据信息。
4 、写时复制:随着源逻辑卷数据的变化,将新写入的数据复制到快照卷中的新块中,而不是直接覆盖源逻辑卷的原始数据。
5 、管理快照:根据需求管理快照,包括设置保留时间、限制存储空间、删除旧的快照等操作。
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv2 112M 7 .0M 105M 7 % /mnt/xfs
/dev/mapper/vg1-lv1 457M 25k 421M 1 % /mnt/data
/dev/mapper/vg1-xfs_snapshot 112M 263k 112M 1 % /mnt/xfs_snap
/dev/mapper/vg1-ext_snapshot 457M 25k 421M 1 % /mnt/ext_snap
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]
[ root@ubuntu ~]