Linux存储学习笔记磁盘分区RAIDLVM逻辑卷新手友好版博客说明面向CentOS7新手运维每条命令附带注释、示例输出、常见踩坑点适合期末复习、实验练习。 符号约定$普通用户大部分磁盘存储命令普通用户权限不足必须切换root#root超级管理员本章节几乎全部操作需要root执行⚠️新手坑标记新手高频错误提示知识点补充✅输出示例展示命令执行返回及含义前置说明磁盘存储三类技术普通GPT/MBR磁盘分区直接对磁盘划分分区缺点不支持在线扩容缩容RAID磁盘阵列多块磁盘组合提升性能/数据容错分为软RAID(mdadm)、硬RAID(硬件卡)LVM逻辑卷在磁盘/RAID之上的管理层支持灵活扩容XFS不支持缩容ext4支持缩容切换root方式普通用户执行$ su -输入root密码提示符变为#一、GPT磁盘分区实验课前练习需求虚拟机添加一块200G SCSI硬盘设备/dev/sdbGPT分区表/dev/sdb1 100G → xfs开机自动挂载/var/www/htmlhttpd网页/dev/sdb2 100G → ext4开机自动挂载/var/lib/mysqlmysql数据前置硬件操作VMware/KVM虚拟机设置新增200G SCSI硬盘开机进系统云服务器需要控制台挂载磁盘。步骤1 查看磁盘root执行# # 查看块设备确认新增200G磁盘/dev/sdb # # lsblklist block devices 列出块设备 # # fdisk -l 也可以查看磁盘分区表 # lsblk✅输出示例sda 200G ├─sda1... #系统盘不要动 sdb 200G #新硬盘无分区⚠️新手坑不要操作系统盘/dev/sda误操作会系统损坏普通用户执行lsblk部分信息看不到建议root操作。步骤2 parted创建GPT分区表fdisk默认MBR不支持GPTparted工具专门操作GPT大磁盘。# parted /dev/sdb 进入磁盘交互工具 parted /dev/sdb交互内依次输入mklabel gpt # 设置磁盘标签为GPT分区格式 mkpart primary 0% 100G # 创建主分区起始0%结束100G → /dev/sdb10%实现分区对齐提升性能 mkpart primary 100G 200G # 创建第二个主分区100G~200G → /dev/sdb2 print # 打印查看分区结果确认两个分区 quit # 退出parted交互退出后执行lsblk能看到sdb1、sdb2两个分区。⚠️新手坑parted写0而不是0%会导致分区不对齐分区大小总和不要超过磁盘总容量。步骤3 格式化文件系统# mkfs.xfs创建xfs文件系统用于httpd数据分区/dev/sdb1 mkfs.xfs /dev/sdb1 # mkfs.ext4创建ext4文件系统mysql数据分区/dev/sdb2 mkfs.ext4 /dev/sdb2✅输出示例节选meta-data/dev/sdb1 isize512 agcount4⚠️新手坑**不要格式化系统分区**格式化会清空全部数据分区没创建就格式化会报错。步骤4 备份原有目录数据【生产必做】/var/www/html、/var/lib/mysql原本存放旧数据挂载后目录内原有文件会被临时隐藏卸载才会重新出现所以提前备份。# cp -r 递归复制备份网页目录 cp -r /var/www/html /var/www/html.bak # cp -r 递归复制备份mysql目录 cp -r /var/lib/mysql /var/lib/mysql.bak # 上一步若无文件夹要先创建一个/var/www/html文件夹 mkdir -p /var/www/html mkdir -p /var/lib/mysql # 清空挂载点目录避免旧文件干扰实验 rm -rf /var/www/html/* rm -rf /var/lib/mysql/*⚠️新手坑不要执行rm -rf /var/www/html删除目录本身挂载会失败只删除目录下*全部内容。步骤5 临时挂载测试# mount 设备 挂载点临时挂载重启失效 mount /dev/sdb1 /var/www/html mount /dev/sdb2 /var/lib/mysql # df -hdisk free -human 查看挂载磁盘使用情况h人类可读单位GB df -h✅输出示例可以看到两个分区已经挂载到对应目录。步骤6 获取UUID配置/etc/fstab开机自动挂载优先使用UUID挂载而不是/dev/sdb1磁盘顺序发生变化设备名会变UUID是分区唯一标识。# blkid block id查看块设备的UUID、文件系统类型 blkid /dev/sdb1 blkid /dev/sdb2✅输出示例/dev/sdb1: UUIDaaaa-bbbb TYPExfs /dev/sdb2: UUIDcccc-dddd TYPEext4编辑fstab配置文件vim /etc/fstab文件末尾追加替换为自己blkid查到的UUIDUUIDaaaa-bbbb /var/www/html xfs defaults 0 0 UUIDcccc-dddd /var/lib/mysql ext4 defaults 0 0参数解释每一列UUID设备唯一标识挂载点目录文件系统类型 xfs / ext4defaults默认挂载选项(rw读写,suid,dev,exec,auto开机挂载,nouser普通用户不能挂载,async异步写入)dump备份0不开启备份fsck磁盘自检0不自检xfs不支持fsck必须写0步骤7 校验fstab配置【重中之重】⚠️新手大坑fstab写错直接重启服务器会开机崩溃无法进入系统修改完必须校验# mount -a 读取/etc/fstab全部配置尝试挂载无输出代表成功有报错立刻修改fstab不要重启机器 mount -a步骤8 修改目录权限httpd、mysql服务进程使用普通账号运行权限不对服务启动失败# chown 修改属主:属组chmod修改权限 chown apache:apache /var/www/html chmod 755 /var/www/html chown mysql:mysql /var/lib/mysql chmod 700 /var/lib/mysqlMariadb数据库属主同样是mysql部分系统httpd账号叫www-data需要对应调整。步骤9 验证重启可选reboot #重启登录后执行 df -h确认两个目录自动挂载成功。二、RAID磁盘阵列 mdadm软RAID环境准备虚拟机添加多块20G磁盘sdb sdc sdd sde sdf sdg全部操作需要root# 软RAIDCPU计算实现RAID功能硬RAID独立硬件卡性能更好操作系统看不到单块磁盘。RAID级别速查表RAID级别最小磁盘容错允许坏盘有效容量读写性能适用场景RAID020块坏盘全部丢失磁盘总和读写高高性能不存重要数据RAID121块总容量的50%读高写一般关键重要数据RAID531块n‑1块磁盘容量读高写较低文件服务器企业通用RAID642块n‑2块磁盘容量读高写低大容量存储RAID104特定一块盘损坏总容量50%读写都高高并发数据库RAID不是备份RAID解决硬件故障误删文件RAID无法恢复仍然需要备份。通用RAID命令解释mdadm软RAID管理工具CentOS7最小化需要安装yum install -y mdadm/proc/mdstat内核实时RAID状态文件直接cat查看mdadm --create创建阵列mdadm --detail /dev/mdX查看阵列详细信息mdadm --fail模拟磁盘故障mdadm --remove移除故障磁盘mdadm --add添加磁盘新增/热备盘mdadm --stop /dev/mdX停止阵列mdadm --zero‑superblock /dev/sdXX清除磁盘RAID元数据超级块删除RAID必须做否则重启自动重建RAID示例1RAID‑0 创建、格式化挂载、删除# --create 创建 /dev/md0--level 0 RAID级别--raid‑devices 2 阵列成员盘数量 mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c} # cat /proc/mdstat 查看阵列实时状态 cat /proc/mdstat # --detail 查看阵列详细参数 mdadm --detail /dev/md0 #格式化xfs mkfs.xfs /dev/md0 # 此时可能会报mkfs.xfs: Use the -f option to force overwrite.没有输入 -f 进行强制覆盖 # 出现上述情况则 mkfs.xfs -f /dev/md0 mkdir -p /raid/raid0 mount /dev/md0 /raid/raid0 df -h lsblk # 输出内容 sdb 8:16 0 20G 0 disk └─md0 9:0 0 40G 0 raid0 /raid/raid0 sdc 8:32 0 20G 0 disk └─md0 9:0 0 40G 0 raid0 /raid/raid0 # 删除RAID0完整流程 umount /dev/md0 #1卸载挂载点 mdadm --stop /dev/md0 #2停止阵列 mdadm --zero-superblock /dev/sd{b,c} #3清除磁盘RAID超级块⚠️新手坑RAID‑0无容错不能fail故障盘不能加热备盘尝试add/fail直接报错删除RAID顺序不能颠倒先umount → stop → zero‑superblock不清除superblock重启自动重新组装RAID。示例2RAID‑1镜像支持热备盘、故障替换#创建RAID1两块磁盘 mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c} cat /proc/mdstat #观察resync同步进度同步完成再格式化 mdadm --detail /dev/md1 mkfs.xfs /dev/md1一定看清楚是不是-f mkdir -p /raid/raid1 mount /dev/md1 /raid/raid1 # 添加热备盘sparesdd作为备用磁盘成员故障自动顶替 mdadm --add /dev/md1 /dev/sdd #模拟磁盘故障标记sdc损坏 mdadm --fail /dev/md1 /dev/sdc mdadm --detail /dev/md1 #可以看到spare磁盘状态变成spare rebuilding重建同步业务不中断 #移除已经故障的磁盘 mdadm --remove /dev/md1 /dev/sdc #删除RAID1 umount /dev/md1 mdadm --stop /dev/md1 mdadm --zero-superblock /dev/sd{b..d}⚠️新手坑刚创建RAID1会resync数据同步同步没完成就格式化文件系统容易损坏。示例3RAID‑54块盘演示支持扩容#创建RAID54块成员盘 mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e} cat /proc/mdstat #等待rebuild重建完成再格式化 mkfs.xfs /dev/md5 mkdir -p /raid/raid5 mount /dev/md5 /raid/raid5 #增加热备盘sdf mdadm --add /dev/md5 /dev/sdf #模拟故障 mdadm --fail /dev/md5 /dev/sdb mdadm --remove /dev/md5 /dev/sdb #RAID5扩容新增磁盘grow修改成员数量 mdadm --add /dev/md5 /dev/sdb /dev/sdg mdadm --grow /dev/md5 --raid-devices 5 cat /proc/mdstat #观察reshape阵列重组进度 #RAID底层磁盘扩容完成还要扩容文件系统 xfs_growfs /raid/raid5 #删除RAID5 umount /dev/md5 mdadm --stop /dev/md5 mdadm --zero-superblock /dev/sd{b..g}⚠️新手坑RAID5降级状态有盘故障禁止扩容必须阵列状态clean正常才能grow扩容。RAID开机自动挂载除了/etc/fstab软RAID建议生成mdadm配置文件mdadm -D --scan /etc/mdadm.conf保证开机识别阵列。三、LVM逻辑卷管理重点生产高频使用LVM层次关系 物理卷PV → 卷组VG存储资源池→ 逻辑卷LV真正用来挂载使用PVPhysical Volume物理卷可以是整块磁盘、磁盘分区、RAID设备VGVolume Group卷组多个PV组合成一个大存储池LVLogical Volume逻辑卷从VG池划分空间格式化挂载使用PEPhysical ExtentVG最小分配单元默认4MiB核心特性 ✅可以在线扩容 ⚠️XFS文件系统只能扩容不能缩减 ⚠️ext4支持缩减但缩减必须离线卸载操作风险极高 ✅支持快照可以跨多块磁盘。LVM全套命令速查功能命令创建PVpvcreate /dev/sdXX查看PV简要pvs查看PV详细pvdisplay创建VGvgcreate vg名字 /dev/sdXX查看VG简要vgs查看VG详细vgdisplayVG增加磁盘vgextend vg名 /dev/sdXXVG移除磁盘pvmove→vgreduce创建LVlvcreate -n lv名字 -L 大小 VG名字查看LV简要lvs查看LV详细lvdisplayLV扩容lvextendLV缩减lvreduceext4离线使用删除LVlvremove /dev/vgname/lvname删除VGvgremove vgname删除PVpvremove /dev/sdXXLV设备三种等价写法/dev/webapp/webapp01、/dev/mapper/webapp‑webapp01、/dev/dm‑xx实验完整流程环境三块磁盘 /dev/sdb /dev/sdc /dev/sddroot#1创建PV物理卷# pvcreate 将块设备初始化为LVM物理卷 pvcreate /dev/sdb pvcreate /dev/sdc pvcreate /dev/sdd # 可能会有残留之前的 RAID 阵列的元数据此时就要清除磁盘上的RAID残留 mdadm --zero-superblock /dev/sdd wipefs -a /dev/sdd # pvs简要查看pv状态 pvs # pvdisplay 查看详细参数PE大小等 pvdisplay2创建VG卷组存储池# vgcreate 卷组名 物理卷设备 vgcreate webapp /dev/sdb vgcreate dbapp /dev/sdc /dev/sdd vgs vgdisplay3创建LV逻辑卷# lvcreate -n 指定LV名字 -L 指定大小 后面跟VG组名字 lvcreate -n webapp01 -L 5G webapp lvcreate -n data01 -L 25G dbapp lvs lvdisplay /dev/dbapp/data014格式化挂载mkfs.xfs /dev/webapp/webapp01 mkdir -p /usr/share/nginx/html mount /dev/webapp/webapp01 /usr/share/nginx/html # 开机挂载写入/etc/fstab推荐使用LV的UUID blkid获取LVM扩容生产最常用两种场景①VG还有剩余空间直接扩LV②VG空间耗尽新增磁盘vgextend扩展卷组。场景AVG还有空闲直接扩容逻辑卷 xfs文件系统# lvextend -L 2G 给LV增加2G大写L代表总大小代表增量 lvextend -L 2G /dev/webapp/webapp01 # xfs_growfs 在线扩展xfs文件系统挂载状态可以执行 xfs_growfs /usr/share/nginx/html # 简便参数-rlvextend -r 自动同时扩展lv和文件系统 lvextend -r -L 15G /dev/webapp/webapp01 df -h场景B卷组空间用完新增磁盘扩展VG#把新磁盘/dev/sde加入webapp卷组 vgextend webapp /dev/sde vgs #观察VG Free空闲空间增加 #之后再执行lvextend扩容LV⚠️新手坑很多新手只执行lvextend忘记执行xfs_growfsdf‑h看不到容量变大逻辑卷底层变大但上层文件系统没有识别。ext4 文件系统缩减风险极高必须卸载XFS完全不支持缩减 ext4缩容五步固定顺序umount卸载e2fsck -f 强制磁盘检测必须执行否则数据损坏resize2fs 缩减文件系统到目标大小lvreduce 缩减逻辑卷大小mount挂载验证umount /usr/share/nginx/html e2fsck -f /dev/webapp/webapp01 resize2fs /dev/webapp/webapp01 10G lvreduce -L 10G /dev/webapp/webapp01 mount /dev/webapp/webapp01 /usr/share/nginx/html df -h⚠️新手坑缩减文件系统容量不能小于磁盘实际已占用数据会直接数据全部丢失尽量避免生产环境缩容。VG卷组移除磁盘pvmove数据迁移想要把某个PV磁盘从VG拿出来不能直接vgreduce磁盘上有数据必须先pvmove迁移数据到其他PV。#把/dev/sdb上的数据迁移到卷组其他空闲PV pvmove /dev/sdb #迁移完成后从卷组剔除物理卷 vgreduce webapp /dev/sdb #彻底清除LVM标签 pvremove /dev/sdbLVM清理删除全套销毁实验环境umount /usr/share/nginx/html #删除逻辑卷LV lvremove /dev/webapp/webapp01 /dev/dbapp/data01 #删除卷组VG vgremove webapp dbapp #删除物理卷PV标签 pvremove /dev/sdb /dev/sdc /dev/sddLVM快照简单示例快照占用VG空间记录变更数据用于临时数据备份。# -s snapshot 创建快照-n快照名字 -L快照大小后面跟源LV lvcreate -s -n webapp01‑snap1 -L 10G /dev/webapp/webapp01 mkdir -p /snap mount /dev/webapp/webapp01‑snap1 /snap #可以看到快照时刻的原始数据⚠️新手坑快照空间写满快照失效快照不是长期备份用完删除释放空间。新手高频错误汇总复习重点权限问题磁盘分区、RAID、LVM绝大部分命令必须root执行普通用户执行会报错permission denied。切换su -。/etc/fstab修改后不执行mount‑a直接重启配置写错系统无法开机。GPT分区用fdiskRAID1/5没有等待同步resync完成直接格式化文件系统损坏。删除RAID忘记mdadm --zero‑superblock重启磁盘自动重新组装旧RAID。LVM扩容只执行lvextend忘记执行xfs_growfsdf看不到容量增长。XFS尝试缩容XFS不支持缩减会报错只有ext4支持缩容。LVM缩容不卸载、不做e2fsck强制检测直接缩容数据毁灭性丢失。备份目录操作rm‑rf /xxx/*清空目录内容不要rm‑rf /xxx删除挂载点目录本身。RAID不等于备份磁盘阵列硬件容错不能防止误删除业务仍然需要定期备份。整体知识总结普通GPT分区直接对磁盘划分分区简单直接缺点不灵活无法在线扩容。适合固定大小分区。RAID阵列解决磁盘硬件故障容错、读写性能RAID0无容错RAID1镜像RAID5单盘容错RAID6双盘容错删除阵列三步umount → stop → zero‑superblock。LVM逻辑卷建立在磁盘/RAID之上抽象管理层PV→VG→LVXFS仅扩容命令xfs_growfsext4可扩可缩缩容必须离线卸载扩容完整链路VG有空闲→lvextend→更新文件系统VG不足vgextend加磁盘再扩LV。实验操作记忆顺序先硬件虚拟机加磁盘→识别磁盘lsblk→分区/RAID/PV→格式化文件系统→挂载→配置/etc/fstab开机自动挂
