BOSh
文章355
标签611
分类151

文章分类

315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AIStudio AI代理 AI助手 AI处理器 AI大模型 AI安全 AI应用 AI智能体 AI网关 AMD API API 集成 AWS Active Directory Agent Agentic AI AionUi Alwaysdata Android Apple Arch Linux Argo Tunnel Automation Backup Bash Bosh Bot Bot-hosting C++ CDN CEO CI/CD CLI CLI Proxy API CLIProxyAPI COMPUTEX CRM CT8 CentOS 7 Chrome 插件 Cisco Claude Claude Opus 4.6 Cloudflare Code ConnectBot Credential Manager Ct8.pl CurrentEvents DHCP DNS Debian DeepSeek DenchClaw Deployment DevOps Devil Docker Elon Musk Express FSRM FTP FreeBSD FreeLLMAPI GCP GEO GPL GPO GPS GPT GPU Gemini Gemini 3.1 Pro Ghostty Git GitHub GitHub Actions Gmail Go Gog Golang Google Google AI Pro Google API Google Cloud Google Gemini Google Photos Google Pixel HDC HKUDS Hardware HarmonyOS Hermes Hermes Agent Hexo HidenCloud Hugo Hyper-V Hyprland IIS IPV6 Intel JavaScript Jetpack Compose John Turnus KDE KOSPI Karpathy Kimi-K2.5 Kotlin LINUX LLM LTS LVM LaTeX Linux LiveUSB MBR MTProto MW4L Markdow Markdown Matrix MemU Bot Mesh-Network MiniMax Musk MyDevil NAT NAT64 NIX NODE NTFS NVIDIA NVIDIA Build NanoClaw Netcatty Netlify Newsletter Node.js Nvidia Open WebUI OpenAI OpenAI 兼容接口 OpenAI兼容 OpenCLI OpenClaw P2P PDF 编译 PV Packet Tracer Pacman Phusion Passenger PicoClaw Pixel Pixel 1 Pixel 12 Pixel11 Plasma PowerShell Prismer Productivity Pura90 Python QClaw QQ机器人 Qualcomm Quickshell R22 RAG RAID RAID5 RIP RIPv2 RTX Spark Railway Reddit Rust SFTP SMB SSH SeleniumBase Serv00 Serverless Shell Sing-box Skills SoC Sub-Store Subagent SuperCall Synapse Syncthing TPU TSMC Tailscale Telegram Telegram Bot Tensor Tensor G7 Tim Cook Tunnel Turnstile Ubuntu VG VLESS VMware VPN VPS Vercel Vite Wayland WeChat Web3 WebSSH WebSocket WebTransport Web开发 Windows Windows 11 Windows Admin Center Windows Server Windows Server 2022 WireGuard WorkBuddy X XChat XHTTP X热榜 YUM源 YouTube ZeroClaw arXiv arch c++ cc-switch cloudflared ct8.pl email find git hdc hidumper hugo hyprmod i3wm iMessage iOS iSCSI icacls mdadm n8n nanobot node js ntfs pacman pnpm podman sconfig zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 中美关系 乌克兰 习惯养成 云同步 云服务器 亚洲 人性 人教版 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 使用 俄乌战争 俄罗斯 保护主义 信息流 信息管理 停火 健康管理 光通信 免费VPS 免费主机 免费试用 全球动态 六年级 共和党 关系 养老金 内存分析 内存管理 内容工厂 内容生产 内容筛选 内网穿透 军事冲突 军事动态 军民融合 农村 分享 分配 刘欢 创业 制裁 办公自动化 加密 加密货币 加沙 北斗 北韩 医学生 半导体 华为 协议分析 博客 博客助手 博客发布 博客部署成功 卫星 即时通讯 厄尔尼诺 原生 JS 去中心化 反向代理 反思 反爬虫 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国宴 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 域名解析 域名邮箱 域控 基础设施 多代理 多模态AI 大学分析 大模型 存储 存储空间 存储管理 孙少平 学习 安全 安装 实时监控 家庭助理 家庭服务器 家装设计 小学 嵌套虚拟化 工业策略 工作总结 工作效率 工作流编排 工具 工具链 平凡的世界 平台责任 庞氏骗局 开发 开发实录 开发指南 开发调试 开源 开源软件 开源项目 张雪峰 微信 心理健康 快捷键 怀念 性能调优 情感 慈善 战争 房地产 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 故障转移群集 效率 效率工具 教程 教育制度 数学 数据分析 数据投毒 文件服务器 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 智能手机 服务器管理 服务器部署 朝鲜 权限 极端天气 架构 架构实践 核协议 核武器 桌面Cowork 桌面环境 模型接入 模型配置 欧洲安全 每日图说 比亚迪 气候 油价 法律 活动运营 浏览器自动化 消息通道 消费者权益 深度学习 渔船 游戏开发 湘雅医院 潘石屹 热点新闻 熔断 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白嫖 白嫖攻略 白山云 皮皮虾 监管 目标管理 省钱 知识库 磁盘管理 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科普 科研助手 窗口管理 笔记 第一财经 算法 算法推荐 系统管理 纽森 组策略 组网 经济 经济观察 经验分享 编程 网关 网络 网络安全 网络实验 网络摘录 网络穿透 网络规划 网络配置 美伊冲突 美伊谈判 美国 美国制裁 美国大选 美国政治 股灾 能源安全 脚本 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化脚本 自动化运维 自建服务 自律教练 自托管 自由软件 节点管理 芯片 草榴 虚拟化 虚拟化运维 虚拟机 行为改变 视频摘要 解锁 计算摄影 订阅系统 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 谷歌云 财报季 账单分析 路由协议 路由器 路由配置 路遥 身份验证 轻量级 迁移 运维 进化论 远程桌面 远程访问 远程运维 选车 邀请确认 部署 部署指南 部署教程 重复数据删除 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 青蛙机 韩国股市 韩红 韬定律 音乐 项目管理 风险管理 飞书 高中生活 高可用 高考 高考志愿 鸽巢原理 麒麟 麒麟9050 黄仁勋 黎巴嫩 龙虾

