当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]Linux磁盘存储区管理原理与技巧

在Linux下管理磁盘贮存区算的上一个技巧,很多朋友在这上面常常问我,今天我就把这方面的东西汇总一下,从Linux特有的交换分区的原理开始介绍Linux下如何管理磁盘。

原理篇

1. 交换空间是什么

Linux 中的 交换空间(Swap space) 在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入物理内存要慢。

交换空间可以是一个专用的交换分区(推荐的方法),交换文件,或两者的组合。 交换空间的总大小应该相当于你的计算机内存的两倍和 32 MB这两个值中较大的一个,但是它不能超过 2048 MB(2 GB)。

2. 添加交换空间

有时,你会有必要在安装后添加更多的交换空间。例如,你把系统内存从 64 MB 升级到 128 MB,但是你只有 128 MB 的交换内存。如果你执行的是大量使用内存的操作或运行需要大量内存的程序,把交换区增加到 256 MB 可能会对你有利。

你有两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区,不过,若你没有多少空闲空间可用,创建交换分区可能会不大容易。

要添加一个交换分区(假设 /dev/hdb2 是你想添加的交换分区):

硬盘驱动器不能在被使用(分区不能被挂载,交换分区不能被启用)。要达到这一目的的最简单方法是在救援模式下引导你的系统。当提示挂载文件系统时,选择 「跳过」 。

如果驱动器不包含任何被使用的分区,你还可以卸载这些分区,使用 swapoff 命令来关闭硬盘驱动器上的所有交换空间。

技巧篇

使用 parted 或 fdisk 来创建交换分区。 parted 比 fdisk 使用起来更方便,因此,只有 parted 在这里会被说明。要使用 parted 来创建交换分区:

在 shell 提示下以根用户身份键入命令: parted /dev/ hdb 。这里的 /dev/ hdb 是你的带有空闲空间的硬盘驱动器的设备名称。

在 (parted) 提示下,键入 print 来查看现存的分区和空闲空间的数量。起止值以 MB 为单位。判定硬盘驱动器上的空闲空间数量,以及你想给新建的交换分区分配的空间数量。

在 (parted) 提示下,键入 mkpartfs part-type linux-swap start end ,这里的 part-type 是 primary、extended、logical 中的一个, start 是分区的起始点, end 是分区的终止点。

警告:改变会立即发生,在键入时请谨慎从事。

键入 quit 来退出 parted 。

现在,你就可以创建交换分区了,使用 mkswap 命令来设置交换分区。在 shell 提示下以根用户身份键入以下命令:

mkswap /dev/hdb2

要立即启用交换分区,键入以下命令:

swapon /dev/hdb2

要在引导时启用,编辑 /etc/fstab 文件来包括以下行:

/dev/hdb2 swap swap defaults 0 0

在系统下次引导时,它就会启用新建的交换分区。

新添了交换分区并启用它之后,请查看 cat /proc/swaps 或 free 命令的输出来确保交换分区已被启用了。

要添加交换文件:

判定新交换文件的大小,将大小乘以 1024 来判定块的大小。例如,大小的 64 MB 的交换文件的块大小为 65536。

在 shell 提示下以根用户身份键入以下命令,其中的 count 等于想要的块大小:

dd if=/dev/zero of=/swapfile bs=1024 count=65536

使用以下命令来设置交换文件:

mkswap /swapfile

要立即启用交换文件而不是在引导时自动启用,使用以下命令:

swapon /swapfile

要在引导时启用,编辑 /etc/fstab 文件来包含以下行:

/swapfile swap swap defaults 0 0

系统下次引导时,它就会启用新建的交换文件。

新添了交换分区并启用它之后,请查看 cat /proc/swaps 或 free 命令的输出来确保交换分区已被启用了。

3. 删除交换空间

要删除交换分区:

硬盘驱动器不能在被使用(分区不能被挂载,交换分区不能被启用)。要达到这一目的的最简单方法 是在救援模式下引导你的系统。

如果驱动器不包含任何被使用的分区,你还可以卸载这些分区,使用 swapoff 命令来关闭硬盘驱动器上的所有交换空间。

在 shell 提示下以根用户身份键入以下命令来确定交换分区已被禁用(这里的 /dev/hdb2 是交换分区):

swapoff /dev/hdb2

从 /etc/fstab 文件中删除这个项目。

使用 parted 或 fdisk 来删除分区。只有 parted 在这里会被说明。要使用 parted 来删除分区:

在 shell 提示下以根用户身份键入命令: parted /dev/ hdb 。这里的 /dev/ hdb 是你的带有交换空间的硬盘驱动器的设备名称。

在 (parted) 提示下,键入 print 来查看现存的分区并判定你想删除的交换分区的次要号码。

在 (parted) 提示下,键入 rm MINOR ,这里的 MINOR 是你想删除的分区的次要号码。

警告:改变会立即发生,你必须键入正确的次要号码。

键入 quit 来退出 parted 。

要删除交换文件:

在 shell 提示下以根用户身份执行以下命令来禁用交换文件(这里的 /swapfile 是交换文件):

swapoff /swapfile

从 /etc/fstab 中删除该项目。

删除实际文件:

rm /swapfile

4. 移动交换空间

要把交换空间从某处移到另一处,请首先遵循删除交换空间的说明,再遵循添加交换空间的说明。

在你安装了 Red Hat Linux 系统后,你可能想查看现存的分区表,改变分区的大小, 删除分区,或从空闲空间或附加的硬盘驱动器上添加分区。 parted工具会允许你执行这些任务。本章讨论如何使用parted命令来执行文件系统任务。此外,你还可以使用 fdisk来执行多数此类任务(除重新划分分区以外)。要获得 fdisk的更多信息,请阅读其说明书页(man)或信息页(info)。

你必须安装了parted 软件包才能使用parted工具。要启动parted ,在shell 提示下以根用户身份键入命令 parted /dev/hdb

这里的/dev/hdb是你想配置的设备名称。你会看到一个(parted)提示。键入 help来查看可用命令的列表。

如果你想创建、删除分区或重新划分分区大小,分区所在设备不能正在被使用(分区不能被挂载,并且交换空间不能被启用)。 达到这个目的的最简单方法是在救援模式中引导系统。

如果驱动器不包含任何正在被使用的分区,你可以使用 umount 命令来卸载分区,使用swapoff 命令来关闭硬盘驱动器上的交换空间。

命令篇

下表包含一列最常用的parted命令。

print

A table similar to the following will appear:

Disk geometry for /dev/hda: 0.000-9765.492 megabytes
Disk label type: msdos
MinorStartEndTypeFilesystem Flags
10.031101.975 primary ext3boot
2101.975611.850 primary linux-swap
3611.851760.891 primary ext3
4760.891 9758.232 extendedlba
5760.922 9758.232 logical ext3

第一行显示了磁盘的大小;第二行显示了磁盘标签类型;剩余的输出显示了分区表。

在分区表中,Minor(次要)标签是分区号码。例如,次要号码为 1 的分区和 /dev/hda1 相对。

Start(开始)和 End(结束)值以 MB 为单位。

Type(类型)是 primary、extended、logical 中的一个。

Filesystem(文件系统)是文件系统的类型,它可以是 ext2、ext3、FAT、hfs、jfs、linux-swap、ntfs、reiserfs、hp-ufs、sun-ufs 或 xfs 之一。

Flags(标志)列列出了分区被设置的标准。可用的标志有: boot、root、swap、hidden、raid、lvm 或 lba。

窍门:

要不重新启动 parted来选择不同的设备,使用select命令,再紧跟设备名,如/dev/hdb。然后,你便可以查看或配置它的分区表

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在Zynq MPSoC开发中,实现PS端Linux与PL端自定义IP核的AXI互联是构建高性能异构系统的关键环节。这种互联方式充分发挥了ARM处理器的软件优势与FPGA的硬件加速能力,为复杂应用提供了强大的计算平台。

关键字: Zynq MPSoC Linux

在物联网与智能设备飞速普及的当下,嵌入式系统的安全性与稳定性愈发关键。实时操作系统(RTOS)凭借其高确定性、低延迟的特性,成为工业控制、医疗设备、航空电子等安全敏感领域的核心支撑。而内存保护单元(MPU)作为硬件级安全...

关键字: Linux Windows

3月10日消息,2026年开年,一个名为OpenClaw的开源项目以闪电般的速度席卷了GitHub。它在短短一天内就斩获了9000颗星

关键字: OpenClaw Linux

3月6日消息,在摩根士丹利会议上,NVIDIA CEO黄仁勋分享了关于Agentic AI(代理式人工智能)转折点的见解,并将开源软件OpenClaw评价为“当代最重磅的软件发布”。

关键字: OpenClaw Linux

Linux内存管理是操作系统的核心机制之一,通过虚拟内存与物理内存的分离设计,实现了多进程内存隔离、高效资源利用和系统稳定性保障。

关键字: Linux 内存

在Linux系统中,进程管理是内核的核心功能之一,其核心目标是通过高效的调度机制和进程切换技术,实现多任务并发执行。

关键字: Linux CPU

内核是操作系统的核心,它作为应用程序与硬件设备之间的"中间人",负责进程调度、内存管理、硬件通信和系统调用等关键功能。Linux和Windows作为全球使用最广泛的两大操作系统,其内核设计理念、架构和运行机制存在本质差异...

关键字: Linux Windows

在Linux系统中,当开发者使用mmap()系统调用将磁盘文件映射到进程的虚拟地址空间时,一个看似简单的指针操作背后,隐藏着操作系统内核与硬件协同工作的复杂机制。这种机制不仅突破了传统文件IO的效率瓶颈,更重新定义了内存...

关键字: Linux 文件IO 内存映射

在Linux驱动开发领域,持续集成与持续部署(CI/CD)流水线通过自动化流程将代码变更快速转化为可靠部署,而KernelCI与LTP测试套件的深度集成则成为保障驱动稳定性的关键技术组合。本文将从原理分析、应用场景及实现...

关键字: CICD流水线 Linux

在Linux系统中,动态库(共享库)是程序运行的重要组成部分。当程序需要调用动态库时,系统必须能够找到这些库文件的位置。

关键字: 动态库 Linux
关闭