Skip to content

Linux命令-分区管理

parted - 高级分区工具

Linux 高级分区工具(支持 GPT/MBR)parted 是 GNU 开发的交互式分区工具,相比 fdisk 主要优势:

  • 原生支持 GPT 分区表(适用于 2TB+ 大磁盘)
  • 无损调整分区大小(需文件系统支持)
  • 支持更多高级功能(分区对齐、文件系统操作等)

语法格式

bash
parted [选项] <磁盘设备> [命令]

选项

选项描述示例
-l列出所有块设备的分区信息parted -l
-s脚本模式(不提示用户确认)parted -s /dev/sdb mklabel gpt
-a 对齐设置分区对齐方式(min/opt)parted -a optimal /dev/sdc
-f强制操作(跳过部分安全检查)parted -f /dev/sdd

交互模式常用命令

parted /dev/sdX

命令描述示例
mklabel 类型创建新的分区表(gpt/msdos)(parted) mklabel gpt
mkpart 类型 [fs] 起点 终点创建新分区(parted) mkpart primary ext4 1MiB 5GiB
rm 分区号删除分区(parted) rm 2
resizepart 分区号 终点调整分区大小(parted) resizepart 1 10GiB
print显示分区表(parted) print
set 分区号 标志 状态设置分区标志(parted) set 1 boot on
unit 单位设置显示单位(s/MiB/GiB 等)(parted) unit GiB
align-check 类型 分区号检查分区对齐(parted) align-check optimal 1

mkswap - 设置Linux交换分区/文件

mkswap 命令用于将磁盘分区或文件初始化为Linux交换空间(swap area),这是虚拟内存系统的重要组成部分。

语法格式

bash
mkswap [选项] 设备/文件 [大小]

选项

选项描述示例
-c在创建交换空间前检查坏块mkswap -c /dev/sdb1
-f强制创建交换空间(即使设备已格式化)mkswap -f /swapfile
-p 页大小指定交换空间的页大小(单位:字节)mkswap -p 4096 /dev/sdc1
-L 标签为交换空间设置标签mkswap -L swap1 /dev/sdd1
-U UUID为交换空间设置指定的 UUIDmkswap -U 123e4567-e89b-12d3-a456-426614174000 /dev/sde1
-v显示详细输出mkswap -v /swapfile

经典案例

bash
# 在分区 /dev/sdb1 上创建交换空间
mkswap /dev/sdb1

# 创建交换文件(需先分配空间)
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile

# 启用交换空间
swapon /swapfile

# 检查交换空间是否生效
free -h

# 永久挂载交换空间(编辑 /etc/fstab)
echo '/swapfile none swap sw 0 0' >> /etc/fstab

启用交换空间

创建后需要使用swapon激活

bash
swapon /dev/sdb2  # 或 swapon /swapfile

注意事项

  1. 交换分区/文件创建后需要swapon才能生效
  2. 交换文件大小建议为物理内存的1-2倍
  3. 生产环境建议使用专用交换分区而非文件
  4. 使用free -hswapon --show验证交换空间状态
  5. 永久生效需在/etc/fstab中添加条目:
bash
/swapfile none swap sw 0 0

相关命令

  • swapon - 启用交换空间
  • swapoff - 禁用交换空间
  • dd - 创建交换文件
  • fdisk - 创建交换分区

swapon - 激活交换空间

swapon 是 Linux 系统中用于激活交换空间(swap space)的命令,将指定的设备或文件作为虚拟内存使用。通常用于系统内存不足时扩展可用内存。

语法格式

bash
swapon [选项] [设备/文件]

选项

选项描述示例
-a启用 /etc/fstab 中所有标记为 swap 的设备swapon -a
-d显示详细信息(调试模式)swapon -d /swapfile
-e静默模式(不显示错误信息)swapon -e /dev/sdb1
-f强制启用(即使设备未标记为交换空间)swapon -f /swapfile
-p 优先级设置交换空间的优先级(数值越高优先级越高)swapon -p 100 /dev/sdc1
-s显示当前启用的交换空间摘要swapon -s
-v显示详细输出swapon -v /swapfile

经典案例

bash
# 启用交换分区 /dev/sdb1
swapon /dev/sdb1

# 启用交换文件 /swapfile
swapon /swapfile

# 启用所有在 /etc/fstab 中定义的交换设备
swapon -a

# 设置交换分区的优先级(数值越高越优先使用)
swapon -p 100 /dev/sdc1

# 显示当前启用的交换空间
swapon -s

