Skip to content

df - 显示磁盘空间

df(disk free)命令用于显示文件系统的磁盘空间使用情况,包括总容量、已用空间、可用空间和挂载点等信息。该命令是Linux系统管理员监控磁盘使用情况的基础工具。

语法格式

bash
df [选项] [文件或目录]

选项

选项描述示例
-a显示所有文件系统,包括虚拟文件系统df -a
-h以人类可读格式显示(自动转换单位)df -h
-H类似-h但以1000为换算单位(非1024)df -H
-i显示inode信息而非块使用情况df -i
-k以KB为单位显示(默认)df -k
-l只显示本地文件系统df -l
-T显示文件系统类型df -T
-t <类型>只显示指定类型的文件系统df -t ext4
-x <类型>排除指定类型的文件系统df -x tmpfs

经典案例

bash
df						# 查看所有文件系统使用情况(基本用法)
df -h					# 以易读格式显示(自动转换GB/MB)
df -T					# 显示文件系统类型
df -h /home				# 查看指定目录所在分区的空间
df -t ext4				# 只显示ext4文件系统的使用情况
df -i					# 查看inode使用情况
df -x tmpfs				# 排除tmpfs文件系统

注意事项

  1. 100%使用率的文件系统可能导致系统问题
  2. 某些特殊文件系统(如proc、sysfs)显示为0是正常现象
  3. NFS等网络文件系统可能因网络问题显示不准确
  4. 使用 -h 选项时,1K=1024字节

输出字段解释

  • Filesystem: 设备或分区名称
  • Size: 总容量
  • Used: 已用空间
  • Avail: 可用空间
  • Use%: 使用百分比
  • Mounted on: 挂载点

常见问题排查

  1. 空间不足但df显示有空间:可能是inode耗尽,使用 df -i 检查
  2. 删除文件后空间未释放:可能有进程仍在使用,需重启服务或使用 lsof 查找

du - 统计目录磁盘用量

  • 递归统计目录及其子目录的磁盘用量
  • 支持文件/目录粒度的空间分析
  • 提供原始块计数与人类可读格式

语法格式

bash
du [选项] [文件/目录...]

选项

选项描述示例
-a显示所有文件的统计(默认只显示目录)du -a
-h以人类可读格式显示(KB/MB/GB)du -h
-s只显示总用量(不显示子目录详情)du -sh
-c显示总计(配合-s使用)du -sch *
--max-depth=N设置统计深度du -h --max-depth=1
--exclude=PATTERN排除匹配模式的文件du --exclude='*.log'
-b以字节为单位显示du -b
-k以KB为单位显示du -k
-m以MB为单位显示du -m
--time显示最后修改时间du --time
--apparent-size显示表面大小而非实际占用du --apparent-size

经典案例

bash
# 以人类可读的格式显示 /var 目录的总大小
du -sh /var

# 显示 /home 目录下每个子目录的大小(仅一层深度)
du -h --max-depth=1 /home

# 计算 /var/log 目录的总大小,并显示总和
du -ch /var/log

# 排除所有 .log 文件后计算 /var 目录的大小
du -h --exclude="*.log" /var

注意事项

  1. 权限要求du 需要读取权限才能计算文件或目录的大小。如果权限不足,可能会跳过某些文件或目录。
  2. 符号链接:默认情况下,du 会统计符号链接指向的文件或目录的大小。可以使用 -L 选项强制跟踪符号链接。
  3. 隐藏文件du 会统计隐藏文件(以 . 开头的文件)的磁盘使用情况。
  4. 系统性能:递归计算大型目录可能会消耗较多系统资源,建议在非高峰期使用。

mount - 挂载文件系统

mount命令用于将存储设备或网络共享挂载到Linux文件系统的指定目录。这是访问磁盘分区、ISO镜像、网络存储等资源的关键操作。

语法格式

bash
mount [-选项] 设备 挂载点
mount [-选项] -t 类型 设备 挂载点
mount -a [-选项]

选项

选项描述示例
-t <类型>指定文件系统类型mount -t ext4
-o <选项>挂载选项(可多个,逗号分隔)mount -o ro,noexec
-a挂载/etc/fstab中的所有文件系统mount -a
-n不写入/etc/mtab文件mount -n
-r只读挂载(等同于-o ro)mount -r
-w读写挂载(默认)mount -w
-v显示详细输出mount -v
-l显示已挂载的卷标mount -l
-f模拟挂载(不实际执行)mount -f
-U <UUID>通过UUID挂载mount -U 123e4567...
-L <卷标>通过卷标挂载mount -L MYDISK

