分区能提高硬盘的读写性能?

2015-04-20 10:25:11 +08:00
 Tiande

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

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

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

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

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

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

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

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

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

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

8371 次点击
所在节点    Linux
41 条回复
bellchu
2015-04-20 12:38:35 +08:00
公司电脑默认只有一个分区 (前置一个300M的隐藏分区)
zvhdd
2015-04-20 13:02:00 +08:00
@dtdnqsb 确切地说是放在临近的物理磁道内,加上利用外圈的高速读取。
7654
2015-04-20 14:24:04 +08:00
分区的唯一好处就是重装系统不会影响数据分区吧。。。
otakustay
2015-04-20 14:27:20 +08:00
我只知道迅雷就给他一个区去下载,半年后这个分区IO速度会极慢,但其它区不受影响……如果不分区我不敢想象
debuge
2015-04-20 15:29:02 +08:00
个人电脑看喜好,公司电脑必须分。
whatisnew
2015-04-20 15:37:52 +08:00
肯定不能 linux 的文件系统就是一个文件,没有存在分区的原理。

你可以换 ssd 绝逼能提高,哈哈
Tiande
2015-04-20 15:52:32 +08:00
@whatisnew (///▽///) 您对 linux 的了解要么是在很低的水平,要么就是超凡入圣了、
SSD 确实非常快。
whatisnew
2015-04-20 15:58:11 +08:00
@dtdnqsb
man mount
Tiande
2015-04-20 16:10:54 +08:00
@whatisnew 我在想如果没有 分区 的概念, fdisk 也就不会出现 partition 这个单词了。
mount 的 filesystem 已经将 partition 包括在内啦吧。
Halry
2015-04-20 16:37:12 +08:00
不同分区转数据需要时间,分区是标明了扇区起始位置到终止位置,你转数据过去另一个分区浪费时间是因为硬盘仍然要工作,这样的话你不分区反而更快。
但事情没有绝对,不分区的话数据就有可能被乱丢,寻道就要时间,所以就要碎片整理。
上ssd吧,不要分区,也不存在寻道时间,因为内部已经有一层FTL管理了,就算你分区,虽然传数据要时间,但内部WA是不增加的,也就是不磨损(只针对知名的主控,那些杂牌的,台商的就不知咯)
gamexg
2015-04-20 17:27:44 +08:00
表示一直想合并分区,系统一个,另外分为1、2个就完事。
Tiande
2015-04-20 17:35:59 +08:00
@gamexg 用windows的时候,手贱把分区全部转化成动态分区了。后来就把硬盘格了。
lsmgeb89
2015-04-20 19:38:57 +08:00
分毛毛,直接 1 块 SSD,一个区,空间利用率最大化。
sgissb1
2015-04-20 20:38:21 +08:00
@zvhdd 这样使用分区并不是所有人都会的。

@dtdnqsb 另外你谈论的是分区提高性能,我觉得你说的不对吧。应该是最大化发挥磁盘性能吧。一个磁盘从0到末尾的寻址情况,就决定了这个硬盘本身的性能了。

还有就是很早以前的硬盘就支持指令排序了,就是优化读写效率,不再按照指令到达的先后执行了。
ryd994
2015-04-20 23:17:11 +08:00
分区越小,磁盘碎片越容易产生
你这是得不偿失
msg7086
2015-04-21 01:28:33 +08:00
分区,有3个主要原因。
1. FAT12/FAT16/FAT32文件系统对于每个文件系统的簇数目是有上限的,上限是不能超过的,那么结果就是簇大小必须设得非常大才行。稍微大一些的分区,簇就必须设置成16K甚至32K,存储小文件的时候特别浪费空间。
2. 格式化分区比删除文件速度快得多。重装系统的时候,如果要清除系统文件,把无关文件单独分区以后直接格式化系统分区,比手动删除系统目录要快得多。
3. 将读写频繁的文件单独分区以减少干扰。很多下载软件在下载的时候不提前预分配磁盘空间,而是下载多少分配多少。一个几G的文件很容易产生上万块碎片。单独一个分区可以把这些碎片隔离在分区内,而如果不分区的话,大量的碎片堆积在硬盘中,对日常使用中写入的文件就会产生很坏的影响。
omi4399
2015-04-21 02:04:20 +08:00
现如今储存白菜价,难道不是一块盘一个分区么?
Tiande
2015-04-21 08:47:04 +08:00
@msg7086 回答的太解惑了,感谢。
ptcracker
2015-04-21 09:20:24 +08:00
另一个解释:

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

因此,从另一个角度讲,通过分区,也同样是可以优化的
Autonomous
2015-04-21 11:11:14 +08:00
直接上SSD,然后单分区就没这个烦恼了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX