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

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.lryc.cn/news/610427.html

相关文章:

  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解
  • 川翔云电脑:引领开启算力无边界时代
  • 数学 理论
  • 哪些企业需要私有化部署?有没有推荐的私有化im
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程