常用挂载选项(-o参数)

选项描述
ro/rw只读/读写
noexec禁止执行程序
nosuid忽略SUID/SGID位
nodev不解释设备文件
remount重新挂载已挂载的文件系统
defaults使用默认选项(rw,suid,dev,exec,auto,nouser,async)

经典案例

bash
mount /dev/sdb1 /mnt/data					# 挂载普通磁盘分区
mount -o loop ubuntu.iso /mnt/iso			# 挂载ISO镜像文件
mount -t nfs 192.168.1.100:/shared /mnt/nfs	# 挂载NFS网络共享
mount -o ro /dev/sdc1 /backup				# 以只读方式挂载
mount -o remount,rw /						# 重新挂载已挂载的文件系统
mount -l									# 查看所有挂载点

注意事项

  1. 只有 root 用户或具有 sudo 权限的用户可以执行 mount 命令
  2. 挂载前确保挂载点目录已存在
  3. 使用 umount 命令卸载文件系统
  4. 长期挂载建议写入 /etc/fstab 配置文件
  5. 危险操作:不要随意挂载未知来源的设备

常见文件系统类型

  • ext4/ext3/ext2: Linux 原生文件系统
  • ntfs/vfat: Windows 文件系统
  • xfs: 高性能文件系统
  • nfs/cifs: 网络文件系统
  • iso9660: CD/DVD 镜像

umount - 卸载挂载文件系统

umount(unmount)命令用于卸载已挂载的文件系统,是 mount 命令的逆操作。正确卸载文件系统可以确保数据完整性和系统稳定性。

语法格式

bash
umount [选项] <挂载点|设备>

选项

选项描述示例
-v显示详细执行过程umount -v /mnt/usb
-n不更新/etc/mtab文件umount -n /dev/sdb1
-r若卸载失败,尝试以只读方式重新挂载umount -r /mnt/cdrom
-d同时卸载关联的loop设备umount -d /mnt/iso
-f强制卸载(可能损坏数据)umount -f /mnt/nfs
-l延迟卸载(lazy unmount)umount -l /mnt/tmp
-t <类型>只卸载指定类型的文件系统umount -t nfs -a
-a卸载/etc/mtab中的所有文件系统umount -a

经典案例

bash
umount /mnt/usb				# 通过挂载点卸载
umount /dev/sdb1			# 通过设备路径卸载
umount -a -t nfs			# 卸载所有NFS文件系统
umount -f /mnt/cdrom		# 强制卸载(当设备忙时)
umount -l /mnt/network		# 延迟卸载(允许进程完成操作)
umount -v /mnt/backup		# 卸载并显示详细信息

注意事项

  1. 卸载前确保没有进程正在使用挂载点(使用 lsof /挂载点fuser -vm /挂载点 检查)
  2. 重要数据应先同步:sync 命令可确保数据写入磁盘
  3. GUI环境下可能需要先关闭文件管理器窗口
  4. USB设备卸载后指示灯可能还会亮,等待几秒再拔出
  5. 强制卸载(-f)可能导致数据丢失,应作为最后手段

常见错误处理

  1. 设备忙无法卸载

    bash
    # 查找占用进程
    fuser -vm /mnt/usb
    # 或
    lsof /mnt/usb
    
    # 终止占用进程(谨慎操作)
    fuser -km /mnt/usb
  2. 卸载网络共享(NFS/CIFS)超时

    bash
    umount -l /mnt/nfs  # 延迟卸载
  3. 卸载后仍显示在挂载列表

    bash
    # 可能是 /etc/mtab 不同步
    umount -n /mnt/temp

fdisk - 磁盘分区

fdisk 是 Linux 下经典的磁盘分区工具,用于创建、删除、调整和管理磁盘分区表(支持 MBR 格式)。需 root 权限运行。

语法格式

bash
fdisk [选项] <设备>
fdisk -l [设备]

选项

