Linux存储与文件系统

磁盘分区管理

分区工具

# fdisk分区工具(MBR分区表)
fdisk -l                             # 列出所有磁盘分区
fdisk /dev/sda                       # 对sda进行分区
 
# fdisk交互命令
# n - 新建分区
# d - 删除分区
# p - 打印分区表
# w - 写入分区表
# q - 退出不保存
# t - 修改分区类型
 
# gdisk分区工具(GPT分区表)
gdisk /dev/sda                       # GPT分区
 
# parted分区工具(支持两种分区表)
parted /dev/sda print                # 打印分区信息
parted /dev/sda mklabel gpt          # 创建GPT分区表
parted /dev/sda mkpart primary 0% 100%  # 创建分区

分区类型

类型代码类型名称说明
83Linux默认Linux分区
82Linux swap交换分区
8eLinux LVMLVM物理卷
fdLinux RAID软RAID分区
07HPFS/NTFSWindows NTFS分区
EF00EFI SystemEFI系统分区(GPT)

文件系统管理

文件系统类型

文件系统特点适用场景
ext4日志式、稳定、兼容性好通用场景
XFS高性能、大文件支持好大文件、高并发
Btrfs快照、压缩、校验需要数据保护
NTFSWindows兼容双系统
FAT32兼容性最好U盘、共享

创建文件系统

# 格式化分区
mkfs.ext4 /dev/sda1                  # 创建ext4文件系统
mkfs.xfs /dev/sda2                   # 创建XFS文件系统
mkfs.vfat /dev/sdb1                  # 创建FAT32文件系统
 
# 指定参数格式化
mkfs.ext4 -L "data" /dev/sda1        # 设置卷标
mkfs.ext4 -b 4096 /dev/sda1          # 设置块大小
 
# 创建交换分区
mkswap /dev/sda3                     # 创建交换分区
swapon /dev/sda3                     # 启用交换分区
swapoff /dev/sda3                    # 禁用交换分区

文件系统检查

# 检查文件系统
e2fsck /dev/sda1                     # 检查ext2/3/4文件系统
xfs_repair /dev/sda2                 # 修复XFS文件系统
fsck /dev/sda1                       # 通用检查命令
 
# 强制检查
e2fsck -f /dev/sda1                  # 强制检查
e2fsck -y /dev/sda1                  # 自动修复所有错误

查看文件系统信息

# 查看文件系统属性
dumpe2fs /dev/sda1                   # 显示ext文件系统信息
xfs_info /dev/sda2                   # 显示XFS文件系统信息
blkid                                # 显示所有块设备信息
lsblk -f                             # 显示文件系统类型

挂载管理

挂载命令

# 基本挂载
mount /dev/sda1 /mnt/data            # 挂载分区
mount -t ext4 /dev/sda1 /mnt/data    # 指定文件系统类型
 
# 挂载选项
mount -o ro /dev/sda1 /mnt/data      # 只读挂载
mount -o noexec /dev/sda1 /mnt/data  # 禁止执行
mount -o remount,rw /mnt/data        # 重新挂载为读写
 
# 挂载ISO文件
mount -o loop image.iso /mnt/iso
 
# 卸载
umount /mnt/data                     # 卸载
umount -l /mnt/data                  # 懒卸载(强制)

/etc/fstab配置

# fstab格式
# <设备> <挂载点> <文件系统> <挂载选项> <dump> <fsck顺序>
/dev/sda1    /           ext4    defaults        1 1
/dev/sda2    /home       ext4    defaults        1 2
/dev/sda3    swap        swap    defaults        0 0
tmpfs        /tmp        tmpfs   defaults        0 0
 
# 常用挂载选项
defaults     # 默认选项(rw, suid, dev, exec, auto, nouser, async)
noatime      # 不更新访问时间,提高性能
nodiratime   # 不更新目录访问时间
user         # 允许普通用户挂载
noauto       # 不自动挂载

自动挂载(autofs)

# 安装autofs
apt install autofs                   # Debian/Ubuntu
yum install autofs                   # RHEL/CentOS
 
# 配置文件 /etc/auto.master
/mnt/net    /etc/auto.nfs    --timeout=60
 
# 配置文件 /etc/auto.nfs
data    -fstype=nfs,rw    192.168.1.100:/data
 
# 重启服务
systemctl restart autofs

LVM逻辑卷管理

LVM基本概念

物理磁盘 (PV) → 卷组 (VG) → 逻辑卷 (LV) → 文件系统

PV物理卷管理