注意事项

  1. 需要 root 权限执行

  2. 交换文件/分区需先通过 mkswap 初始化

  3. 永久生效需在/etc/fstab添加配置:

    /swapfile none swap sw 0 0
  4. 使用 swapoff 命令可停用交换空间

  5. 生产环境建议交换空间大小为物理内存的1-2倍

swapoff - 停止交换空间

swapoff 是 Linux 系统中用于 停用交换空间(swap space) 的命令,可以释放交换分区或交换文件占用的资源。通常在调整交换空间或维护系统时使用。

语法格式

bash
swapoff [选项] [设备/文件]

选项

选项描述示例
-a禁用 /etc/fstab 中所有标记为 swap 的设备swapoff -a
-v显示详细输出swapoff -v /swapfile
-h显示帮助信息swapoff -h
-V显示版本信息swapoff -V

经典案例

bash
# 禁用交换分区 /dev/sdb1
swapoff /dev/sdb1

# 禁用交换文件 /swapfile
swapoff /swapfile

# 禁用所有在 /etc/fstab 中定义的交换设备
swapoff -a

# 显示详细禁用过程
swapoff -v /swapfile

注意事项

  1. 需要 root 权限(使用 sudo 执行)。
  2. 确保系统有足够的内存,否则停用交换空间可能导致 OOM(内存不足)错误。
  3. 永久停用交换空间 需要修改 /etc/fstab,删除或注释掉对应的 swap 行。
  4. 重新启用交换空间 可使用 swapon 命令。

pvcreate - 创建物理卷

pvcreate 是 Linux LVM(Logical Volume Manager,逻辑卷管理)工具的一部分,用于 初始化物理卷(Physical Volume, PV),使其可以被 LVM 管理。通常用于将磁盘或分区转换为 LVM 可识别的存储单元

语法格式

bash
pvcreate [选项] 物理设备 [物理设备2...]

选项

选项描述示例
-f强制创建,不提示确认pvcreate -f /dev/sdb
-u UUID指定物理卷的 UUIDpvcreate -u 12345678-1234-5678-1234-567890abcdef /dev/sdb
-y对所有问题回答 "yes"pvcreate -y /dev/sdb
-Z不擦除设备上的现有数据pvcreate -Z /dev/sdb
--metadatatype指定元数据类型pvcreate --metadatatype lvm2 /dev/sdb
--dataalignment设置数据对齐pvcreate --dataalignment 1m /dev/sdb
--labelsector指定标签扇区pvcreate --labelsector 1 /dev/sdb

经典案例

bash
# 将/dev/sdb初始化为物理卷
pvcreate /dev/sdb

# 强制初始化/dev/sdc(不提示确认)
pvcreate -f /dev/sdc

# 初始化多个设备
pvcreate /dev/sdd /dev/sde

# 创建物理卷后验证
pvdisplay

# 将物理卷添加到卷组
vgcreate myvg /dev/sdb

注意事项

  1. 需要 root 权限(使用 sudo 执行)。
  2. 设备必须未被挂载,否则会报错。
  3. 数据会被擦除,初始化前请确保设备无重要数据。
  4. 后续操作
    • 使用 vgcreate 创建卷组(VG)
    • 使用 lvcreate 创建逻辑卷(LV)
  5. 撤销操作
    • 使用 pvremove 移除物理卷

pvmove - 迁移物理卷上的数据

pvmove 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 将数据从一个物理卷(PV)迁移到另一个物理卷。通常在以下场景使用:

  • 更换硬盘(将旧硬盘数据迁移到新硬盘)

  • 维护存储(移除某个物理卷前迁移数据)

  • 负载均衡(优化存储分布)

语法格式

bash
pvmove [选项] [源物理卷] [目标物理卷]

选项

选项描述示例
-i交互模式,操作前确认pvmove -i /dev/sdb1
-n仅移动指定逻辑卷pvmove -n lv_data /dev/sdb1
-b后台运行pvmove -b /dev/sdb1
--alloc contiguous分配连续空间pvmove --alloc contiguous /dev/sdb1
--atomic原子操作(要么全部成功,要么全部失败)pvmove --atomic /dev/sdb1
--noudevsync跳过 udev 同步pvmove --noudevsync /dev/sdb1
--verbose显示详细输出pvmove --verbose /dev/sdb1

经典案例

bash
# 将/dev/sdb1上的所有数据迁移到卷组中的其他物理卷
pvmove /dev/sdb1

# 将/dev/sdb1上的数据迁移到指定的/dev/sdc1
pvmove /dev/sdb1 /dev/sdc1

# 仅移动名为lv_data的逻辑卷
pvmove -n lv_data /dev/sdb1