选项描述示例
-l列出分区表信息fdisk -l
-s <分区>显示分区大小(块数)fdisk -s /dev/sda1
-u显示/输入时使用扇区而非柱面fdisk -u /dev/sdb
-b <大小>设置扇区大小(512/1024/2048/4096)fdisk -b 4096 /dev/sdc
-c关闭DOS兼容模式fdisk -c /dev/sdd
-C <柱面>指定柱面数fdisk -C 1024 /dev/sde
-H <磁头>指定磁头数fdisk -H 255 /dev/sdf
-S <扇区>指定每磁道扇区数fdisk -S 63 /dev/sdg

交互命令(进入fdisk后使用)

命令描述
m显示帮助菜单
p打印分区表
n新建分区
d删除分区
t更改分区类型
w写入并退出
q不保存退出
l列出已知分区类型
v验证分区表
g创建新的GPT分区表
o创建新的DOS分区表

经典案例

bash
# 查看所有磁盘分区信息
fdisk -l

# 查看指定磁盘信息
fdisk -l /dev/sda

# 交互式分区操作
fdisk /dev/sdb
# 在交互界面中按序操作:
# n → p → 1 → 回车 → +10G → w

# 创建交换分区
fdisk /dev/sdc
# n → p → 回车 → 回车 → t → 82 → w

# 将分区类型改为Linux LVM
fdisk /dev/sdd
# t → 31 → w

# 创建GPT分区表
fdisk /dev/nvme0n1
# g → n → 回车 → 回车 → +20G → w

mkfs - 创建Linux文件系统

mkfs(Make Filesystem)是 Linux 下用于创建文件系统的命令行工具,实际是不同文件系统格式化工具的前端命令(如 mkfs.ext4mkfs.xfs 等)。

语法格式

bash
mkfs [选项] [-t 文件系统类型] [文件系统选项] 设备 [大小]

选项

选项描述示例
-t fstype指定要创建的文件系统类型mkfs -t ext4 /dev/sdb1
-V详细模式,显示执行的命令mkfs -V -t xfs /dev/sdc1
-c在创建文件系统前检查坏块mkfs -c /dev/sdd1
-l filename从文件读取坏块列表mkfs -l badblocks.txt /dev/sde1
-v显示版本信息mkfs -v
-h显示帮助信息mkfs -h

文件系统专用工具

bash
mkfs.ext4 /dev/sdb1      # 创建ext4文件系统
mkfs.xfs /dev/sdb2       # 创建XFS文件系统
mkfs.ntfs /dev/sdc1      # 创建NTFS文件系统

经典案例

bash
# 在/dev/sdb1上创建ext4文件系统
mkfs -t ext4 /dev/sdb1

# 创建XFS文件系统并检查坏块
mkfs -t xfs -c /dev/sdc1

# 创建带卷标的分区
mkfs -t ext4 -L "DATA_DISK" /dev/sdd1

# 创建FAT32文件系统(需安装dosfstools)
mkfs -t vfat -F 32 /dev/sde1

注意事项

  1. 执行mkfs会永久擦除设备上的所有数据
  2. 需要root权限或sudo执行
  3. 不同文件系统类型需要对应的工具包(如xfsprogs、e2fsprogs等)
  4. 建议先使用fdisk或parted确认分区正确性
  5. 对于生产环境,建议使用-c选项检查坏块
  6. 创建文件系统后,可以使用tune2fs(ext系列)或xfs_admin(XFS)调整参数

扩展知识

  • 使用 blkid 查看已格式化的文件系统信息
  • 通过 tune2fs(ext系列)或 xfs_admin(XFS)调整文件系统参数
  • 建议先用 lsblk 确认设备名称再操作

blkid - 查看块设备属性

blkid(Block ID)是 Linux 下用于查看块设备(磁盘/分区)属性信息的命令行工具,可显示文件系统类型、UUID、LABEL 等关键信息,常用于磁盘管理和 /etc/fstab 配置。

语法结构

bash
blkid [选项] [设备名]

选项

选项描述示例
-c cachefile指定缓存文件blkid -c /dev/null
-g重新生成UUID缓存blkid -g
-o format指定输出格式blkid -o list
-s tag显示特定标签blkid -s UUID
-p低级别超级块探测blkid -p /dev/sda1
-i显示额外信息blkid -i /dev/sdb1
-U uuid通过UUID查找设备blkid -U "3e6b...a12"
-L label通过卷标查找设备blkid -L "ROOT"

经典案例

bash
# 显示所有块设备信息
blkid

# 显示特定设备信息
blkid /dev/sda1

# 只显示UUID信息
blkid -s UUID /dev/sdb1

