深入理解Linux磁盘管理:磁盘分区(fdisk、parted) 、格式化 (mkfs.ext4)和文件系统校验 (fsck)

举报
ImAlex 发表于 2024/10/29 18:31:45 2024/10/29
【摘要】 本文详细介绍了在 Linux 系统中如何进行磁盘分区、格式化和文件系统校验。首先,通过 fdisk 或 parted 工具对磁盘进行分区,生成多个独立的逻辑区域。然后使用 mkfs、mkfs.xfs 或 mkfs.ext4 等命令格式化这些分区,不同的文件系统类型(如 ext4、xfs、btrfs)具有不同的优缺点。格式化后,可以通过 mount 命令将分区挂载到系统目录,以进行访问管理。

本文详细介绍了在 Linux 系统中如何进行磁盘分区、格式化和文件系统校验。首先,通过 fdisk 或 parted 工具对磁盘进行分区,生成多个独立的逻辑区域。然后使用 mkfs、mkfs.xfs 或 mkfs.ext4 等命令格式化这些分区,不同的文件系统类型(如 ext4、xfs、btrfs)具有不同的优缺点。格式化后,可以通过 mount 命令将分区挂载到系统目录,以进行访问管理。为了确保文件系统的健康状态,定期使用 xfs_repair 或 fsck.ext4 命令进行文件系统校验,发现并修复潜在的问题,保障数据完整性和系统稳定性。

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。各技术博客社区平台的优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 群里红包不断,异常活跃,感兴趣的加我vx(ID:gylzbk),拉你进群,互相学习共同进步。

image.png

1. 前言

在 Linux 系统中,磁盘管理和维护是非常基础且重要的操作。本文将会详细介绍如何在 Linux 系统上进行磁盘分区与格式化,以及如何进行文件系统校验,使磁盘数据管理变得更加高效和可靠。

2. 什么是磁盘分区?

磁盘分区是将磁盘划分为多个独立区域的过程,每个区域都可以作为独立的逻辑磁盘使用。分区让我们能够在同一物理磁盘上使用不同的文件系统,或使用同一文件系统的多个实例。

2.1 常见的分区工具

  • fdisk:适用于 MBR 格式的磁盘,支持大多数基本操作。
  • parted:适用于 GPT 格式的磁盘,支持大容量磁盘和更多分区。
  • gpartedparted 的图形用户界面版本,更加直观和用户友好。

3. 如何进行磁盘分区?

3.1 步骤一:查看磁盘信息

在进行磁盘操作前,首先需要查看系统中有哪些磁盘。可以使用 lsblkfdisk -l 命令查看当前系统中的磁盘信息:

lsblk

输出示例如下:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    1G  0 part [SWAP]
└─sda3   8:3    0   38G  0 part /

或者

sudo fdisk -l

可能会显示所有磁盘,包括分区信息:

Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *        2048   2099199   2097152    1G 83 Linux
/dev/sda2         2099200   4196351   2097152    1G 82 Linux swap / Solaris
/dev/sda3         4196352  83886079  79689728   38G 83 Linux

3.2 步骤二:创建新分区

使用 fdiskparted 命令创建新的磁盘分区。例如,使用 fdisk 创建新分区:

sudo fdisk /dev/sda

输入 n 命令来新建分区,然后按照提示设置分区类型、起始和结束扇区。最后,输入 w 命令保存更改并退出。以下是 fdisk 交互示例:

Command (m for help): n
Partition type:
 p   primary (1 primary, 0 extended, 3 free)
 e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 3): 4
First sector (4196352-83886079, default 4196352):   # 按回车键
Last sector, +sectors or +size{K,M,G,T,P} (4196352-83886079, default 83886079): +10G

Created a new partition 4 of type 'Linux' and of size 10 GiB.

设置完成后,输入 w 命令保存分区表并退出。

3.3 步骤三:格式化分区

创建分区后,需要对其进行格式化,指定合适的文件系统类型。例如,将新创建的分区(如 /dev/sda4)格式化为 ext4 文件系统:

sudo mkfs.ext4 /dev/sda4

常见的其他文件系统格式化命令:

  • 格式化为 xfs

    sudo mkfs.xfs /dev/sda4
    
  • 格式化为 btrfs

    sudo mkfs.btrfs /dev/sda4
    
  • 格式化为 vfat

    sudo mkfs.vfat /dev/sda4
    

3.4 步骤四:挂载分区

格式化完成后,可以将分区挂载到系统目录中以便访问。首先创建一个挂载点,然后使用 mount 命令挂载分区:

sudo mkdir /mnt/mydisk
sudo mount /dev/sda4 /mnt/mydisk

3.5 步骤五:更新 fstab(可选)

如果希望每次系统启动时自动挂载该分区,可以编辑 /etc/fstab 文件。在文件末尾添加如下内容:

/dev/sda4    /mnt/mydisk    ext4    defaults    0    2

这样,每次系统启动时,/dev/sda4 分区都会自动挂载到 /mnt/mydisk 目录。

4. 什么是磁盘格式化?

磁盘格式化是准备磁盘以便可以存储数据的过程。格式化会创建文件系统,让操作系统能够使用这块磁盘空间。格式化包括两部分:低级格式化和高级格式化。低级格式化由制造商在出厂时完成,而高级格式化通常由操作系统完成,我们称之为“创建文件系统”。

4.1 常见的文件系统类型

不同的文件系统具有不同的特性,以下是一些常见的 Linux 文件系统:

  • ext4:第四代扩展文件系统,广泛应用于 Linux 发行版。
  • xfs:高效、推荐用于大文件的文件系统,常用于企业级应用。
  • btrfs:支持高级特性如快照和压缩,非常适合需要数据保护的环境。
  • vfat:用于兼容 Windows 的 FAT 文件系统,适用于 U 盘和其他移动存储设备。

5. 如何进行磁盘格式化?

5.1 步骤一:查看磁盘信息

在进行磁盘操作前,首先需要查看系统中有哪些磁盘。可以使用 lsblkfdisk -l 命令查看当前系统中的磁盘信息:

lsblk

输出示例如下:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    1G  0 part [SWAP]
└─sda3   8:3    0   38G  0 part /

或者

sudo fdisk -l

可能会显示所有磁盘,包括分区信息:

Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *        2048   2099199   2097152    1G 83 Linux
/dev/sda2         2099200   4196351   2097152    1G 82 Linux swap / Solaris
/dev/sda3         4196352  83886079  79689728   38G 83 Linux

通过上述命令,你可以确认要操作的磁盘设备,比如 /dev/sda 或具体的分区 如 /dev/sda3

5.2 步骤二:格式化磁盘

使用 mkfs 或者专门的文件系统命令来格式化磁盘。例如,将一块磁盘格式化为 ext4 文件系统,可以使用以下命令:

sudo mkfs.ext4 /dev/sdX

其中 /dev/sdX 是你需要格式化的磁盘设备,请根据实际情况替换。例如,对于上面的 sda3 分区,它将会是 sudo mkfs.ext4 /dev/sda3

其他文件系统的格式化命令示例:

  • 格式化为 xfs

    sudo mkfs.xfs /dev/sdX
    
  • 格式化为 btrfs

    sudo mkfs.btrfs /dev/sdX
    
  • 格式化为 vfat

    sudo mkfs.vfat /dev/sdX
    

5.3 步骤三:挂载磁盘

格式化完成后,可以将磁盘挂载到系统目录中以便访问。首先创建一个挂载点,然后使用 mount 命令挂载磁盘:

sudo mkdir /mnt/mydisk
sudo mount /dev/sdX /mnt/mydisk

例如:

sudo mount /dev/sda3 /mnt/mydisk

现在,磁盘的内容已经可以通过 /mnt/mydisk 目录进行访问了。

5.4 步骤四:更新 fstab(可选)

如果希望每次系统启动时自动挂载该磁盘,可以编辑 /etc/fstab 文件。在文件末尾添加如下内容:

/dev/sdX    /mnt/mydisk    ext4    defaults    0    2

例如:

/dev/sda3    /mnt/mydisk    ext4    defaults    0    2

