技术解析

分区能提高硬盘的读写性能?
0
1975-02-26 12:03:13
idczone

单次磁盘IO时间 = 寻道时间 + 旋转延迟 + 存取时间
操作系统通过按磁道对应的柱面划分分区,来降低磁盘IO所花费的的寻道时间 ,进而提高磁盘的读写性能。来源(最后一句)

前两天求教了下 Linux 的文件系统... 的问题,收获很大,所以又来了 ;)

  1. Fat 格式下,通过一个 block data 传递下一个 block data 位置的方式完成数据记录;

    无碎片情况下,分区对性能提升应该不大吧?

    当游戏在 D:\ ,音乐在 E:\ 的时候,边玩 游戏 边听 音乐 ,明显效率很低嘛。

  2. Ext4 格式下,通过 inode 记录单个文件所在的所有 block data 位置;

    无碎片情况下,分区是否会导致 寻找并读取 inode 耗时更久,反而降低磁盘的读写性能?

    A B 不在一个分区,都加载时效率低的问题也会出现吧。

  3. 在当今 操作系统 死掉的概率已经非常小、碎片产生较少、不考虑数据本地存储的情况下,不分区 或 少分区也是可以的吧?

    看有人一个盘恨不得分十个八个的 ,心塞se、


应该是是如果数据都在一起的话,就是连续读写。
如果是随机读取的话,有寻址时间,就稍微慢一点。
如果说,1个磁盘,1M大小的block,1G的磁盘,如果分10个区,一个里面差不多100个左右,这些数据一般相对集中,读取里面的资料基本都在附近,所以稍微快点。

可即使只有一个区,只要数据是连续的大块内,也不会降低读写效率啊。
可能分区主要还是为了避免碎片太多吗?我能想到的解释只有这一个。当然不考虑曾经无数次死机被重装的 C:\

是的。所以分区只是相对能挤压下数据而已,没特别大的改善。
估计分区多的也没人是为了这一点点的性能来分这么多。

对于很多人来说..分区只是大型固定容量文件夹..和效率无关

不会的,你记住一点,软件层的任何技术,都突破不了硬件的物理限制。软件层做的是让硬件利用最大化。

三年以前还分区,系统C盘、软件D盘(那时软件还放在D盘)、资料E盘、媒体F盘……
目前,不分区了。SSD 一整块盘安装系统,1T 整块D盘。现在软件都是默认安装在系统盘。

不会的…分区好比你多分了一个文件夹罢了

不管分几个区,一个硬盘就那一个磁头

磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写。
有多少个磁盘面,就有多少个磁头。

SSD 的花费和寿命没法很好的平衡,不过用SSD是很快啦。
好的,记住了。

我的机械盘仍然分两个区,SSD不分区。
NTFS的MFT存在效率问题,如果文件数量越多,那么效率就会越低。
因此,C盘作为系统,D盘作为其他剩下的所有东西。
只分两个区则是为了空间利用率。

分区能提高机械硬盘的性能,主要体现在将程序等高密度读写的数据放在磁盘靠前的位置,也就是盘片外缘。在给定转速下,磁盘读取速度会更高,寻道时间更短。所以可以把数据(电影音乐照片啥的)放在磁盘后部。我个人一项是1-2个系统分区(约占磁盘容量5%-10%),加上一个大分区装所有其他静态的文件。
对于SSD来说,分区与否几乎没有性能上的影响。

想起来 Everything 这类程序应该就是调用了 MFT 的数据。
刚看到 MFT 碎片整理 很麻烦,人 与 文件系统 的信任看来是不复存在的。

实际上是尽可能的把大文件放在连续的区块内,避免碎片造成的性能损失吧。

那分区能提高硬盘的实际(操作系统层面的)使用效率吗?即能否提高硬件利用率?

不会。

以前分区只有一个原因..重装时候方便格盘.. 感觉个人用得电脑分区带来的性能提升微乎其微

对于听歌,你知道播放器会直接缓存整首歌吗?
所以一边玩游戏一边听歌是没问题的,不然先别谈性能,硬盘早坏了。
下载软件的缓存也是。
而对于打游戏,一般就是读图时的需求特别大,那么,把游戏放在d盘,确实比放e盘性能要好很多,因为读图是连续读取,这个在硬盘上外侧的优势体现就明显了。