一言

文章归档

Linux 存储管理实战:从 MBR/GPT 分区基础到 LVM、RAID5 拆除与重构

Linux 存储管理实战:从 MBR/GPT 分区基础到 LVM、RAID5 拆除与重构

在 Linux 系统运维中,磁盘存储管理是一项核心基本功。从基础的磁盘分区(MBR/GPT),到高级的动态卷管理(LVM)和磁盘阵列(RAID),理解它们的底层逻辑与操作链路至关重要。

本文将整理自一次真实的 Linux 存储架构排查与重构过程,详细讲解主分区与扩展分区的物理逻辑、多盘拓扑分析,以及如何安全地解构并重构一套复杂的存储环境。

一、 深入理解:MBR 分区体系与 GPT 演进
在进行磁盘分区前,必须弄清磁盘分区表的工作机制。

  1. 主分区、扩展分区与逻辑分区的关系
    主分区(Primary Partition):独立存在的基本分区,可以直接格式化文件系统并挂载使用。

扩展分区(Extended Partition):一种特殊的“主分区容器”。它不能直接格式化或挂载,其唯一作用是作为宿主,划分出多个逻辑分区。

逻辑分区(Logical Partition):在扩展分区内部细分出的分区,可以被正常格式化和使用。

Plaintext
硬盘物理空间 (MBR 分区表)
├── 主分区 1 (sda1) -> 可挂载
├── 主分区 2 (sda2) -> 可挂载
├── 主分区 3 (sda3) -> 可挂载
└── 扩展分区 (sda4) -> [容器,不能直接使用]
├── 逻辑分区 1 (sda5) -> 可挂载
└── 逻辑分区 2 (sda6) -> 可挂载
2. MBR 分区表的物理限制
为什么会有扩展分区和逻辑分区?这是由于 MBR(Master Boot Record) 的历史设计决定的:

MBR 分区表只保留了 64 字节 的空间用于记录分区信息。

每一个分区条目需要占用 16 字节,因此:

$$\text{最大主分区数} = \frac{64 \text{ Bytes}}{16 \text{ Bytes}} = 4 \text{ 个}$$
单块磁盘上最多只能有 4 个主分区(或 3 主分区 + 1 扩展分区)。

独立性:该限制仅针对单块磁盘。若系统挂有 sda、sdb、sdc,则每块盘均拥有独立的 4 个主分区配额。

常见误区 FAQ:能否直接将已创建的“主分区 3”改为“扩展分区”?
答:不能直接修改。主分区与扩展分区的底层数据结构(文件系统 vs EBR 扩展分区表记录)完全不同。必须备份数据后,删除原主分区并重新新建为扩展分区。

  1. 现代替代方案:GPT 分区表
    在 UEFI 启动与大容量存储普及的今天,GPT(GUID Partition Table) 已经全面取代 MBR:

无逻辑分区概念:取消了扩展分区和逻辑分区的区分,所有分区均为独立主分区。

支持 128 个分区:标准配置下单盘默认支持最多 128 个分区。

打破 2TB 限制:完美支持超过 2TB 容量的物理硬盘。

二、 复杂 Linux 存储拓扑结构分析
以下是一台服务器上的真实 lsblk 拓扑输出,展现了一个典型的混合存储架构:

Plaintext
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.7G 0 part /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 9G 0 part
│ └─vg_store-lv_date 253:0 0 25G 0 lvm /data
└─sdb2 8:18 0 1023M 0 part [SWAP]
sdc 8:32 0 10G 0 disk
└─sdc1 8:33 0 9G 0 part
└─vg_store-lv_date 253:0 0 25G 0 lvm /data
sdd 8:48 0 10G 0 disk
└─sdd1 8:49 0 9G 0 part
└─vg_store-lv_date 253:0 0 25G 0 lvm /data
sde 8:64 0 15G 0 disk
└─sde1 8:65 0 15G 0 part
└─md0 9:0 0 30G 0 raid5 /raid_storage
sdf 8:80 0 15G 0 disk
└─sdf1 8:81 0 15G 0 part
└─md0 9:0 0 30G 0 raid5 /raid_storage
sdg 8:96 0 15G 0 disk
└─sdg1 8:97 0 15G 0 part
└─md0 9:0 0 30G 0 raid5 /raid_storage
sdh 8:112 0 15G 0 raid
└─sdh1 8:113 0 15G 0 part
└─md0 9:0 0 30G 0 raid5 /raid_storage
架构拆解与技术点
系统根盘 (sda):采用了传统的直接物理分区,放置 /boot、SWAP 和 / 根目录,与业务数据隔离。

动态扩容卷 LVM (sdb, sdc, sdd):

将 sdb1、sdc1、sdd1(各 9G)作为物理卷(PV),聚合为卷组 vg_store。

划分出 25G 的逻辑卷 lv_date 挂载至 /data。支持在线动态扩容。

sdb2 额外划出了 1G 空间补充为交换分区。

冗余阵列 RAID 5 (sde, sdf, sdg, sdh):

4 块 15G 磁盘构建软 RAID5 设备 /dev/md0,挂载于 /raid_storage。

RAID5 的可用容量计算公式为:

$$\text{可用容量} = (N - 1) \times \text{单盘容量}$$
此处 4 盘组成阵列,实际展示 30G,说明其中 3 块盘($2 \times 15\text{G} = 30\text{G}$)构建了有效阵列,第 4 块充当了热备盘(Hot Spare)或限制了总体分配。

三、 实战:安全拆除与重构存储环境
要清空 sdb 到 sdh 上的阵列与分区并重新划分,绝不能直接使用 fdisk 强制删除分区。必须遵循 “自上而下”(从逻辑层到底层物理设备) 的顺序解构,否则会因设备忙(Device Busy)报错。

  1. 拆除步骤(严格按顺序执行)
    第一步:取消挂载与禁用 SWAP

Bash

1. 卸载文件系统

sudo umount /data
sudo umount /raid_storage

2. 停用 sdb2 上的 SWAP 交换区

sudo swapoff /dev/sdb2
第二步:层级清理 LVM

Bash

按 LV -> VG -> PV 顺序卸载

sudo lvremove -f /dev/vg_store/lv_date
sudo vgremove -f vg_store
sudo pvremove -f /dev/sdb1 /dev/sdc1 /dev/sdd1
第三步:停止并清空 RAID 阵列

Bash

1. 停止软 RAID 设备

sudo mdadm --stop /dev/md0

2. 清除元数据超级块(Superblock)

sudo mdadm --zero-superblock /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
第四步:擦除磁盘签名并重置分区表

Bash

1. 清空剩余的磁盘元数据特征

sudo wipefs -a /dev/sd[b-h]

2. 批量将 sdb - sdh 刷新为全新的 GPT 分区表

for dev in /dev/sd[b-h]; do
sudo parted -s $dev mklabel gpt
done
执行完成后,再次运行 lsblk,硬盘将恢复为干净无依赖的裸盘状态。
2. 重新分区与挂载示例
示例 A:将单盘划分为常规 ext4 分区
Bash

在 sdb 上建立 GPT 分区并格式化

sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
sudo mkfs.ext4 /dev/sdb1

挂载使用

sudo mkdir -p /mnt/storage
sudo mount /dev/sdb1 /mnt/storage
示例 B:重新构建全新的 LVM 存储池
Bash

1. 将 sdb, sdc, sdd 创建为 PV

sudo pvcreate /dev/sdb /dev/sdc /dev/sdd

2. 创建新卷组 vg_data 并分配逻辑卷

sudo vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd
sudo lvcreate -L 25G -n lv_storage vg_data

3. 格式化为 XFS 并挂载

sudo mkfs.xfs /dev/vg_data/lv_storage
sudo mkdir -p /data_new
sudo mount /dev/vg_data/lv_storage /data_new
四、 运维注意事项:/etc/fstab 与 ISO 挂载小技巧
更新分区表挂载:在对系统进行重构后,务必检查并更新 /etc/fstab。删除已失效的 LVM/RAID/SWAP 挂载项,新增设备建议使用 blkid 获得的 UUID 进行配置,避免因设备名变动导致开机进入 Emergency Mode。

ISO 镜像挂载参数优化:在 CentOS/RHEL 环境挂载镜像作为本地 Yum 源时:

现代内核 mount 会自动识别并绑定 loop 设备,因此挂载参数中可以省略 loop 参数。

建议配合 nofail 参数防止镜像文件丢失导致系统无法启动:
Plaintext
/root/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrepo iso9660 defaults,nofail 0 0


本文由 BOSH 的博客助手 HerMes 整理 🛠️

原文链接:

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/15954.html
版权声明:本文由BoSh发布,部分内容来源于网络。