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

Linux 磁盘管理详解:分区、格式化与挂载全流程指南

Linux 磁盘管理详解:分区、格式化与挂载全流程指南

一、磁盘类型及命名规则

不同接口的磁盘在Linux中设备名格式固定,需精准识别:

  • SATA/SCSI/SAS磁盘:以sd为前缀,按发现顺序命名。

    • 第一块硬盘:sda,第二块:sdb,以此类推;
    • 分区命名:在硬盘名后加数字,如sda1(第一块盘第一个分区)、sda2(第一块盘第二个分区)。
  • NVMe磁盘:格式为nvmeXnYpZ,各参数含义严格区分:

    • X:通道号(起始为0,如0号通道);
    • Y:硬盘号(起始为1,如1号硬盘);
    • Z:分区号(起始为1,如1号分区);
      示例:0号通道1号硬盘的1号分区 → nvme0n1p1
  • virtio-block磁盘:以vd为前缀,命名规则同SATA:

    • 第一块硬盘:vda,分区:vda1vda2等。

二、磁盘/分区查看工具

1. fdisk -l:查看分区细节(MBR/GPT通用)

执行后显示所有磁盘及分区信息,核心字段含义:

  • Device:分区设备文件路径(如/dev/sda1);
  • Boot:是否为引导分区(*表示是,用于启动系统);
  • Start:分区在磁盘中的起始柱面数;
  • End:分区在磁盘中的结束柱面数;
  • Sectors:分区包含的总扇区数(扇区是磁盘最小存储单位);
  • Size:分区总容量(如500M、1G);
  • Id:分区系统ID号(固定值:83=Linux数据分区,82=swap交换分区,7=NTFS等);
  • Type:分区类型(如LinuxLinux swap)。
2. parted -l:查看分区布局(侧重分区表类型)
  • 功能:显示所有磁盘的分区表类型(MBR/GPT)、分区大小、文件系统标记等;
  • 查看单磁盘详情:parted /dev/sda print(指定查看sda的分区表)。

三、分区方案(MBR与GPT的底层细节)

1. MBR(Master Boot Record,主引导记录)
  • 核心限制
    • 最大支持磁盘/分区容量:2TB(超过2TB无法识别);
    • 分区数量:最多4个主分区;或3个主分区+1个扩展分区(扩展分区内可建逻辑分区,逻辑分区编号从5开始),总分区数最多15个;
    • 无分区表备份,损坏后难以恢复。
  • 结构细节
    磁盘第一个扇区(512字节)即MBR,包含:
    • 446字节:主引导记录(启动代码,用于引导系统);
    • 64字节:分区表(每分区占16字节,最多记录4个分区);
    • 2字节:结束标志(0x55AA,验证MBR有效性)。
2. GPT(GUID Partition Table,全局唯一标识分区表)
  • 核心优势
    • 支持超2TB大磁盘,单分区最大容量8ZB;
    • 分区数量:最多128个(几乎无限制);
    • 分区表备份:磁盘首尾各存一份相同分区表,一份损坏可通过另一份恢复;
    • 引导记录与数据分离存储,更安全。

四、分区操作(parted工具全流程,含交互式/非交互式)

前提:为新磁盘写入“磁盘标签”(确定分区方案)

新磁盘需先指定用MBR还是GPT,否则无法分区:

# 写入MBR标签(对应msdos格式)
parted /dev/sdb mklabel msdos  # 写入GPT标签
parted /dev/vdb mklabel gpt  
1. 交互式分区(适合新手,步骤详尽)

以“给/dev/sdc创建500MB gpt主分区”为例:

parted /dev/sdc  # 进入sdc磁盘的交互模式(输入后回车)
(parted) mklabel 
新的磁盘标签类型?   gpt
(parted) unit MiB  # 设置单位为MiB(避免计算错误,也可设GiB)
(parted) (parted) mkpart 
分区名称?  []?                                                           
文件系统类型?  [ext2]?      后面格式化不用管现在的系统类型                                             
起始点? 10MiB
结束点? 510MiB
(parted) quit  # 退出,自动保存分区配置(无需手动保存)
2. 非交互式分区(快速操作,适合脚本)

直接在命令行完成,无需交互:

# 给/dev/sdc创建500MB MBR主分区(xfs标记)
parted /dev/sdc mkpart primary xfs 1MB 501MB  # 给/dev/vdc创建1GB GPT分区(ext4标记)
parted /dev/vdc mkpart primary ext4 1MB 1001MB  
3. 刷新分区识别

分区创建后,系统需时间生成/dev/sdc1等设备文件,执行以下命令等待完成:

udevadm settle  #  系统分区表同步到到硬盘里

五、格式化分区(将分区转为可用文件系统)

分区仅标记文件系统类型,需格式化后才能存储数据,常用命令:

# 格式化为xfs(适合大文件,性能优,CentOS 7+默认)
mkfs.xfs /dev/sdc1  # 格式化为ext4(兼容性好,支持小文件,Ubuntu常用)
mkfs.ext4 /dev/sdc2  
命令对应文件系统特点适用场景
mkfs.btrfsbtrfs支持快照、RAID、动态扩展,具备 Checksumming 数据校验功能,可在线调整大小需要高级功能的服务器存储、大容量存储池
mkfs.ext2ext2无日志功能,性能较好但数据恢复能力弱,不支持大文件小型嵌入式设备、临时存储分区
mkfs.ext3ext3在 ext2 基础上增加日志功能,数据一致性好,兼容性强对稳定性要求高的传统 Linux 系统
mkfs.ext4ext4ext3 的升级版本,支持更大文件和分区,具备延迟分配、extents 等特性大多数 Linux 系统的默认选择,平衡性能与稳定性
mkfs.cramfscramfs压缩的只读文件系统,占用空间小嵌入式系统、启动盘等对空间有限制的场景
mkfs.fatfat兼容 Windows 和 Linux 系统,支持多种设备移动存储设备(如 U 盘)、跨系统交换数据
mkfs.minixminix早期 Linux 使用的文件系统,功能简单,限制较多仅用于测试或兼容老旧系统
mkfs.msdosmsdos即 FAT16,支持的分区和文件大小有限老旧设备、小容量存储
mkfs.vfatvfat即 FAT32,支持更大的分区和文件,兼容性广泛移动硬盘、数码相机等设备
mkfs.xfsxfs高性能日志文件系统,支持大文件和快速恢复,并行 I/O 能力强大型服务器、数据仓库、需要处理大文件的场景

六、挂载管理(临时/永久,含/etc/fstab详解)

1. 临时挂载(重启后失效,适合临时使用)
mkdir /mydata  # 先创建挂载点目录(必须存在)
mount /dev/sdc1 /mydata  # 将sdc1挂载到/mydata
2. 永久挂载(写入/etc/fstab,需严格格式)

/etc/fstab是系统启动时自动挂载的配置文件,格式错误会导致系统无法启动!每个字段含义:

字段序号含义示例
1设备标识(用UUID,用blkid查询)UUID=123e4567-e89b-12d3-a456-426614174000
2挂载点目录(swap分区此处必须写swap/mydata
3文件系统类型(如xfs、ext4、swap)xfs
4挂载参数(defaults含rw、suid、dev、exec、auto、nouser、async)defaults
5dump备份标识(1=需要备份,0=不备份)0
6fsck检查顺序(0=不检查,1=优先检查,2=次要检查;xfs不支持fsck设0)0

永久挂载步骤

  1. 查分区UUID(关键,避免设备名变动导致挂载失败):

    blkid /dev/sdc1  # 输出类似:/dev/sdc1: UUID="123e4567..." TYPE="xfs"
    
  2. 写入/etc/fstab

    vim /etc/fstab  # 打开文件,添加一行:
    UUID=123e4567-e89b-12d3-a456-426614174000 /mydata xfs defaults 0 0
    
  3. 验证配置(无报错则正确):

    mount -a  # 加载fstab中所有未挂载的设备
    

七、交换分区管理(虚拟内存,含创建/启用全流程)

交换分区用于临时补充物理内存不足,步骤如下:

1. 创建swap分区(以MBR为例)
 parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit                                                             
Unit?  [compact]? mib                                                     
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start    End     Size    File system  Name  标志1      10.0MiB  510MiB  500MiB  ext4
(parted) mkpart                                                           
分区名称?  []?                                                           
文件系统类型?  [ext2]?                                                   
起始点? 520mib                                                           
结束点? 1020mib                                                          
(parted) quit                                                             
信息: You may need to update /etc/fstab.udevadm settle 
2. 格式化swap分区
mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=9017cbdc-f96f-48b1-82ca-c99d211e5aaa# 将分区格式化为swap文件系统
3. 永久启用swap(写入/etc/fstab

swap分区的/etc/fstab格式特殊(挂载点为swap):

# 查swap分区UUID(用blkid)vim /etc/fstab 
---------------------------------------
UUID=87d659c5-1b81-4f10-bcf5-83063ae0c5cb swap  swap    defaults     0 0---------------------------------------
#或echo "UUID=xxx swap swap defaults 0 0" >> /etc/fstab
4. 激活/关闭swap
swapon -a  # 启用fstab中所有swap分区(生效配置)
swapoff -a  # 关闭所有swap分区(临时关闭)
5. 查看swap使用情况
free -m  # 以MB为单位显示:total(总大小)、used(已用)、free(空闲)total        used        free      shared  buff/cache   available
Mem:           3932         807        2153          86         971        2745
Swap:          4595           0        4595

八、fdisk工具使用(不推荐)

fdisk仅支持MBR分区,且操作需手动同步,步骤如下:

fdisk /dev/sda  # 进入sda磁盘的交互模式
# 常用命令:
n  # 新建分区(输入后选主分区/扩展分区,指定起始扇区和大小)
d  # 删除分区(输入分区编号)
p  # 查看当前分区表
t  # 修改分区ID(如将分区类型改为swap,输入82)
l  # 列出所有分区ID对应的类型
q  # 不保存退出(放弃所有操作)
w  # 保存退出(写入分区表)# 保存后需同步分区表(否则系统不识别)
partprobe /dev/sda  # 刷新sda的分区表

九、单位说明

  • 十进制:1MB=1000KB,1GB=1000MB(partedunit MB默认此单位);
  • 二进制:1MiB=1024KiB,1GiB=1024MiB(格式化时部分工具用此单位)。
    分区时建议统一单位(如MB),避免容量计算偏差。

总结:完整操作链

  1. 查看磁盘:fdisk -l 确认目标磁盘(如/dev/sdc);
  2. 写标签:parted /dev/sdc mklabel msdos(选MBR);
  3. 分区:交互式/非交互式创建分区(如500MB主分区);
  4. 刷新:udevadm settle 生成/dev/sdc1
  5. 格式化:mkfs.xfs /dev/sdc1
  6. 查UUID:blkid /dev/sdc1
  7. 永久挂载:写/etc/fstabmount -a验证。

以上涵盖所有细节,确保操作无遗漏。

http://www.lryc.cn/news/610396.html

相关文章:

  • 内联函数:提升效率的空间换时间艺术
  • C++面试题及详细答案100道( 01-10 )
  • mongodb源代码分析创建db流程分析
  • 【论文阅读】ACE: Explaining cluster from an adversarial perspective
  • Makefile文件写法模板
  • 数据与模型优化随机森林回归进行天气预测
  • CLM陆面过程模式实践技术应用
  • 攻防世界-Mobile-easyjni
  • 8.高斯混合模型
  • 基于Springboot+Mybatis+thymeleaf的个人博客系统的设计与实现
  • 监控插件(二)prometheus(2)API CounterGauge
  • Linux下PXE服务器搭建
  • EdgeView for macOS:解决图像管理痛点的利器
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • Scrapy爬虫集成MongoDB存储
  • FinalShell 跳板机proxyjump使用
  • Go 与 Python 爬虫代码实操对比
  • Python接口自动化测试之之request
  • SpringMvc跨域配置方法详解
  • Jmeter进行性能并发测试
  • 设计模式-创建型-工厂模式
  • Clion STM32CubeMX LED闪灯
  • CentOS卸载、安装MySQL8(yum操作)
  • 【QT】常⽤控件详解(三)常用按钮控件PushButton RadioButton CheckButton Tool Button
  • Kali基础知识点【2】
  • 查看 Java 字节码文件:jclasslib 的使用
  • C++高频知识点(十四)
  • 文件包含篇
  • Linux中netstat详细使用指南
  • MySQL偏门但基础的面试题集锦