# 使用列表格式输出
blkid -o list

# 通过UUID查找设备
blkid -U "3e6b9dc6-01eb-4b75-a12a-12dda4c6f54a"

# 显示完整探测信息(包括未挂载设备)
blkid -p -o udev /dev/sdc*

注意事项

  1. 需要root权限:普通用户可能无法获取完整信息
  2. 缓存机制:首次执行会扫描设备,后续使用缓存(-c /dev/null 强制刷新)
  3. LVM/RAID设备:需先激活逻辑卷才能正确识别
  4. NTFS兼容性:Windows双系统环境下可能需要 ntfs-3g 驱动

重新加载分区:分区后不显示使用partprobe /dev/sdb重新加载

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

free - 显示内存使用情况

free 命令用于显示系统的物理内存和交换空间使用情况,包括总内存、已用内存、空闲内存等信息。

语法格式

bash
free [选项]

选项

选项描述示例
-b以字节为单位显示内存使用情况free -b
-k以 KB 为单位显示(默认)free -k
-m以 MB 为单位显示free -m
-g以 GB 为单位显示free -g
-h以人类可读的格式显示(自动选择单位)free -h
-s 秒数每隔指定秒数刷新显示free -s 5
-c 次数-s 配合使用,指定刷新次数free -s 2 -c 10
-t显示总计行(物理内存 + swap)free -t
--help显示帮助信息free --help
--version显示版本信息free --version

输出字段说明

              total        used        free      shared  buff/cache   available
Mem:        8169348     2345232     3412345      123456     2411771     5123456
Swap:       2097148           0     2097148
  • total: 总内存量
  • used: 已使用内存(包括buffers/cache)
  • free: 完全空闲内存
  • shared: 共享内存
  • buff/cache: 缓存和缓冲区使用的内存
  • available: 估计可用于启动新应用的内存

使用示例

bash
# 以人类可读的格式显示内存使用情况
free -h

# 每隔 3 秒刷新一次,共刷新 5 次
free -s 3 -c 5

# 显示总计行(物理内存 + swap)
free -t

# 以 MB 为单位显示内存使用情况
free -m

注意事项

  1. Linux会尽可能利用空闲内存做缓存,因此看到"free"很少是正常现象
  2. 关注"available"字段更准确反映可用内存
  3. 交换空间(swap)使用过多可能表明物理内存不足
  4. 在嵌入式系统或容器环境中,某些字段可能显示为0

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表示数据跨多个物理卷

resize2fs - 调整 ext2/ext3/ext4 文件系统大小

resize2fs 是 Linux 系统中用于 调整 ext2/ext3/ext4 文件系统大小 的命令,通常与 LVM 的 lvextendlvresize 配合使用。它可以在线(已挂载)或离线(未挂载)状态下扩展文件系统,但 仅支持收缩未挂载的文件系统

语法格式

bash
resize2fs [选项] 设备 [新大小]

选项

选项描述示例
-d启用调试模式resize2fs -d /dev/sda1
-f强制调整大小,即使文件系统看起来有问题resize2fs -f /dev/sda1
-p显示调整进度的百分比resize2fs -p /dev/sda1
-M将文件系统缩小到最小可能的大小resize2fs -M /dev/sda1
-P打印文件系统的最小可能大小resize2fs -P /dev/sda1
-F刷新文件系统的缓冲区resize2fs -F /dev/sda1

经典案例

bash
lvextend -L +10G /dev/vg_data/lv_files	# 先扩展LV(假设已用 lvextend)
resize2fs /dev/vg_data/lv_files 10G		# 再调整分区的文件系统大小调整为10GB
resize2fs -M /dev/sdb2					# 收缩文件系统(需先卸载)

注意事项

  1. 必须先扩展底层存储(LVM/分区)
  2. 收缩操作必须卸载文件系统
  3. 对正在使用的文件系统操作可能导致数据损坏
  4. 建议操作前使用 e2fsck -f 检查文件系统

xfs_growfs - 在线调整xfs格式文件大小

xfs_growfs 是 Linux 系统中用于 扩展 XFS 文件系统 的命令,适用于动态增加存储容量。与 resize2fs(用于 ext4)不同,XFS 不支持收缩,只能扩容。

语法格式

bash
xfs_growfs [选项] 挂载点|设备

选项