以上论点立足于现在的机械硬盘和windows的分区管理方式。

windows现在我会建议只分cd两个,我给他们装(修…)的时候都会介绍这样的好处。
如果cdef几个盘都只有剩余500m空间,但是你来了个600m的av…i文件。

分区现在唯一的好处是分离坏扇区

公司电脑默认只有一个分区 (前置一个300M的隐藏分区)

确切地说是放在临近的物理磁道内,加上利用外圈的高速读取。

分区的唯一好处就是重装系统不会影响数据分区吧。。。

我只知道迅雷就给他一个区去下载,半年后这个分区IO速度会极慢,但其它区不受影响……如果不分区我不敢想象

个人电脑看喜好,公司电脑必须分。

肯定不能 linux 的文件系统就是一个文件,没有存在分区的原理。
你可以换 ssd 绝逼能提高,哈哈

(///▽///) 您对 linux 的了解要么是在很低的水平,要么就是超凡入圣了、
SSD 确实非常快。


man mount

我在想如果没有 分区 的概念, fdisk 也就不会出现 partition 这个单词了。
mount 的 filesystem 已经将 partition 包括在内啦吧。

不同分区转数据需要时间,分区是标明了扇区起始位置到终止位置,你转数据过去另一个分区浪费时间是因为硬盘仍然要工作,这样的话你不分区反而更快。
但事情没有绝对,不分区的话数据就有可能被乱丢,寻道就要时间,所以就要碎片整理。
上ssd吧,不要分区,也不存在寻道时间,因为内部已经有一层FTL管理了,就算你分区,虽然传数据要时间,但内部WA是不增加的,也就是不磨损(只针对知名的主控,那些杂牌的,台商的就不知咯)

表示一直想合并分区,系统一个,另外分为1、2个就完事。

用windows的时候,手贱把分区全部转化成动态分区了。后来就把硬盘格了。

分毛毛,直接 1 块 SSD,一个区,空间利用率最大化。

这样使用分区并不是所有人都会的。
另外你谈论的是分区提高性能,我觉得你说的不对吧。应该是最大化发挥磁盘性能吧。一个磁盘从0到末尾的寻址情况,就决定了这个硬盘本身的性能了。
还有就是很早以前的硬盘就支持指令排序了,就是优化读写效率,不再按照指令到达的先后执行了。

分区越小,磁盘碎片越容易产生
你这是得不偿失

分区,有3个主要原因。
1. FAT12/FAT16/FAT32文件系统对于每个文件系统的簇数目是有上限的,上限是不能超过的,那么结果就是簇大小必须设得非常大才行。稍微大一些的分区,簇就必须设置成16K甚至32K,存储小文件的时候特别浪费空间。
2. 格式化分区比删除文件速度快得多。重装系统的时候,如果要清除系统文件,把无关文件单独分区以后直接格式化系统分区,比手动删除系统目录要快得多。
3. 将读写频繁的文件单独分区以减少干扰。很多下载软件在下载的时候不提前预分配磁盘空间,而是下载多少分配多少。一个几G的文件很容易产生上万块碎片。单独一个分区可以把这些碎片隔离在分区内,而如果不分区的话,大量的碎片堆积在硬盘中,对日常使用中写入的文件就会产生很坏的影响。

现如今储存白菜价,难道不是一块盘一个分区么?

回答的太解惑了,感谢。

另一个解释:
如果是机械硬盘,尽量将数据靠前放是可以的
通过分区尽量将数据放到靠前的分区里
因为机械硬盘的盘片是转动的,磁头固定,数据从外圈向里圈读,0 道在最外沿
在角速度一样的情况下线速度是最大的,因此外延的数据密度更大,转一圈读写的内容更多
因此这也是为什么当用软件测试机械硬盘读写速度时,开始非常快最后非常慢的原因
因此,从另一个角度讲,通过分区,也同样是可以优化的

直接上SSD,然后单分区就没这个烦恼了

谁能帮助分析下原因
https://www.v2ex.com/t/185005

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服