# 在后台运行迁移
pvmove -b /dev/sdb1

# 交互式迁移
pvmove -i /dev/sdb1
# 取消正在进行的迁移
pvmove --abort

注意事项

  1. 卷组要求:源和目标物理卷必须在同一卷组中
  2. 空间要求:目标物理卷必须有足够的空间
  3. 性能影响:大数据量迁移可能影响系统性能
  4. 中断恢复:迁移过程可以中断,之后可以继续
  5. 监控进度:使用lvs -o+devicespvdisplay -m查看进度
  6. 权限要求:需要 root 权限执行

pvremove - 移除物理卷

从物理卷(Physical Volume, PV)中删除 LVM(Logical Volume Manager)元数据,使其不再被 LVM 识别和管理。

语法格式

bash
pvremove [选项] 物理卷 [物理卷2 ...]

选项

选项描述示例
-f强制移除,不提示确认pvremove -f /dev/sdb1
-ff双重强制,即使设备被使用也强制移除pvremove -ff /dev/sdb1
-y对所有问题回答 "yes"pvremove -y /dev/sdb1
--debug显示调试信息pvremove --debug /dev/sdb1
--verbose显示详细输出pvremove --verbose /dev/sdb1

典型用法

bash
# 移除单个物理卷 /dev/sdb1 的 LVM 属性
pvremove /dev/sdb1

# 强制移除 /dev/sdc1(不提示确认)
pvremove -f /dev/sdc1

# 移除多个设备的 LVM 属性
pvremove /dev/sdd1 /dev/sde1

# 双重强制移除(即使设备正在使用)
pvremove -ff /dev/sdf1

注意事项

  1. 数据安全
    • pvremove 仅移除 LVM 元数据,不会擦除设备上的实际数据。
    • 使用 -ff 选项时需谨慎,因为它可能破坏正在使用的设备。
  2. 设备状态
    • 确保设备未被任何卷组(VG)或逻辑卷(LV)使用。
    • 如果设备仍在使用中,先使用 vgreducepvmove 移除设备。
  3. 权限要求
    • 需要 root 权限执行。
  4. 恢复
    • 移除后如需重新使用该设备为物理卷,需重新运行 pvcreate

pvdisplay(pvs) - 查看物理卷信息

pvdisplay 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 显示物理卷(PV)的详细信息,包括空间使用情况、所属卷组(VG)、UUID 等。

语法格式

bash
pvdisplay [选项] [物理卷路径...]

选项

选项描述示例
-c以紧凑格式输出(便于脚本处理)pvdisplay -c /dev/sdb1
-m显示物理卷的物理区域(PE)映射pvdisplay -m /dev/sdb1
-s以短格式输出(仅显示摘要信息)pvdisplay -s /dev/sdb1
-v显示详细信息(包括底层设备信息)pvdisplay -v /dev/sdb1
--all显示所有物理卷(包括未使用的)pvdisplay --all
--colon以冒号分隔的格式输出(适合解析)pvdisplay --colon /dev/sdb1

经典案例

bash
# 显示所有物理卷的详细信息
pvdisplay

# 显示特定物理卷(如 /dev/sdb1)的详细信息
pvdisplay /dev/sdb1

# 以紧凑格式显示物理卷信息(适合脚本处理)
pvdisplay -c /dev/sdb1

# 显示物理卷的物理区域(PE)映射
pvdisplay -m /dev/sdb1

# 以短格式显示物理卷摘要
pvdisplay -s /dev/sdb1

关键信息解读

bash
  --- Physical volume ---
  PV Name               /dev/sdb1          # 物理卷设备路径
  VG Name               vg_data            # 所属卷组
  PV Size               100.00 GiB         # 总容量
  PE Size               4.00 MiB           # 物理扩展(PE)大小
  Total PE              25599              # PE总数
  Free PE               1024               # 剩余PE数
  Allocated PE          24575              # 已分配PE数
  PV UUID               abc123-xyz-456     # 唯一标识符