# 创建物理卷
pvcreate /dev/sda1                   # 创建PV
pvcreate /dev/sdb1 /dev/sdc1         # 批量创建
 
# 查看物理卷
pvdisplay                            # 显示所有PV
pvs                                  # 简要显示
pvdisplay /dev/sda1                  # 显示指定PV
 
# 删除物理卷
pvremove /dev/sda1

VG卷组管理

# 创建卷组
vgcreate vg_data /dev/sda1           # 创建VG
vgcreate vg_data /dev/sda1 /dev/sdb1 # 使用多个PV
 
# 扩展卷组
vgextend vg_data /dev/sdc1           # 添加PV到VG
 
# 缩减卷组
vgreduce vg_data /dev/sdc1           # 从VG移除PV
 
# 查看卷组
vgdisplay                            # 显示所有VG
vgs                                  # 简要显示
 
# 删除卷组
vgremove vg_data

LV逻辑卷管理

# 创建逻辑卷
lvcreate -L 100G -n lv_data vg_data  # 创建100G逻辑卷
lvcreate -l 100%FREE -n lv_data vg_data  # 使用所有剩余空间
 
# 扩展逻辑卷
lvextend -L +50G /dev/vg_data/lv_data    # 扩展50G
lvextend -l +100%FREE /dev/vg_data/lv_data  # 使用所有剩余空间
 
# 扩展文件系统
resize2fs /dev/vg_data/lv_data       # 扩展ext4
xfs_growfs /mnt/data                 # 扩展XFS
 
# 缩减逻辑卷(需要先缩减文件系统)
resize2fs /dev/vg_data/lv_data 50G   # 缩减ext4
lvreduce -L 50G /dev/vg_data/lv_data # 缩减LV
 
# 查看逻辑卷
lvdisplay                            # 显示所有LV
lvs                                  # 简要显示
 
# 删除逻辑卷
lvremove /dev/vg_data/lv_data

LVM快照

# 创建快照
lvcreate -L 10G -s -n lv_snap /dev/vg_data/lv_data
 
# 恢复快照
lvconvert --merge /dev/vg_data/lv_snap
 
# 删除快照
lvremove /dev/vg_data/lv_snap

RAID磁盘阵列

软RAID配置

# 创建RAID阵列
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1  # RAID 0
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1  # RAID 1
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1  # RAID 5
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[a-d]1       # RAID 10
 
# 查看RAID状态
cat /proc/mdstat                     # 查看RAID状态
mdadm --detail /dev/md0              # 详细信息
 
# 停止和启动RAID
mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
 
# 添加热备盘
mdadm --add /dev/md0 /dev/sdd1
 
# 移除故障盘
mdadm --remove /dev/md0 /dev/sda1
 
# 标记故障盘
mdadm --fail /dev/md0 /dev/sda1

RAID级别对比

RAID级别最少磁盘容错能力空间利用率性能
RAID 02100%最高
RAID 1250%读快写慢
RAID 531盘(n-1)/n较好
RAID 642盘(n-2)/n一般
RAID 104每组1盘50%

磁盘配额

启用配额

# 挂载时启用配额
mount -o usrquota,grpquota /dev/sda1 /home
 
# 或在fstab中添加
/dev/sda1  /home  ext4  defaults,usrquota,grpquota  0 0
 
# 初始化配额数据库
quotacheck -cug /home
quotaon /home                        # 启用配额

设置配额

# 编辑用户配额
edquota username
 
# 配额格式
# Filesystem    blocks    soft    hard    inodes    soft    hard
# /dev/sda1      1000      8000    10000   100       800     1000
 
# 编辑组配额
edquota -g groupname
 
# 复制配额设置
edquota -p reference_user target_user
 
# 查看配额使用情况
quota username
repquota -a                          # 报告所有配额

磁盘性能监控

# 磁盘I/O统计
iostat                               # 基本统计
iostat -x                            # 扩展统计
iostat -x 1                          # 每秒刷新
 
# 磁盘使用情况
df -h                                # 文件系统使用情况
du -sh /path                         # 目录大小
du -h --max-depth=1 /path            # 一级子目录大小
 
# 查找大文件
find / -type f -size +100M 2>/dev/null | xargs ls -lh
 
# 磁盘性能测试
hdparm -t /dev/sda                   # 读取速度测试

💡 存储管理建议:

  • 生产环境推荐使用LVM,便于动态扩展
  • 重要数据使用RAID 1/5/10保护
  • 定期检查文件系统健康状态
  • 合理设置磁盘配额,防止用户占满磁盘

🔗 相关笔记: 02.03_系统管理 02.07_进程管理 11.01_性能优化