选项描述示例
-d扩展文件系统到设备的最大可用空间xfs_growfs -d /mnt/data
-D size将文件系统扩展到指定大小(单位:块)xfs_growfs -D 1000000 /dev/sda1
-L启用日志记录xfs_growfs -L /mnt/data
-n仅显示操作信息,不实际执行扩展xfs_growfs -n /mnt/data
-V显示版本信息xfs_growfs -V

经典案例

bash
# 先扩展底层LV(假设已用 lvextend)
sudo lvextend -L +20G /dev/vg_data/lv_xfs
# 再扩展文件系统
sudo xfs_growfs /mnt/xfs_data
# 将文件系统扩展到指定大小(块为单位)
xfs_growfs -D 1000000 /dev/sda1

注意事项

  1. 仅支持扩展:XFS 无法收缩!如需缩小必须备份→重建→恢复
  2. 必须挂载状态:与 ext4 不同,XFS 扩展时要求文件系统已挂载
  3. 底层存储需先扩容
    • LVM 逻辑卷:先用 lvextend
    • 普通分区:用 parted 调整分区表后生效
  4. 无数据风险:扩展操作安全,但需确保存储设备稳定

e2fsck - 检查和修复ext文件系统

2fsck(ext2/3/4 Filesystem Check)是 Linux 系统中用于 检查和修复 ext2/ext3/ext4 文件系统 的工具。它类似于 Windows 的 chkdsk,用于检测文件系统错误并尝试修复。

语法格式

bash
e2fsck [选项] 设备文件

选项

选项描述示例
-p自动修复文件系统中的问题(不提示用户)e2fsck -p /dev/sda1
-f强制检查,即使文件系统看起来是干净的e2fsck -f /dev/sda1
-y对所有问题回答 “是”e2fsck -y /dev/sda1
-n对所有问题回答 “否”(仅显示问题,不修复)e2fsck -n /dev/sda1
-c检查坏块e2fsck -c /dev/sda1
-v显示详细输出e2fsck -v /dev/sda1
-b superblock使用备用超级块e2fsck -b 8193 /dev/sda1

经典案例

bash
e2fsck -p /dev/sdb1					# 自动修复文件系统(推荐)
e2fsck -f /dev/vg_data/lv_files		# 强制检查并修复(交互式)
e2fsck -n /dev/sdc1					# 仅检查但不修复
e2fsck -c /dev/sdd1					# 检查坏块(适用于老旧硬盘)-c 会扫描坏道,耗时较长
e2fsck -b 32768 /dev/sda1			# 使用备用超级块修复(主超级块损坏时)​(32768 是常见的备用超级块位置)

注意事项

  1. 必须卸载文件系统

    bash
    umount /dev/sdb1  # 先卸载
    e2fsck /dev/sdb1  # 再检查

    若无法卸载(如根分区),需使用 Live CD/USB 启动后操作。

  2. 系统启动时自动运行

    • /etc/fstabpass 值非0,系统会在启动时自动运行 fsck
  3. 风险提示

    • -y 可能强制修复导致数据丢失,慎用!
    • 重要数据建议先备份再修复。
  4. XFS 文件系统

    • 使用 xfs_repair 而非 e2fsck

xfs_repair - XFS 文件系统修复工具

xfs_repair 是 Linux 系统中用于 检查和修复 XFS 文件系统 的工具。与 e2fsck(用于 ext4)不同,XFS 是一个日志型文件系统,修复方式更加高效,但 只能在未挂载状态下运行

语法格式

bash
xfs_repair [选项] 设备文件

选项

选项描述示例
-n仅检查文件系统,不进行修复xfs_repair -n /dev/sda1
-d修复只读挂载的文件系统(危险,慎用)xfs_repair -d /dev/sda1
-L强制清空日志(会丢失未提交的数据)xfs_repair -L /dev/sda1
-v显示详细输出xfs_repair -v /dev/sda1
-f强制修复,即使设备看起来没问题xfs_repair -f /dev/sda1
-m指定内存限制(单位:MB)xfs_repair -m 512 /dev/sda1

经典案例

bash
xfs_repair /dev/sdb1   					# 执行修复
xfs_repair -n /dev/vg_data/lv_xfs		# 仅检查不修复(安全模式)​
xfs_repair -L /dev/sda2					# 强制清空日志(修复启动失败
xfs_repair -d /dev/sdc1					# 紧急修复(超级块损坏时)​
xfs_repair -c subopt=1 /dev/sdd1		# 检查并优化大型文件系统​