注意事项

  1. 需要 root 权限(普通用户可查看部分信息,但细节需 sudo
  2. 物理卷必须已初始化(通过 pvcreate)才会显示
  3. 相关命令对比
    • pvs:简要列表(类似 ls
    • pvdisplay:详细信息(类似 ls -l

vgcreate - 创建卷组

vgcreate 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 创建卷组(Volume Group, VG)。卷组由一个或多个物理卷(PV)组成,用于管理存储池,以便后续创建逻辑卷(LV)

语法格式

bash
vgcreate [选项] <卷组名> <物理卷路径> [物理卷路径...]

选项

选项描述示例
-s指定物理区域(PE)的大小(默认 4MB)vgcreate -s 8M vg_data /dev/sdb1
--physicalextentsize-s,指定 PE 大小vgcreate --physicalextentsize 16M vg_data /dev/sdb1
-l设置卷组的最大逻辑卷数量vgcreate -l 100 vg_data /dev/sdb1
-p设置卷组的最大物理卷数量vgcreate -p 10 vg_data /dev/sdb1
--addtag为卷组添加标签vgcreate --addtag backup vg_data /dev/sdb1
--alloc设置分配策略(normal/contiguous/cling/anywherevgcreate --alloc contiguous vg_data /dev/sdb1
--verbose显示详细输出vgcreate --verbose vg_data /dev/sdb1

经典案例

bash
# 创建一个名为 vg_data 的卷组,使用 /dev/sdb1 作为物理卷
vgcreate vg_data /dev/sdb1

# 创建卷组时指定 PE 大小为 8MB
vgcreate -s 8M vg_data /dev/sdb1

# 创建卷组并设置最大逻辑卷数量为 50
vgcreate -l 50 vg_data /dev/sdb1 /dev/sdc1

# 创建卷组并添加标签
vgcreate --addtag ssd vg_ssd /dev/nvme0n1p1

# 使用多个物理卷创建卷组
vgcreate vg_storage /dev/sdb1 /dev/sdc1 /dev/sdd1

注意事项

  1. 物理卷准备
    • 在创建卷组之前,必须先用 pvcreate 初始化物理卷。
  2. PE 大小
    • PE 大小决定了逻辑卷的最小分配单位,创建后不可更改。
  3. 卷组名称
    • 卷组名称在系统中必须唯一。
  4. 权限要求
    • 需要 root 权限执行。
  5. 扩展性
    • 卷组可以动态扩展(通过 vgextend),但某些属性(如 PE 大小)创建后不可修改。

vgextend - 扩展卷组

vgextend 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 扩展卷组(Volume Group, VG),使其包含更多的物理卷(PV)。常用于动态扩容存储池。

语法格式

bash
vgextend [选项] <卷组名> <物理卷路径> [物理卷路径...]

选项

选项描述示例
-v--verbose显示详细操作信息vgextend -v vg_data /dev/sdc1
-f--force强制添加物理卷(即使设备已初始化)vgextend -f vg_data /dev/sdc1
--alloc设置分配策略(normal/contiguous/cling/anywherevgextend --alloc contiguous vg_data /dev/sdc1
--test仅测试操作,不实际执行vgextend --test vg_data /dev/sdc1
--restoremissing恢复丢失的物理卷vgextend --restoremissing vg_data /dev/sdc1

经典案例

bash
# 将物理卷 /dev/sdc1 添加到卷组 vg_data 中
vgextend vg_data /dev/sdc1

# 强制添加物理卷(即使设备已初始化)
vgextend -f vg_data /dev/sdc1

# 添加多个物理卷到卷组
vgextend vg_data /dev/sdc1 /dev/sdd1

# 显示详细操作信息
vgextend -v vg_data /dev/sdc1

# 测试操作(不实际执行)
vgextend --test vg_data /dev/sdc1

注意事项

  1. 物理卷初始化
    • 在扩展卷组之前,必须先用 pvcreate 初始化新的物理卷。
  2. 卷组状态
    • 确保卷组未被锁定或处于活动状态。
  3. 数据安全
    • 扩展卷组不会影响现有逻辑卷的数据。
  4. 权限要求
    • 需要 root 权限执行。
  5. 恢复丢失的物理卷
    • 如果物理卷丢失但卷组仍标记为 “部分丢失”,可以使用 --restoremissing 选项尝试恢复。

vgreduce - 从卷组移除物理卷

vgreduce 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 从卷组(Volume Group, VG)中移除物理卷(PV),从而缩减卷组的存储容量。通常用于维护或替换存储设备。

语法格式

bash
vgreduce [选项] <卷组名> <物理卷路径> [物理卷路径...]

选项

选项描述示例
-a--all移除所有未使用的物理卷vgreduce -a vg_data
--removemissing移除所有丢失的物理卷vgreduce --removemissing vg_data
-v--verbose显示详细操作信息vgreduce -v vg_data /dev/sdc1
--force强制移除(即使数据可能丢失)vgreduce --force vg_data /dev/sdc1
--test仅测试操作,不实际执行vgreduce --test vg_data /dev/sdc1

经典案例

bash
# 从卷组 vg_data 中移除物理卷 /dev/sdc1
vgreduce vg_data /dev/sdc1

# 移除所有未使用的物理卷
vgreduce -a vg_data

# 强制移除物理卷(即使数据可能丢失)
vgreduce --force vg_data /dev/sdc1

# 移除所有丢失的物理卷
vgreduce --removemissing vg_data

# 显示详细操作信息
vgreduce -v vg_data /dev/sdc1

注意事项

  1. 需要 root 权限(使用 sudo 执行)。
  2. 物理卷必须未被逻辑卷使用,否则需先迁移数据(pvmove)。
  3. 移除后物理卷仍保留 LVM 元数据,需手动清除(pvremove)。
  4. 数据安全
    • 确保目标物理卷无活跃数据,否则可能导致数据丢失。
    • 生产环境建议先备份 LVM 元数据(vgcfgbackup

vgdisplay(vgs) - 查看卷组信息

vgdisplay 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 显示卷组(Volume Group, VG)的详细信息,包括空间分配、物理卷(PV)组成、逻辑卷(LV)数量等。

语法格式

bash
vgdisplay [选项] [卷组名]

选项

选项描述示例
-v--verbose显示更详细的信息(包括物理卷和逻辑卷的详细信息)vgdisplay -v vg_data
-s--short以简短格式显示信息vgdisplay -s vg_data
-C--colon以冒号分隔的格式输出(适合脚本处理)vgdisplay -C vg_data
--units指定显示单位(b/B/s/S/k/K/m/M/g/G/t/T/p/P/e/Evgdisplay --units g vg_data
--activevolumegroups仅显示活动的卷组vgdisplay --activevolumegroups

经典案例

bash
# 显示所有卷组的详细信息
vgdisplay

# 显示特定卷组(vg_data)的详细信息
vgdisplay vg_data

# 以简短格式显示卷组信息
vgdisplay -s vg_data

# 显示详细信息和物理卷、逻辑卷的详细信息
vgdisplay -v vg_data

# 以 GB 为单位显示卷组大小
vgdisplay --units g vg_data

# 仅显示活动的卷组
vgdisplay --activevolumegroups

关键信息解读

bash
 --- Volume group ---
  VG Name               vg_data            # 卷组名称
  System ID             
  Format                lvm2               # LVM版本
  VG Size               100.00 GiB         # 总容量
  PE Size               4.00 MiB           # 物理扩展(PE)大小
  Total PE              25599              # PE总数
  Alloc PE / Size       24575 / 96.00 GiB  # 已分配空间
  Free  PE / Size       1024 / 4.00 GiB    # 剩余空间
  VG UUID               xyz789-abc-123     # 唯一标识符

注意事项

  1. 需要 root 权限(普通用户可查看部分信息,但细节需 sudo
  2. 相关命令对比
    • vgs:简要列表(类似 ls
    • vgdisplay:详细信息(类似 ls -l
  3. 重要指标
    • Free PE/Size:决定能否创建/扩展逻辑卷
    • PV#:当前卷组包含的物理卷数量

vgremove - 删除卷组

vgremove 是 LVM (Logical Volume Manager) 工具集中的命令,用于从系统中删除指定的卷组(Volume Group)。该操作会永久移除卷组及其元数据,但不会影响物理卷(PV)上的实际数据。

语法格式

bash
vgremove [选项] <卷组名> [卷组名...]

选项

选项描述示例
-f--force强制删除卷组(不提示确认)vgremove -f vg_old
--test仅测试操作,不实际执行vgremove --test vg_old
-v--verbose显示详细操作信息vgremove -v vg_old

经典案例

bash
# 删除名为 vg_old 的卷组(会提示确认)
vgremove vg_old

# 强制删除卷组(不提示确认)
vgremove -f vg_old

# 删除多个卷组
vgremove vg_old1 vg_old2

# 显示详细操作信息
vgremove -v vg_old

# 测试删除操作(不实际执行)
vgremove --test vg_old

注意事项

  1. 数据安全
    • 删除卷组会同时删除其包含的所有逻辑卷,但不会清除物理卷上的数据。如果需要完全清除物理卷,需手动使用 pvremove
    • 确保卷组中没有重要数据,或已提前备份。
  2. 依赖关系
    • 如果卷组中的逻辑卷正在被使用(如挂载或作为交换分区),必须先卸载或停用。
  3. 权限要求
    • 需要 root 权限执行。
  4. 强制删除
    • -f 选项会跳过确认提示,慎用!
  5. 测试模式
    • 使用 --test 选项可以预览操作效果而不实际执行。

lvcreate - 创建逻辑卷(lv)

lvcreate 是 Linux LVM(Logical Volume Manager)的核心命令,用于 在卷组(VG)中创建逻辑卷(LV)。逻辑卷是最终可格式化和挂载的存储单元,提供比物理磁盘更灵活的存储管理方式。

语法格式

bash
lvcreate [选项] -n <逻辑卷名> -L <大小> <卷组名>

选项

选项描述示例
-L--size指定逻辑卷大小(支持单位:K/M/G/T)lvcreate -L 10G -n lv_data vg_data
-l--extents指定逻辑卷大小(以 PE 数量为单位)lvcreate -l 100%FREE -n lv_data vg_data
-n--name指定逻辑卷名称lvcreate -n lv_data -L 5G vg_data
-s--snapshot创建快照卷lvcreate -s -L 2G -n snap_data /dev/vg_data/lv_data
--type指定逻辑卷类型(linear/striped/raid 等)lvcreate --type raid1 -L 10G -n lv_mirror vg_data
-i--stripes指定条带数量(用于条带化卷)lvcreate -i 2 -L 20G -n lv_stripe vg_data
-I--stripesize指定条带大小(KB)lvcreate -i 2 -I 64 -L 20G -n lv_stripe vg_data
--thin创建精简配置卷lvcreate --thin -V 50G -n lv_thin vg_data/thinpool
-V--virtualsize指定精简卷的虚拟大小lvcreate -V 100G -n lv_thin vg_data/thinpool

经典案例

bash
lvcreate -L 20G -n lv_data vg_storage							# 创建固定大小的逻辑卷
lvcreate -l 100%FREE -n lv_backup vg_storage					# 使用剩余全部空间创建逻辑卷
# 创建精简配置的逻辑卷(动态分配空间)(需先创建 thin pool,适用于虚拟化/云存储)
lvcreate --type thin -V 50G -n lv_thin vg_storage/thin_pool
# 创建快照卷(用于备份)(为 lv_data 创建 5GB 的快照)
lvcreate -s -L 5G -n lv_snap /dev/vg_storage/lv_data
# 创建条带化逻辑卷(提高性能)(-i 2 表示跨 2 块磁盘条带化,适合 SSD 阵列)
lvcreate --type striped -i 2 -L 10G -n lv_fast vg_ssd
# 创建10GB的逻辑卷
lvcreate -L 10G -n lv_data vg_data

# 使用卷组所有剩余空间创建逻辑卷
lvcreate -l 100%FREE -n lv_rest vg_data

# 创建条带化逻辑卷(2个条带,条带大小64KB)
lvcreate -i 2 -I 64 -L 20G -n lv_stripe vg_data

# 创建RAID1镜像卷
lvcreate --type raid1 -m 1 -L 10G -n lv_mirror vg_data

# 创建精简配置卷
lvcreate -V 100G --thin -n lv_thin vg_data/thinpool

# 创建快照卷
lvcreate -s -L 2G -n snap_data /dev/vg_data/lv_data

注意事项

  1. 需要 root 权限(使用 sudo 执行)。

  2. 卷组必须有足够空间,否则创建失败。

  3. 创建后需格式化才能使用:

    bash
    mkfs.ext4 /dev/vg_storage/lv_data
  4. 挂载逻辑卷

    bash
    mount /dev/vg_storage/lv_data /mnt/data
  5. 永久挂载需在 /etc/fstab 添加条目。

警告:

  • 逻辑卷删除后数据不可恢复,操作前请确认!
  • 生产环境建议先测试快照功能确保备份有效。

lvremove - 删除逻辑卷

lvremove 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 删除逻辑卷(Logical Volume, LV),释放其占用的存储空间。适用于清理不再需要的逻辑卷或重新规划存储结构。

语法格式

bash
lvremove [选项] <逻辑卷路径> [逻辑卷路径...]

选项

选项描述示例
-f--force强制删除(跳过确认提示)lvremove -f /dev/vg_data/lv_old
--test仅测试操作,不实际执行lvremove --test /dev/vg_data/lv_old
-v--verbose显示详细操作信息lvremove -v /dev/vg_data/lv_old
-y对所有确认提示回答 "yes"lvremove -y /dev/vg_data/lv_old

经典案例

bash
# 删除单个逻辑卷(删除 vg_data 卷组中的 lv_old 逻辑卷) 
lvremove /dev/vg_data/lv_old
# 强制删除(不提示确认)(适用于脚本自动化操作)
lvremove -f /dev/vg_storage/lv_temp
# 删除多个逻辑卷(批量删除多个逻辑卷)
lvremove /dev/vg_app/lv_logs /dev/vg_app/lv_cache
# 删除所有空闲逻辑卷​(清理未激活的逻辑卷)
lvremove --select 'lv_active=0'

注意事项

  1. 需要 root 权限(使用 sudo 执行)。

  2. 数据不可恢复:删除前请确认逻辑卷无重要数据。

  3. 逻辑卷必须未挂载

    bash
    umount /dev/vg_data/lv_old  # 先卸载
    lvremove /dev/vg_data/lv_old
  4. 快照卷依赖:若逻辑卷有快照,需先删除快照。

  5. 生产环境建议

    • 提前备份数据
    • 在业务低峰期操作

lvextend - 扩容逻辑卷

lvextend 是 Linux LVM(Logical Volume Manager)的核心命令,用于 动态扩展逻辑卷(LV)的容量。它允许在不中断服务的情况下增加存储空间,是 LVM 最强大的特性之一。

语法格式

bash
lvextend [选项] <逻辑卷路径> [大小]

选项

选项描述示例
-L--size指定扩展后的逻辑卷大小(支持单位:K/M/G/T)lvextend -L +5G /dev/vg_data/lv_data
-l--extents指定扩展的逻辑卷大小(以 PE 数量为单位)lvextend -l +100%FREE /dev/vg_data/lv_data
-r--resizefs同时调整文件系统大小(支持 ext2/3/4, XFS 等)lvextend -r -L +5G /dev/vg_data/lv_data
--test仅测试操作,不实际执行lvextend --test -L +5G /dev/vg_data/lv_data
-v--verbose显示详细操作信息lvextend -v -L +5G /dev/vg_data/lv_data
-f强制扩展,不提示lvextend -f +5G /dev/vg_data/lv_data

经典案例

bash
# 扩展逻辑卷并自动调整文件系统(推荐)(增加 5GB 空间并自动扩展 ext4/xfs 文件系统)
lvextend -r -L +5G /dev/vg_data/lv_files
# 使用全部剩余空间扩展逻辑卷​(最大化利用卷组剩余空间)
lvextend -l +100%FREE /dev/vg_storage/lv_archive
# 指定扩展后的总大小(而非增量)(将逻辑卷扩展到 精确的 30GB)
lvextend -L 30G /dev/vg_app/lv_database
# 扩展后手动调整文件系统(适用于旧系统)
sudo lvextend -L +8G /dev/vg_logs/lv_nginx  # 先扩展LV
sudo resize2fs /dev/vg_logs/lv_nginx        # 调整ext4
# 或对于XFS:
sudo xfs_growfs /mnt/nginx_logs
# 扩展逻辑卷并增加5GB空间
lvextend -L +5G /dev/vg_data/lv_data

# 使用卷组所有剩余空间扩展逻辑卷
lvextend -l +100%FREE /dev/vg_data/lv_data

# 扩展逻辑卷并自动调整文件系统大小(适用于 ext4/XFS)
lvextend -r -L +5G /dev/vg_data/lv_data

# 测试扩展操作(不实际执行)
lvextend --test -L +5G /dev/vg_data/lv_data

# 显示详细操作信息
lvextend -v -L +5G /dev/vg_data/lv_data

注意事项

  1. 卷组可用空间
    • 确保卷组(Volume Group)有足够的可用空间(使用 vgdisplayvgs 检查)。
  2. 文件系统调整
    • 如果逻辑卷包含文件系统,建议使用 -r 选项自动调整文件系统大小。
    • 对于不支持在线调整的文件系统(如某些旧版 ext2),可能需要先卸载。
  3. 快照卷限制
    • 不能直接扩展快照卷(Snapshot Volume),需先删除快照。
  4. 在线扩展
    • 大多数现代文件系统(如 ext4、XFS)支持在线扩展,无需卸载。
  5. 备份数据
    • 虽然 lvextend 是安全的,但操作前仍建议备份重要数据。

lvresize - 动态调整逻辑卷大小

lvresize 是 Linux LVM(Logical Volume Manager)的核心命令,用于 动态调整逻辑卷(LV)的容量,支持 扩展收缩 操作。相比 lvextendlvreduce,它提供了更统一的调整方式。

语法格式

bash
lvresize [选项] <逻辑卷路径> [大小]

选项

选项描述示例
-L--size指定调整后的逻辑卷大小(支持单位:K/M/G/T)lvresize -L 20G /dev/vg_data/lv_data
-l--extents指定调整的逻辑卷大小(以 PE 数量为单位)lvresize -l +50 /dev/vg_data/lv_data
-r--resizefs同时调整文件系统大小(支持 ext2/3/4, XFS 等)lvresize -r -L 15G /dev/vg_data/lv_data
--test仅测试操作,不实际执行lvresize --test -L 15G /dev/vg_data/lv_data
-v--verbose显示详细操作信息lvresize -v -L 15G /dev/vg_data/lv_data
-f--force强制调整(跳过某些检查)lvresize -f -L 10G /dev/vg_data/lv_data

经典案例

bash
 # 扩展逻辑卷并自动调整文件系统(推荐)(增加 10GB 并自动扩展 ext4/xfs 文件系统)
 lvresize -r -L +10G /dev/vg_data/lv_files
 
 # 收缩逻辑卷(需先收缩文件系统)
 # 先缩小文件系统(ext4示例):
sudo umount /mnt/data
sudo e2fsck -f /dev/vg_data/lv_files  # 强制检查
sudo resize2fs /dev/vg_data/lv_files 15G  # 先缩文件系统
sudo lvresize -L 15G /dev/vg_data/lv_files  # 再缩LV
sudo mount /dev/vg_data/lv_files /mnt/data

# 使用百分比调整空间(占用卷组 80% 的剩余空间)
lvresize -l +80%FREE -r /dev/vg_storage/lv_media

注意事项

  1. 缩小逻辑卷
    • 缩小逻辑卷前,必须先缩小文件系统,否则可能导致数据丢失。
    • 对于 ext2/3/4 文件系统,使用 resize2fs 调整大小。
    • 对于 XFS 文件系统,XFS 不支持缩小,需备份数据后重新创建。
  2. 文件系统调整
    • 使用 -r 选项可自动调整文件系统大小(仅适用于支持的文件系统)。
    • 如果不使用 -r,需手动调整文件系统大小。
  3. 卷组可用空间
    • 扩展逻辑卷时,确保卷组有足够的可用空间(使用 vgdisplayvgs 检查)。
  4. 数据备份
    • 缩小逻辑卷或调整文件系统时,建议先备份重要数据。
  5. 快照卷限制
    • 不能直接调整快照卷(Snapshot Volume)的大小。

严重警告:

  • 收缩操作不当会导致数据丢失!必须:
    1. 备份数据
    2. 确保新尺寸大于已用空间
    3. 在非生产环境测试

lvdisplay(lvs) - 查看逻辑卷信息

lvdisplay 是 Linux LVM(Logical Volume Manager)工具的一部分,用于 显示逻辑卷(Logical Volume, LV)的详细信息,包括容量、路径、所属卷组(VG)、快照状态等。

语法格式

bash
lvdisplay [选项] [逻辑卷路径...]

选项

选项描述示例
-a--all显示所有逻辑卷(包括非活动状态)lvdisplay -a
-c--colon以冒号分隔的格式输出(适合脚本解析)lvdisplay -c /dev/vg_data/lv_data
-m--maps显示逻辑卷的物理卷映射信息lvdisplay -m /dev/vg_data/lv_data
-v--verbose显示更详细的信息lvdisplay -v /dev/vg_data/lv_data
--help显示帮助信息lvdisplay --help

经典案例

bash
# 显示所有逻辑卷的详细信息
lvdisplay

# 显示特定逻辑卷的详细信息
lvdisplay /dev/vg_data/lv_data

# 显示所有逻辑卷(包括非活动状态)
lvdisplay -a

# 以冒号分隔的格式输出(适合脚本解析)
lvdisplay -c /dev/vg_data/lv_data

# 显示逻辑卷的物理卷映射信息
lvdisplay -m /dev/vg_data/lv_data

关键信息解读

bash
  --- Logical volume ---
  LV Path                /dev/vg_data/lv_files  # 逻辑卷设备路径
  LV Name                lv_files               # 逻辑卷名称
  VG Name                vg_data                # 所属卷组
  LV UUID                xyz123-456-789         # 唯一标识符
  LV Write Access        read/write             # 读写权限
  LV Creation host       server01               # 创建主机名
  LV Status              available              # 状态(active/inactive)
  LV Size                50.00 GiB              # 逻辑卷容量
  Current LE             12800                  # 逻辑扩展块数量
  Segments               1                      # 数据段数量
  Allocation             inherit                # 分配策略
  Read ahead sectors     auto                   # 预读设置
  Block device           253:2                  # 设备映射标识

注意事项

  1. 需要 root 权限(普通用户可查看部分信息,但细节需 sudo
  2. 相关命令对比
    • lvs:简要列表(类似 ls
    • lvdisplay:详细信息(类似 ls -l
  3. 重要状态指标
    • LV Status:确保为 available(若为 inactive 需先激活)
    • Segments:大于1表示数据跨多个物理卷