Appearance
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文件系统
注意事项
- 100%使用率的文件系统可能导致系统问题
- 某些特殊文件系统(如proc、sysfs)显示为0是正常现象
- NFS等网络文件系统可能因网络问题显示不准确
- 使用
-h
选项时,1K=1024字节
输出字段解释
Filesystem
: 设备或分区名称Size
: 总容量Used
: 已用空间Avail
: 可用空间Use%
: 使用百分比Mounted on
: 挂载点
常见问题排查
- 空间不足但df显示有空间:可能是inode耗尽,使用
df -i
检查 - 删除文件后空间未释放:可能有进程仍在使用,需重启服务或使用
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
注意事项
- 权限要求:
du
需要读取权限才能计算文件或目录的大小。如果权限不足,可能会跳过某些文件或目录。 - 符号链接:默认情况下,
du
会统计符号链接指向的文件或目录的大小。可以使用-L
选项强制跟踪符号链接。 - 隐藏文件:
du
会统计隐藏文件(以.
开头的文件)的磁盘使用情况。 - 系统性能:递归计算大型目录可能会消耗较多系统资源,建议在非高峰期使用。
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 # 查看所有挂载点
注意事项
- 只有 root 用户或具有 sudo 权限的用户可以执行 mount 命令
- 挂载前确保挂载点目录已存在
- 使用 umount 命令卸载文件系统
- 长期挂载建议写入 /etc/fstab 配置文件
- 危险操作:不要随意挂载未知来源的设备
常见文件系统类型
- 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 # 卸载并显示详细信息
注意事项
- 卸载前确保没有进程正在使用挂载点(使用
lsof /挂载点
或fuser -vm /挂载点
检查) - 重要数据应先同步:
sync
命令可确保数据写入磁盘 - GUI环境下可能需要先关闭文件管理器窗口
- USB设备卸载后指示灯可能还会亮,等待几秒再拔出
- 强制卸载(-f)可能导致数据丢失,应作为最后手段
常见错误处理
设备忙无法卸载
bash# 查找占用进程 fuser -vm /mnt/usb # 或 lsof /mnt/usb # 终止占用进程(谨慎操作) fuser -km /mnt/usb
卸载网络共享(NFS/CIFS)超时
bashumount -l /mnt/nfs # 延迟卸载
卸载后仍显示在挂载列表
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.ext4
、mkfs.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
注意事项
- 执行mkfs会永久擦除设备上的所有数据
- 需要root权限或sudo执行
- 不同文件系统类型需要对应的工具包(如xfsprogs、e2fsprogs等)
- 建议先使用fdisk或parted确认分区正确性
- 对于生产环境,建议使用
-c
选项检查坏块 - 创建文件系统后,可以使用
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*
注意事项
- 需要root权限:普通用户可能无法获取完整信息
- 缓存机制:首次执行会扫描设备,后续使用缓存(
-c /dev/null
强制刷新) - LVM/RAID设备:需先激活逻辑卷才能正确识别
- 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
注意事项
- Linux会尽可能利用空闲内存做缓存,因此看到"free"很少是正常现象
- 关注"available"字段更准确反映可用内存
- 交换空间(swap)使用过多可能表明物理内存不足
- 在嵌入式系统或容器环境中,某些字段可能显示为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 | 为交换空间设置指定的 UUID | mkswap -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
注意事项
- 交换分区/文件创建后需要
swapon
才能生效 - 交换文件大小建议为物理内存的1-2倍
- 生产环境建议使用专用交换分区而非文件
- 使用
free -h
或swapon --show
验证交换空间状态 - 永久生效需在
/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
注意事项
需要 root 权限执行
交换文件/分区需先通过
mkswap
初始化永久生效需在
/etc/fstab
添加配置:/swapfile none swap sw 0 0
使用
swapoff
命令可停用交换空间生产环境建议交换空间大小为物理内存的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
注意事项
- 需要 root 权限(使用
sudo
执行)。 - 确保系统有足够的内存,否则停用交换空间可能导致 OOM(内存不足)错误。
- 永久停用交换空间 需要修改
/etc/fstab
,删除或注释掉对应的swap
行。 - 重新启用交换空间 可使用
swapon
命令。
pvcreate - 创建物理卷
pvcreate
是 Linux LVM(Logical Volume Manager,逻辑卷管理)工具的一部分,用于 初始化物理卷(Physical Volume, PV),使其可以被 LVM 管理。通常用于将磁盘或分区转换为 LVM 可识别的存储单元
语法格式
bash
pvcreate [选项] 物理设备 [物理设备2...]
选项
选项 | 描述 | 示例 |
---|---|---|
-f | 强制创建,不提示确认 | pvcreate -f /dev/sdb |
-u UUID | 指定物理卷的 UUID | pvcreate -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
注意事项
- 需要 root 权限(使用
sudo
执行)。 - 设备必须未被挂载,否则会报错。
- 数据会被擦除,初始化前请确保设备无重要数据。
- 后续操作:
- 使用
vgcreate
创建卷组(VG) - 使用
lvcreate
创建逻辑卷(LV)
- 使用
- 撤销操作:
- 使用
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
注意事项
- 卷组要求:源和目标物理卷必须在同一卷组中
- 空间要求:目标物理卷必须有足够的空间
- 性能影响:大数据量迁移可能影响系统性能
- 中断恢复:迁移过程可以中断,之后可以继续
- 监控进度:使用
lvs -o+devices
或pvdisplay -m
查看进度 - 权限要求:需要 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
注意事项
- 数据安全:
pvremove
仅移除 LVM 元数据,不会擦除设备上的实际数据。- 使用
-ff
选项时需谨慎,因为它可能破坏正在使用的设备。
- 设备状态:
- 确保设备未被任何卷组(VG)或逻辑卷(LV)使用。
- 如果设备仍在使用中,先使用
vgreduce
或pvmove
移除设备。
- 权限要求:
- 需要 root 权限执行。
- 恢复:
- 移除后如需重新使用该设备为物理卷,需重新运行
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 # 唯一标识符
注意事项
- 需要 root 权限(普通用户可查看部分信息,但细节需
sudo
) - 物理卷必须已初始化(通过
pvcreate
)才会显示 - 相关命令对比:
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 /anywhere ) | vgcreate --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
注意事项
- 物理卷准备:
- 在创建卷组之前,必须先用
pvcreate
初始化物理卷。
- 在创建卷组之前,必须先用
- PE 大小:
- PE 大小决定了逻辑卷的最小分配单位,创建后不可更改。
- 卷组名称:
- 卷组名称在系统中必须唯一。
- 权限要求:
- 需要 root 权限执行。
- 扩展性:
- 卷组可以动态扩展(通过
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 /anywhere ) | vgextend --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
注意事项
- 物理卷初始化:
- 在扩展卷组之前,必须先用
pvcreate
初始化新的物理卷。
- 在扩展卷组之前,必须先用
- 卷组状态:
- 确保卷组未被锁定或处于活动状态。
- 数据安全:
- 扩展卷组不会影响现有逻辑卷的数据。
- 权限要求:
- 需要 root 权限执行。
- 恢复丢失的物理卷:
- 如果物理卷丢失但卷组仍标记为 “部分丢失”,可以使用
--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
注意事项
- 需要 root 权限(使用
sudo
执行)。 - 物理卷必须未被逻辑卷使用,否则需先迁移数据(
pvmove
)。 - 移除后物理卷仍保留 LVM 元数据,需手动清除(
pvremove
)。 - 数据安全:
- 确保目标物理卷无活跃数据,否则可能导致数据丢失。
- 生产环境建议先备份 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 /E ) | vgdisplay --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 # 唯一标识符
注意事项
- 需要 root 权限(普通用户可查看部分信息,但细节需
sudo
) - 相关命令对比:
vgs
:简要列表(类似ls
)vgdisplay
:详细信息(类似ls -l
)
- 重要指标:
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
注意事项
- 数据安全:
- 删除卷组会同时删除其包含的所有逻辑卷,但不会清除物理卷上的数据。如果需要完全清除物理卷,需手动使用
pvremove
。 - 确保卷组中没有重要数据,或已提前备份。
- 删除卷组会同时删除其包含的所有逻辑卷,但不会清除物理卷上的数据。如果需要完全清除物理卷,需手动使用
- 依赖关系:
- 如果卷组中的逻辑卷正在被使用(如挂载或作为交换分区),必须先卸载或停用。
- 权限要求:
- 需要 root 权限执行。
- 强制删除:
-f
选项会跳过确认提示,慎用!
- 测试模式:
- 使用
--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
注意事项
需要 root 权限(使用
sudo
执行)。卷组必须有足够空间,否则创建失败。
创建后需格式化才能使用:
bashmkfs.ext4 /dev/vg_storage/lv_data
挂载逻辑卷:
bashmount /dev/vg_storage/lv_data /mnt/data
永久挂载需在
/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'
注意事项
需要 root 权限(使用
sudo
执行)。数据不可恢复:删除前请确认逻辑卷无重要数据。
逻辑卷必须未挂载:
bashumount /dev/vg_data/lv_old # 先卸载 lvremove /dev/vg_data/lv_old
快照卷依赖:若逻辑卷有快照,需先删除快照。
生产环境建议:
- 提前备份数据
- 在业务低峰期操作
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
注意事项
- 卷组可用空间:
- 确保卷组(Volume Group)有足够的可用空间(使用
vgdisplay
或vgs
检查)。
- 确保卷组(Volume Group)有足够的可用空间(使用
- 文件系统调整:
- 如果逻辑卷包含文件系统,建议使用
-r
选项自动调整文件系统大小。 - 对于不支持在线调整的文件系统(如某些旧版 ext2),可能需要先卸载。
- 如果逻辑卷包含文件系统,建议使用
- 快照卷限制:
- 不能直接扩展快照卷(Snapshot Volume),需先删除快照。
- 在线扩展:
- 大多数现代文件系统(如 ext4、XFS)支持在线扩展,无需卸载。
- 备份数据:
- 虽然
lvextend
是安全的,但操作前仍建议备份重要数据。
- 虽然
lvresize - 动态调整逻辑卷大小
lvresize
是 Linux LVM(Logical Volume Manager)的核心命令,用于 动态调整逻辑卷(LV)的容量,支持 扩展 和 收缩 操作。相比 lvextend
和 lvreduce
,它提供了更统一的调整方式。
语法格式
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
注意事项
- 缩小逻辑卷:
- 缩小逻辑卷前,必须先缩小文件系统,否则可能导致数据丢失。
- 对于 ext2/3/4 文件系统,使用
resize2fs
调整大小。 - 对于 XFS 文件系统,XFS 不支持缩小,需备份数据后重新创建。
- 文件系统调整:
- 使用
-r
选项可自动调整文件系统大小(仅适用于支持的文件系统)。 - 如果不使用
-r
,需手动调整文件系统大小。
- 使用
- 卷组可用空间:
- 扩展逻辑卷时,确保卷组有足够的可用空间(使用
vgdisplay
或vgs
检查)。
- 扩展逻辑卷时,确保卷组有足够的可用空间(使用
- 数据备份:
- 缩小逻辑卷或调整文件系统时,建议先备份重要数据。
- 快照卷限制:
- 不能直接调整快照卷(Snapshot Volume)的大小。
严重警告:
- 收缩操作不当会导致数据丢失!必须:
- 备份数据
- 确保新尺寸大于已用空间
- 在非生产环境测试
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 # 设备映射标识
注意事项
- 需要 root 权限(普通用户可查看部分信息,但细节需
sudo
) - 相关命令对比:
lvs
:简要列表(类似ls
)lvdisplay
:详细信息(类似ls -l
)
- 重要状态指标:
LV Status
:确保为available
(若为inactive
需先激活)Segments
:大于1表示数据跨多个物理卷
resize2fs - 调整 ext2/ext3/ext4 文件系统大小
resize2fs
是 Linux 系统中用于 调整 ext2/ext3/ext4 文件系统大小 的命令,通常与 LVM 的 lvextend
或 lvresize
配合使用。它可以在线(已挂载)或离线(未挂载)状态下扩展文件系统,但 仅支持收缩未挂载的文件系统。
语法格式
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 # 收缩文件系统(需先卸载)
注意事项
- 必须先扩展底层存储(LVM/分区)
- 收缩操作必须卸载文件系统
- 对正在使用的文件系统操作可能导致数据损坏
- 建议操作前使用
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
注意事项
- 仅支持扩展:XFS 无法收缩!如需缩小必须备份→重建→恢复
- 必须挂载状态:与 ext4 不同,XFS 扩展时要求文件系统已挂载
- 底层存储需先扩容:
- LVM 逻辑卷:先用
lvextend
- 普通分区:用
parted
调整分区表后生效
- LVM 逻辑卷:先用
- 无数据风险:扩展操作安全,但需确保存储设备稳定
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 是常见的备用超级块位置)
注意事项
必须卸载文件系统
bashumount /dev/sdb1 # 先卸载 e2fsck /dev/sdb1 # 再检查
若无法卸载(如根分区),需使用 Live CD/USB 启动后操作。
系统启动时自动运行:
- 若
/etc/fstab
中pass
值非0,系统会在启动时自动运行fsck
。
- 若
风险提示:
-y
可能强制修复导致数据丢失,慎用!- 重要数据建议先备份再修复。
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 # 检查并优化大型文件系统
注意事项
- 文件系统状态:
xfs_repair
必须在文件系统未挂载时运行。如果文件系统已挂载,可能会导致数据损坏。 - 日志清空:
-L
选项会强制清空日志,可能导致未提交的数据丢失,仅在必要时使用。 - 备份数据:在运行
xfs_repair
之前,建议备份重要数据,以防修复过程中出现意外。 - 内存限制:对于大型文件系统,可以使用
-m
选项限制内存使用,避免系统资源耗尽。 - 只读修复:
-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
注意事项
- 数据备份:创建或修改 RAID 阵列前应备份重要数据
- 设备状态:确保成员设备没有挂载或使用
- 超级块:现代 mdadm 默认会创建超级块(v1.2),包含阵列元数据
- 监控:建议设置监控(通过 cron 或 mdadm --monitor)
- 配置文件:创建后应保存配置到
/etc/mdadm/mdadm.conf
或/etc/mdadm.conf
- 性能考虑:RAID 5/6 在大型阵列上可能需要较长的重建时间
- 电源保护:对于 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 , progress ) | dd 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
注意事项
- 高危操作警告:错误的 of 参数可能覆盖重要数据
- 进度查看:建议添加
status=progress
参数 - 块大小优化:较大的 bs 参数(如 1M/4M)能提高性能
- 数据完整性:完成后建议运行
sync
命令 - 恢复数据:误操作后应立即卸载设备,避免数据被覆盖
- 使用
oflag=direct
和iflag=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
注意事项
- 需要root权限才能执行此命令
- 不要在已挂载的文件系统上运行(可能导致信息不一致)
- 输出信息量很大,建议配合
less
或grep
使用 - 对于xfs等非ext系列文件系统,应使用
xfs_info
命令 - 重要参数说明:
- 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 间隔[d | w | m]` |
-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
注意事项
- 需要root权限才能执行修改操作
- 修改前建议先备份重要数据
- 某些参数修改后需要重新挂载或重启才能生效
- 不要对已挂载的文件系统执行危险操作
- 保留块比例不宜设置过低(建议至少1%)
- 生产环境修改前应在测试环境验证