注意事项

  1. 文件系统状态xfs_repair 必须在文件系统未挂载时运行。如果文件系统已挂载,可能会导致数据损坏。
  2. 日志清空-L 选项会强制清空日志,可能导致未提交的数据丢失,仅在必要时使用。
  3. 备份数据:在运行 xfs_repair 之前,建议备份重要数据,以防修复过程中出现意外。
  4. 内存限制:对于大型文件系统,可以使用 -m 选项限制内存使用,避免系统资源耗尽。
  5. 只读修复-d 选项允许在只读挂载的文件系统上运行修复,但可能导致数据不一致,慎用。

mdadm - 磁盘阵列工具

mdadm 是 Linux 系统中用于管理软件 RAID(独立磁盘冗余阵列)的工具。它可以创建、管理、监控和修复 RAID 设备,支持 RAID 0、1、4、5、6、10 等多种级别。mdadm 提供了灵活的配置选项,是 Linux 服务器存储管理的核心工具之一。

语法格式

bash
mdadm [模式] [选项] <RAID设备> [成员设备]

主要模式

模式描述
--create (-C)创建新 RAID 阵列
--assemble (-A)装配已存在的阵列
--manage (-F)管理运行中的阵列
--monitor (-F)监控阵列状态
--build (-B)创建没有超级块的旧式阵列
--misc (-Q)查询或报告设备信息

选项

选项作用示例
-A--assemble启动 RAID 阵列mdadm -A /dev/mdX /dev/sd[ab]1
-C--create创建 RAID 磁盘阵列组mdadm -Cv -l1 /dev/md0 /dev/sd[ab]1
-c--chunk设置数据块大小mdadm -C /dev/md0 -l 5 -c 256 -n 3 /dev/sd[abc]1
-l--level设置 RAID 设备级别mdadm -C -l1 /dev/md0 /dev/sd[ab]1
-n--raid-devices设置 RAID 中活动设备的数量mdadm -C -n2 /dev/md0 /dev/sd[ab]1
-x--spare-devices设置初始 RAID 设备的备用成员数量mdadm -C -x1 /dev/md0 /dev/sd[abc]1
-a--add向 RAID 中添加新设备mdadm /dev/md0 -a /dev/sdc1
-G--grow设置RAID设备大小mdadm -G /dev/md0 -n 4 -a/dev/sdd1
-r--remove将指定成员移出 RAID 设备mdadm /dev/md0 -r /dev/sdb1
-f--fail将指定 RAID 设备成员设置为故障模式mdadm /dev/md0 -f /dev/sdb1
-D--detail显示 RAID 设备的详细信息mdadm -D /dev/md0
-s--scan扫描配置文件mdadm -Ds
-Q--query查看 RAID 设备的简要信息mdadm -Q/dev/sda1
-E--examine显示 RAID 设备成员的详细信息mdadm -E /dev/sda1
-v--verbose显示详细操作信息mdadm -Cv -l1 /dev/md0 /dev/sd[ab]1
-S--stop停用一个 RAID 设备,并释放所有资源mdadm -S /dev/md0
--zero-superblock使用零覆盖 RAID 设备中的超级块,可清除磁盘上的 RAID 信息mdadm --zero-superblock /dev/sdb1
--size指定 RAID 阵列中每个磁盘的大小,通常用于创建或调整 RAID 阵列时mdadm -C /dev/md0 -l 1 --size=500000 -n 2 /dev/sda1 /dev/sdb1

经典案例

bash
# 创建 RAID5 阵列
# 使用 3 块活动盘(sdb/sdc/sdd)和 1 块热备盘(sde)阵列设备名为 /dev/md0
mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/sd[bcde]

# 查看阵列状态
mdadm -D /dev/md0
cat /proc/mdstat

# 创建raid1指定raid大小为10G
mdadm -C /dev/mdX -l 1 -n 2 --size=10G /dev/sda1 /dev/sdb1

# raid扩容最大空间
mdadm -G /dev/md10 -n 5 --size=max

案例 1:创建 RAID1 阵列并挂载使用

