有一个神话是 linux 的磁盘从来不需要整理碎片。在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3、4等等)来处理文件系统。然而,在一些特殊情况下,碎片仍旧会产生。如果正巧发生在你身上,解决方法很简单。

什么是磁盘碎片

文件系统会按块更新文件,如果这些块没有连成一整块而是分布在磁盘的各个角落中时,就会形成磁盘碎片。这对于 FAT 和 FAT32 文件系统而言是这样的。在 NTFS 中这种情况有所减轻,但在 Linux(extX)中却几乎不会发生。下面是原因:

在像 FAT 和 FAT32 这类文件系统中,文件紧挨着写入到磁盘中。文件之间没有空间来用于增长或者更新:

NTFS 中在文件之间保留了一些空间,因此有空间进行增长。但因块之间的空间是有限的,碎片也会随着时间出现。

Linux 的日志型文件系统采用了一个不同的方案。与文件相互挨着不同,每个文件分布在磁盘的各处,每个文件之间留下了大量的剩余空间。这就给文件更新和增长留下了很大的空间,碎片很少会发生。

此外,碎片一旦出现了,大多数 Linux 文件系统会尝试将文件和块重新连续起来。

Linux 中的磁盘整理

除非你用的是一个很小的硬盘或者空间不够了,不然 Linux 很少会需要磁盘整理。一些可能需要磁盘整理的情况包括:

  • 如果你编辑的是大型视频文件或者 RAW 照片,但磁盘空间有限
  • 如果你使用一个老式硬件,如旧笔记本,你的硬盘会很小
  • 如果你的磁盘开始满了(大约使用了85%)
  • 如果你的家目录中有许多小分区

最好的解决方案是购买一个大硬盘。如果不可能,磁盘碎片整理就很有用了。

如何检查碎片

fsck 命令会为你做这个,换句话说,如果你可以在 LiveCD 中运行它,那么就可以用于所有卸载的分区

这一点很重要:在已经挂载的分区中运行 fsck 将会严重危害到你的数据和磁盘

你已经被警告过了。开始之前,先做一个完整的备份。

免责声明: 本文的作者与本站将不会对您的文件、数据、系统或者其他损害负责。你需要自己承担风险。如果你继续,你需要接受并了解这点。

你应该启动到一个 live 会话中(如使用安装磁盘,系统救援CD等)并在你卸载的分区上运行 fsck 。要检查是否有任何问题,请在使用 root 权限运行下面的命令:

fsck -fn [/path/to/your/partition]

您可以运行以下命令找到分区的路径

sudo fdisk -l

有一个在已挂载的分区中运行 fsck(相对)安全的方法是使用-n开关。这会对分区进行只读文件系统检查,而不会写入任何东西。当然,这并不能保证十分安全,你应该在创建备份之后进行。在 ext3 中,运行

sudo fsck.ext3 -fn /path/to/your/partition

这会产生大量的输出,大多数错误信息的原因是分区已经挂载了。最后会给出一个碎片相关的信息。

如果碎片率大于 20% 了,那么你应该开始整理你的磁盘碎片了。

如何简单地在 Linux 中整理碎片

你要做的是备份你所有的文件和数据到另外一块硬盘中(手动复制他们),格式化分区,然后重新复制回去(不要使用备份软件)。日志型文件系统会把它们作为新的文件,并将它们整齐地放置到磁盘中而不产生碎片。

要备份你的文件,运行

