当前位置: 首页 > ds >正文

Linux 磁盘管理与分区配置

Linux 磁盘管理与分区配置

一、磁盘类型与设备命名

在 Linux 系统中,不同类型的磁盘会被赋予不同的设备名称,便于系统识别和管理。常见磁盘类型及命名规则如下:

磁盘类型

设备命名前缀

命名规则

示例

SATA/SCSI/SAS

sd

按发现顺序命名,第一块为 sda,第二块为 sdb,分区后缀数字(如 sda1)

第一块硬盘的第一个分区:/dev/sda1

NVMe(高速固态硬盘)

nvme

格式为 nvmeXnYpZ:- X:通道号(起始为 0)- Y:硬盘序号(起始为 1)- Z:分区序号(起始为 1)

通道 0 第一块硬盘的第一个分区:/dev/nvme0n1p1

virtio-block(虚拟化环境)

vd

类似 sd 规则,第一块为 vda,分区后缀数字(如 vda1)

虚拟硬盘的第一个分区:/dev/vda1

二、分区方案:MBR 与 GPT

磁盘分区需要遵循特定的分区表格式,常见的两种方案为 MBR 和 GPT,两者在功能和限制上有显著差异。

1. MBR(Master Boot Record,主引导记录)

MBR 是传统的分区表格式,广泛用于早期计算机系统,但其存在明显限制:

核心特点:
  • 容量限制:最大支持 2TB 的磁盘和单个分区(超过 2TB 的部分无法识别)。
  • 分区数量限制:最多支持 4 个主分区;若需更多分区,需创建 1 个扩展分区,再在扩展分区内划分逻辑分区(总分区数最多 15 个)。
  • 结构组成:位于磁盘第一个扇区(512 字节),包含:
    • 主引导代码(446 字节):负责启动系统。
    • 分区表(64 字节):记录 4 个主分区的信息(每个分区占 16 字节)。
    • 结束标志(2 字节):固定为 0x55AA。
适用场景:
  • 磁盘容量 ≤ 2TB 的老旧系统或兼容性需求场景。

2. GPT(GUID Partition Table,全局唯一标识分区表)

GPT 是现代分区表格式,解决了 MBR 的限制,适用于大容量磁盘和新系统:

核心优势:
  • 容量支持:最大支持 8ZiB(约 800 万 TB)的磁盘和分区,适配现代大容量存储设备。
  • 分区数量:默认支持 128 个主分区(无扩展分区 / 逻辑分区概念),满足多分区需求。
  • 数据安全:分区表在磁盘首尾各保存一份(主分区表 + 备份分区表),某一份损坏可通过另一份恢复。
  • 兼容性:需配合 UEFI 固件使用(传统 BIOS 也可支持,但功能受限)。
适用场景:
  • 磁盘容量 > 2TB 的系统、UEFI 启动的现代计算机、需要多分区的服务器环境。

3. 单位换算说明

磁盘容量单位需注意 “十进制” 与 “二进制” 的区别:

  • 十进制(厂商标注):1KB=1000B,1MB=1000KB,1GB=1000MB,以此类推。
  • 二进制(系统识别):1KiB=1024B,1MiB=1024KiB,1GiB=1024MiB,以此类推。

(Linux 中 parted 工具默认使用二进制单位 MiB/GiB,需注意与十进制单位的差异。)

三、分区创建工具与方法

1. fdisk 工具(适用于 MBR 分区)

fdisk 是创建和管理 MBR 分区的经典工具,支持交互式操作:

操作步骤:
  1. 查看磁盘信息:确认目标磁盘设备名(如 /dev/sdb)
fdisk -l # 列出所有磁盘及分区信息
  1. 进入交互界面
fdisk /dev/sdb # 对 /dev/sdb 磁盘进行分区
  1. 常用交互命令(输入 m 可查看帮助):
    • n:新建分区(选择 p 主分区或 e 扩展分区,扩展分区内可创建逻辑分区)。
    • d:删除分区。
    • t:修改分区类型 ID(如标记为 Linux 分区、swap 分区等)。
    • p:查看当前分区表。
    • w:保存分区表并退出(生效分区配置)。
    • q:不保存退出。
  1. 刷新内核识别:分区后需通知内核更新分区表
partprobe /dev/sdb # 刷新 /dev/sdb 的分区信息

2. parted 工具(支持 MBR 和 GPT)

parted 是更强大的分区工具,支持 MBR 和 GPT 分区表,适合大容量磁盘:

交互式创建 MBR 分区:
parted /dev/sdb # 进入 /dev/sdb 的交互界面(parted) mklabel msdos # 指定 MBR 分区表(msdos 即 MBR)(parted) unit MiB # 设置单位为 MiB(二进制)(parted) mkpart # 新建分区Partition type? primary/extended? primary # 主分区File system type? [ext2]? xfs # 标记文件系统(仅标记,未格式化)Start? 1 # 起始位置(从 1MiB 开始,跳过引导区)End? 501 # 结束位置(分区大小为 500MiB)(parted) p # 查看分区表(parted) quit # 退出,自动保存udevadm settle # 同步分区表到系统
交互式创建 GPT 分区:
parted /dev/sdb(parted) mklabel gpt # 指定 GPT 分区表(parted) unit MiB # 设置单位为 MiB(parted) mkpartPartition name? []? data1 # 分区名称(可选)File system type? [ext2]? ext4 # 标记文件系统类型Start? 1 # 起始位置End? 100 # 结束位置(分区大小 99MiB)(parted) p(parted) quitudevadm settle
无交互模式创建分区:

适合脚本自动化操作:

# 创建 MBR 分区parted /dev/sdb mklabel msdosparted /dev/sdb mkpart primary xfs 1MiB 501MiB# 创建 GPT 分区parted /dev/sdb mklabel gptparted /dev/sdb mkpart data1 ext4 1MiB 100MiB

四、分区格式化与挂载配置

分区创建后需格式化文件系统并配置挂载,才能实际存储数据。

1. 格式化文件系统

使用 mkfs 工具格式化分区(支持多种文件系统,如 ext4、XFS 等):

# 格式化分区为 ext4(Linux 常用)mkfs.ext4 /dev/sdb1# 格式化分区为 XFS(CentOS 7+ 默认,适合大文件)mkfs.xfs /dev/sdb1# 查看支持的文件系统:按 Tab 键补全mkfs. # 输入 mkfs. 后按 Tab 键,列出所有支持的文件系统工具

2. 创建挂载点

挂载点是访问分区的目录入口:

mkdir /data # 创建 /data 作为挂载点

3. 配置自动挂载(/etc/fstab)

通过 /etc/fstab 配置分区开机自动挂载,需使用分区的 UUID(唯一标识,避免设备名变动影响挂载):

步骤:
  1. 查看分区 UUID
blkid /dev/sdb1 # 输出格式:/dev/sdb1: UUID="xxx" TYPE="ext4"
  1. 编辑 /etc/fstab
vim /etc/fstab

添加以下内容(格式:UUID=xxx 挂载点 文件系统类型 挂载参数 0 0):

UUID=12345678-1234-5678-1234-567812345678 /data ext4 defaults 0 0
    • 挂载参数 defaults:包含 rw(读写)、suid、dev、exec、auto 等默认权限。
    • 最后两个 0:表示不启用 dump 备份和 fsck 磁盘检查(系统分区通常设为 1 1)。
  1. 验证挂载配置
mount -a # 加载 /etc/fstab 中的所有挂载配置df -Th # 查看挂载状态(确认 /data 已挂载)

五、交换分区管理

交换分区(Swap Partition)是 Linux 系统的虚拟内存,当物理内存不足时,系统会将部分不活跃数据写入交换分区,缓解内存压力。

1. 交换分区的作用与特点

  • 核心作用:扩展虚拟内存,防止物理内存耗尽导致的进程崩溃(OOM,Out Of Memory)。
  • 性能特性:交换分区位于磁盘,速度远低于物理内存,仅作为内存不足时的应急机制。
  • 适用场景:所有 Linux 系统建议配置(服务器需根据内存需求调整大小,嵌入式设备可省略)。

2. 交换分区大小建议

物理内存容量

建议交换分区大小(普通场景)

建议交换分区大小(需休眠功能)

≤ 2GB

物理内存的 2 倍

物理内存的 3 倍

2GB ~ 8GB

等于物理内存容量

物理内存 + 2GB

8GB ~ 64GB

4GB ~ 8GB

物理内存的 1.5 倍

> 64GB

根据实际需求(通常 4GB ~ 16GB)

不建议使用休眠功能

3. 交换分区的创建与配置