这样,每次系统启动时,/dev/sda3 分区都会自动挂载到 /mnt/mydisk 目录。

6. 什么是文件系统校验?

文件系统校验是检查文件系统结构是否有错误的过程。通过校验,可以发现并修复文件系统中的潜在问题,从而保障数据的完整性和可靠性。

6.1 使用 fsck 命令

在 Linux 中,文件系统校验通常使用 fsck(file system consistency check)命令。下面是一些常用的 fsck 选项:

  • fsck -y:自动修复所有发现的问题。
  • fsck -n:检查但不修复任何问题。
  • fsck -f:强制检查,即使文件系统看起来是干净的。

6.1.1 校验与修复文件系统

在未挂载的情况下检查并修复文件系统:

sudo umount /dev/sdX1
sudo fsck -y /dev/sdX1

为了确保系统处于不使用该分区的状态下进行检查,可以首先卸载该分区:

sudo umount /dev/sdX1

然后执行校验和修复:

sudo fsck -y /dev/sdX1

这里的 /dev/sdX1 是你要校验的分区设备。例如,如果是 sda3 分区,它将会是 sudo fsck -y /dev/sda3

6.2 定时校验

为确保文件系统的健康状态,可以定期进行文件系统校验。系统管理员可以编写定时任务(cron job)来实现这一点。首先,编辑 cron 表:

sudo crontab -e

添加定时校验任务:

0 3 * * 0 sudo fsck -y /dev/sdX1

上述例子表示每周日凌晨 3 点进行文件系统校验。

7. 文件系统挂载和卸载

有时候,我们需要挂载与卸载文件系统以进行维护或调整。挂载磁盘后,必须确保正确卸载以防止数据丢失。

7.1 挂载磁盘

如前所述,创建一个挂载点并挂载磁盘:

sudo mkdir /mnt/mydisk
sudo mount /dev/sdX /mnt/mydisk

7.2 卸载磁盘

卸载磁盘非常重要,特别是在拔除设备或者准备进行磁盘校验或格式化时:

sudo umount /mnt/mydisk

在使用 umount 前,请确保所有相关进程都已关闭,并且没有其他用户或进程正在使用该挂载点。

8. 文件系统检测与修复场景应用

8.1 场景1:开机自动修复

在某些严重故障情况下,系统启动时可能自动进行文件系统检查和修复。配置文件 /etc/fstab 提供了这种功能:

例如,通过在 /etc/fstab 中设置字段:

/dev/sdX    /mnt/mydisk    ext4    defaults    0    2

这里的 2 表示这是第二优先级检查。如果数值为0,该磁盘将不会进行自动检查。

8.2 场景2:手动检查与修复

对于一些正在使用的文件系统,可以使用 sudo touch /forcefsck 文件来强制在下次启动时进行文件系统检查。

sudo touch /forcefsck

然后重启系统:

sudo reboot

系统会自动在启动过程中对文件系统进行检查和修复。

8.3 场景3:定期保护数据完整性

定期对文件系统进行 fsck 检查有助于预防潜在问题。例如,在生产环境中,每周对关键文件系统进行一次检查:

0 2 * * 0 sudo fsck -y /dev/sdX

此 cron job 会在每周日凌晨 2 点执行 fsck 检查和修复。

9. 总结

本文详细介绍了在 Linux 系统中如何对磁盘进行分区与格式化,以及如何进行文件系统校验。磁盘分区和格式化是准备存储设备以供使用的重要步骤,而文件系统校验则是保证数据完整性和系统稳定性的关键。通过学习和掌握这些基本操作,可以更好地管理和维护你的 Linux 系统。

无论是分区磁盘、格式化磁盘、挂载文件系统还是定期进行文件系统校验,这些操作都旨在确保数据的安全与系统的稳定。尽管这些操作听起来可能有些复杂,但通过多加实践,你会发现它们其实是非常直接和有用的。

希望这篇文章能帮助你更好地理解磁盘管理的概念,并在实际操作中提供指导。如果你有任何问题或需要进一步的帮助,欢迎在评论区提问。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。