bash
# 假设系统中有两块新的磁盘 /dev/sdb 和 /dev/sdc。首先,创建 RAID1 阵列:
mdadm -Cv /dev/md1 -n 2 -l 1 /dev/sdb /dev/sdc
# 这里创建了一个名为 /dev/md1 的 RAID1 设备,使用 2 个磁盘。
# 然后,格式化 RAID 设备为 ext4 文件系统:
mkfs.ext4 /dev/md1
# 接着,创建挂载点并挂载:
mkdir /mnt/raid1
mount /dev/md1 /mnt/raid1
# 最后,为了在系统重启后自动挂载,需要编辑 /etc/fstab 文件,添加一行:
/dev/md1 /mnt/raid1 ext4 defaults 0 2

案例 2:创建 RAID5 阵列并添加热备盘

bash
# 假设系统中有三块磁盘 /dev/sdb、/dev/sdc、/dev/sdd,并且还有一块备用磁盘 /dev/sde。
# 创建 RAID5 阵列:
mdadm -Cv /dev/md5 -n 3 -l 5 /dev/sdb /dev/sdc /dev/sdd
# 创建了一个名为 /dev/md5 的 RAID5 阵列,使用 3 个磁盘。
# 添加热备盘:
mdadm -a /dev/md5 /dev/sde
# 将备用磁盘添加到 RAID5 阵列中。当有磁盘故障时,热备盘会自动替换故障磁盘,保证 RAID 阵列的正常运行。

案例 3:查看 RAID 阵列状态并移除故障磁盘

bash
# 查看 RAID 阵列状态:
mdadm -D /dev/md0
# 这个命令会显示 RAID 设备 /dev/md0 的详细信息,包括成员磁盘的状态等。
# 假设发现 /dev/sdb 磁盘出现故障,将其设置为故障模式并移除:
mdadm /dev/md0 -f /dev/sdb
mdadm /dev/md0 -r /dev/sdb
# 先将磁盘设置为故障模式,然后再将其从 RAID 设备中移除。

# 清除磁盘上的 RAID 超级块信息
mdadm --zero-superblock /dev/sdX

注意事项

  1. 数据备份:创建或修改 RAID 阵列前应备份重要数据
  2. 设备状态:确保成员设备没有挂载或使用
  3. 超级块:现代 mdadm 默认会创建超级块(v1.2),包含阵列元数据
  4. 监控:建议设置监控(通过 cron 或 mdadm --monitor)
  5. 配置文件:创建后应保存配置到 /etc/mdadm/mdadm.conf/etc/mdadm.conf
  6. 性能考虑:RAID 5/6 在大型阵列上可能需要较长的重建时间
  7. 电源保护:对于 RAID 5/6,建议使用带电池的 RAID 控制器或 UPS

dd - 数据转换和复制工具

dd (disk dump) 是 Linux 系统下的一个强大的数据转换和复制工具,常用于:

  • 磁盘克隆和备份
  • 创建虚拟磁盘镜像
  • 数据格式转换
  • 磁盘性能测试

语法格式

bash
dd if=<输入文> of=<输出文> [OPTIONS]

选项