cp -afv [/path/to/source/partition]/* [/path/to/destination/folder]

记住星号(*)是很重要的。

注意:通常认为复制大文件或者大量文件,使用 dd 或许是最好的。这是一个非常底层的操作,它会复制一切,包含空闲的空间甚至是留下的垃圾。这不是我们想要的,因此这里最好使用 cp

现在你只需要删除源文件。

sudo rm -rf [/path/to/source/partition]/*

可选:你可以使用如下命令将空闲空间用零填充。也可以用格式化来达到这点,但是如果你并没有复制整个分区而仅仅是复制大文件(它通常会形成碎片)的话,就不应该使用格式化的方法了。

sudo dd if=/dev/zero of=[/path/to/source/partition]/temp-zero.txt

等待它结束。你可以用 pv 来监测进度。

sudo apt-get install pv
sudo pv -tpreb | of=[/path/to/source/partition]/temp-zero.txt

这就完成了,只要删除这个用于填充的临时文件就行。

sudo rm [/path/to/source/partition]/temp-zero.txt

待你清零了空闲空间(或者跳过了这步)。重新复制回文件,将第一个cp命令翻转一下:

cp -afv [/path/to/original/destination/folder]/* [/path/to/original/source/partition]

使用 e4defrag

如果你想要简单的方法,安装 e2fsprogs

sudo apt-get install e2fsprogs

用 root 权限在分区中运行 e4defrag。如果你不想或不能卸载该分区,你可以使用它的挂载点而不是路径。要整理整个系统的碎片,运行:

sudo e4defrag /

在挂载的情况下不保证成功(你也应该在它运行时不要使用你的系统),但是它比复制全部文件再重新复制回来简单多了。

总结

linux 系统中由于它的日志型文件系统有效的数据处理很少会出现碎片。如果你因任何原因产生了碎片,简单的方法是重新分配你的磁盘,如复制出去所有文件并复制回来,或者使用e4defrag。然而重要的是保证你数据的安全,因此在进行任何可能影响你全部或者大多数文件的操作之前,确保你的文件已经被备份到了另外一个安全的地方去了。

如何在Linux系统中整理磁盘碎片 节省空间相关推荐

  1. 在linux中 如何创建磁盘配额,如何在Linux系统中配置磁盘配额?

    今天我们看看如何在Linux系统中配置磁盘配额,限制用户滥用空间.使用磁盘配额是相当简单的,对于限制那些过多占用磁盘空间的家伙很有用.而且,你还可以设置软配额和硬配额,软配额可以在某个用户接近其容量空 ...

  2. linux中original_如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 转载自: 如何在 Linux 中整理磁盘碎片​linux.cn 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀 ...

  3. linux整理碎片命令,如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3.4等等)来处理文件系统.然而,在一些特 ...

  4. Win10系统中很多磁盘碎片怎么进行整理?

    Win10系统中很多磁盘碎片怎么进行整理?电脑使用的时间长了之后,就会在磁盘中生成很多的磁盘碎片,影响我们的使用,电脑会变得卡顿.那么这个情况怎么去进行修复呢?接下来一起来看看磁盘碎片清理的操作方法分 ...

  5. 15. Linux系统中的磁盘管理

    Lesson15 Linux系统中的磁盘管理 文章目录 1. 什么是磁盘管理 2. 本地存储设备的识别 3. 设备的挂载和卸载 4. 解决设备正忙情况 5 磁盘分区 5.1 磁盘分区的基础知识 5.2 ...

  6. 如何在linux系统中安装虚拟机?

    在初学linux系统时,实验中使用虚拟机可以避免操作不当误删文件时,快速恢复. 在企业中,使用虚拟机可以降低占用空间并能节省资源. 下面我们将介绍如何在linux系统中安装虚拟机, 1.图形界面安装虚 ...

  7. win7系统怎么调亮度_win7系统怎么整理磁盘碎片 win7系统整理磁盘碎片步骤【教程】...

    我们都知道电脑使用久了就会产生一些磁盘碎片,这些磁盘碎片会影响到电脑的运行速度,所以就需要对电脑进行磁盘碎片整理了,不过有很多用户都不知道win7系统怎么对磁盘碎片进行整理,那么win7系统如何整理磁 ...

  8. linux 查看磁盘信息命令行,Linux系统中查看磁盘空间信息的命令

    Linux系统中磁盘空间的信息我们要怎么查看呢?下面由学习啦小编为大家整理了Linux系统中查看磁盘空间信息的命令,希望对大家有帮助! Linux系统中查看磁盘空间信息的命令:一.df -lh 命令 ...

  9. 2008 mysql 本地安全_如何在Linux系统中建立mysql的本地安全机制?

    如何在Linux系统中对MySQL进行本地的安全机制?今天我们将给大家介绍下具体的操作方法. local-infile=0#关闭远程连接,即3306端口.这是LinuxMySQL的默认监听端口.由于此 ...

最新文章

  1. 机器学习中的模型评价、模型选择及算法选择
  2. MONGODB 数据库文件读取的优化
  3. 关于浮点型加减乘除运算不精确的问题
  4. mapreduce排序算法_MapReduce算法–二级排序
  5. qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示
  6. getHibernateTemplate()(Spring中常用的hql查询方法)
  7. 教你写一个弹幕库,确定不了解一下?,请查收
  8. 内存取证分析,笔记版+实战,基础
  9. Django下载文件——三种方法和大文件下载
  10. 掌握技巧可以快速完成网站备案
  11. 一次蜿蜒曲折的RFID破解之路
  12. Word2010经常莫名其妙无法撤销
  13. 音乐计算机锦鲤抄,锦鲤抄 (feat. 银临)
  14. Java - 为什么Java不支持运算符重载?
  15. 电脑启动卡、慢,运行起来后,可能可以慢慢恢复正常问题的原因和解决方案
  16. 树莓派控制PCF8591 AD/DA模块
  17. 某微型计算机指令格式如图,计算机组成原理期末复习试题2套不含答案
  18. 2021最新微信影视小程序源码无限代开+搭建详细教程
  19. 关于深信服面试的经历反省
  20. 电脑桌面怎么添加HTML,电脑上怎么把浏览器网页添加到桌面

热门文章

  1. java lang r,内存泄漏?为什么java.lang.ref.Finalizer吃了这么多内存
  2. docker 镜像使用
  3. Mysql查询某一年的的12个月份数据
  4. VR元宇宙展会,带来全新线上展厅沉浸式体验
  5. asp.net + mono + Jexus 部署 linux
  6. [Learn Gst] 工程结构
  7. 【设计模式学习笔记】组合模式与桥接模式案例详解(C++实现)
  8. Error (12006): Node instance inst instantiates undefined entity uart_sys
  9. python与word交互_[Python] 自动化办公 邮件/Excel/Word交互快速生成介绍信
  10. JavaScript----marquee滚动标签 图片无缝滚动 插入百度地图