步骤 1:创建交换分区(使用 parted)
parted /dev/sdb # 进入目标磁盘(parted) mkpart # 新建分区Partition name? []? swap1File system type? [ext2]? linux-swap # 标记为交换分区类型Start? 101MiB # 起始位置(接在已有分区之后)End? 111MiB # 结束位置(大小为 10MiB)(parted) quitudevadm settle # 同步分区表
步骤 2:格式化交换分区
mkswap /dev/sdb2 # 格式化 /dev/sdb2 为交换分区(自动生成 UUID)
步骤 3:配置自动挂载(/etc/fstab)

交换分区无需挂载点,直接配置类型为 swap:

  1. 查看交换分区 UUID:
blkid /dev/sdb2 # 获取 UUID(格式:UUID="xxx" TYPE="swap")
  1. 编辑 /etc/fstab:
vim /etc/fstab

添加内容:

UUID=87654321-8765-4321-8765-432187654321 swap swap defaults 0 0
步骤 4:启用交换分区
swapon -a # 加载 /etc/fstab 中的所有交换分区free -m # 查看内存和交换分区使用情况(Swap 行显示已启用)

4. 交换分区管理命令

命令

功能说明

free -m

查看物理内存和交换分区的使用情况(MB 单位)

swapon -a

启用 /etc/fstab 中所有交换分区

swapon /dev/sdb2

单独启用指定交换分区

swapoff -a

关闭所有交换分区

swapoff /dev/sdb2

单独关闭指定交换分区

swapon -s

查看所有已启用的交换分区信息

5. 交换分区 vs 交换文件

除交换分区外,Linux 还支持通过交换文件实现虚拟内存:

  • 交换分区:独立分区,性能略优,适合固定需求场景。
  • 交换文件:在现有文件系统中创建文件作为交换空间,灵活易调整(无需重新分区),适合临时扩展内存。

(创建命令:dd if=/dev/zero of=/swapfile bs=1G count=10 → mkswap /swapfile → swapon /swapfile)。

六、总结

  • 磁盘类型:根据硬件类型(SATA/NVMe/virtio)识别设备命名,便于定位目标磁盘。
  • 分区方案:MBR 适用于小容量磁盘,GPT 适用于大容量和现代系统,需根据磁盘大小选择。
  • 分区工具:fdisk 适合 MBR 分区,parted 支持 MBR 和 GPT,功能更全面。
  • 挂载配置:通过 /etc/fstab 实现分区开机自动挂载,使用 UUID 确保稳定性。
  • 交换分区:作为虚拟内存补充,需根据物理内存大小合理配置,保障系统在内存压力下的稳定性。

掌握磁盘分区与管理是 Linux 系统运维的基础,合理规划分区结构和交换空间,可显著提升系统的稳定性和存储效率。

http://www.xdnf.cn/news/17191.html

相关文章:

  • 【2025WACV-最佳论文】RayGauss:基于体积高斯的光线投射,用于逼真的小说视图合成
  • (JAVA)自建应用调用企业微信API接口,设置企业可信IP
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第五天(jQuery函数库)
  • 使用1panel将http升级至https的过程
  • 板子指示灯状态设计
  • ESDocValues机制
  • Easysearch 集成阿里云与 Ollama Embedding API,构建端到端的语义搜索系统
  • python与C++
  • web第一次作业
  • Spring Cloud Gateway 实现登录校验:构建统一认证入口
  • Kali基础知识点【2】
  • Linux 网络深度剖析:传输层协议 UDP/TCP 原理详解
  • 小实验:按键点灯(中断法)
  • 如何安装 nvm-setup.exe?Windows 安装 NVM 管理 Node.js 版本的完整流程(附安装包下载)
  • C# 类型
  • Git基础操作教程
  • Dbeaver数据库的安装和使用(保姆级别)
  • 计算机网络:理解路由的下一跳
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现路口车辆速度的追踪识别(C#代码UI界面版)
  • 【保姆级 - 大模型应用开发】DeepSeek + Faiss + langchain 搭建本地知识库 检索 | 代码实战
  • 行业报告:.games域名正引领游戏娱乐产业营销新风向
  • Ubuntu 下 MySQL 运维自动化部署教程(在线简易版)
  • 【测试】⾃动化测试常⽤函数
  • Linux命令top
  • Selenium教程(Python 网页自动化测试脚本)
  • 清洁机器人从“看到垃圾”到“预判污染”:技术如何演变?
  • Ubuntu24.04的VSCode中安装MoonBit和MoonBit Toolchain(moon-pilot)
  • 开源的现代数据探索和可视化平台:Apache Superset 从 PyPI 安装 Superset
  • Axure日期日历高保真动态交互原型
  • linux的用户操作(详细介绍)