选项描述示例
if=FILE输入文件(默认为标准输入)dd if=/dev/sda
of=FILE输出文件(默认为标准输出)dd of=backup.img
bs=BYTES设置块大小(默认 512B)dd bs=4M
count=N复制指定数量的块dd count=100
skip=N跳过输入文件的前 N 个块dd skip=10
seek=N跳过输出文件的前 N 个块dd seek=5
conv=FLAGS转换数据(如大小写、同步写入等)dd conv=ucase
status=LEVEL显示进度信息(none, noxfer, progressdd status=progress

经典案例

bash
dd if=/dev/cdrom of=backup.iso bs=1M					# 制作ISO镜像
dd if=/dev/sda of=/dev/sdb bs=4M status=progress		# 磁盘克隆
dd if=/dev/zero of=1GB.file bs=1M count=1024			# 创建空文件
dd if=/dev/zero of=/dev/null bs=1G count=10				# 内存性能测试
dd if=mbr.bak of=/dev/sda bs=446 count=1				# 修复MBR(前446字节)
dd if=/dev/sda | ssh user@host "dd of=/backup/sda.img"	# 网络传输
dd if=/dev/sda skip=1 seek=1 bs=512 count=63			# 跳过MBR备份分区表
# 测试磁盘写入速度(1GB文件,块大小1M)
dd if=/dev/zero of=./testfile bs=1M count=1000 oflag=direct
# 测试磁盘读取速度(读取1GB文件)
dd if=./testfile of=/dev/null bs=1M iflag=direct
# 测试随机I/O性能(4K小块,10000次)
dd if=/dev/urandom of=./randomfile bs=4K count=10000
# 磁盘压力测试(持续写入,直到手动停止)
dd if=/dev/zero of=/dev/sdb bs=1M status=progress

注意事项

  1. 高危操作警告:错误的 of 参数可能覆盖重要数据
  2. 进度查看:建议添加 status=progress 参数
  3. 块大小优化:较大的 bs 参数(如 1M/4M)能提高性能
  4. 数据完整性:完成后建议运行 sync 命令
  5. 恢复数据:误操作后应立即卸载设备,避免数据被覆盖
  6. 使用 oflag=directiflag=direct 绕过缓存,测试真实磁盘性能

dumpe2fs - 显示ext2/3/4文件系统信息

dumpe2fs命令用于显示ext2、ext3或ext4文件系统的详细信息,包括超级块信息、块组描述符、文件系统特征等。是系统管理员进行文件系统分析和故障排查的重要工具。

语法格式

bash
dumpe2fs [选项] 设备文件

选项

选项描述示例
-b显示文件系统中的坏块dumpe2fs -b /dev/sda1
-h仅显示超级块信息dumpe2fs -h /dev/sdb2
-i从损坏的文件系统显示信息dumpe2fs -i /dev/sdc1
-x以16进制显示信息dumpe2fs -x /dev/sdd1
-o superblock=块号指定备用超级块dumpe2fs -o superblock=32768 /dev/sde1

经典案例

bash
# 查看/dev/nvme0n1p2分区的完整文件系统信息
dumpe2fs /dev/nvme0n1p2

# 仅显示超级块信息(适合快速查看)
dumpe2fs -h /dev/sda1

# 检查文件系统坏块
dumpe2fs -b /dev/sdb1 | grep -i "bad blocks"

# 使用备用超级块查看损坏的文件系统
dumpe2fs -o superblock=8193 /dev/sdc1

注意事项

  1. 需要root权限才能执行此命令
  2. 不要在已挂载的文件系统上运行(可能导致信息不一致)
  3. 输出信息量很大,建议配合lessgrep使用
  4. 对于xfs等非ext系列文件系统,应使用xfs_info命令
  5. 重要参数说明:
    • Block size:文件系统块大小(影响性能)
    • Reserved blocks:保留块百分比(默认5%)
    • Inode count:文件系统支持的最大文件数

tune2fs - 调整ext2/ext3/ext4文件系统参数

tune2fs命令用于调整ext2、ext3或ext4文件系统的可调参数,包括标签设置、保留块比例、检查间隔等。是系统管理员进行文件系统优化和维护的重要工具。

语法格式

bash
tune2fs [选项] 设备文件

选项

选项描述示例
-l显示文件系统超级块信息tune2fs -l /dev/sda1
-L 标签设置文件系统卷标tune2fs -L DATA /dev/sdb1
-m 百分比设置保留块百分比tune2fs -m 1 /dev/sdc1
`-i 间隔[dwm]`
-c 次数设置最大挂载次数检查tune2fs -c 30 /dev/sde1
-C 次数设置当前挂载计数tune2fs -C 5 /dev/sdf1
-e 行为设置错误行为(continue/remount-ro/panic)tune2fs -e remount-ro /dev/sdg1
-o [^]挂载选项设置默认挂载选项tune2fs -o journal_data /dev/sdh1
-r 块数设置保留块数量tune2fs -r 8192 /dev/sdi1

经典案例

bash
# 查看文件系统当前参数
tune2fs -l /dev/nvme0n1p2

# 设置卷标为"WEB_DATA"
tune2fs -L WEB_DATA /dev/sdb1

# 减少保留块比例到1%(默认为5%)
tune2fs -m 1 /dev/sdc1

# 禁用180天检查间隔
tune2fs -i 0 /dev/sdd1

# 设置文件系统错误时自动remount为只读
tune2fs -e remount-ro /dev/sde1

# 启用journal_data写日志功能
tune2fs -o journal_data /dev/sdf1

注意事项

  1. 需要root权限才能执行修改操作
  2. 修改前建议先备份重要数据
  3. 某些参数修改后需要重新挂载或重启才能生效
  4. 不要对已挂载的文件系统执行危险操作
  5. 保留块比例不宜设置过低(建议至少1%)
  6. 生产环境修改前应在测试环境验证