V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Tiande
V2EX  ›  Linux

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

  •  
  •   Tiande ·
    Tiande · 2015-04-20 10:25:11 +08:00 · 8374 次点击
    这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

    41 条回复    2015-04-21 14:21:06 +08:00
    xenme
        1
    xenme  
       2015-04-20 10:36:10 +08:00   ❤️ 1
    应该是是如果数据都在一起的话,就是连续读写。
    如果是随机读取的话,有寻址时间,就稍微慢一点。
    如果说,1个磁盘,1M大小的block,1G的磁盘,如果分10个区,一个里面差不多100个左右,这些数据一般相对集中,读取里面的资料基本都在附近,所以稍微快点。
    Tiande
        2
    Tiande  
    OP
       2015-04-20 10:40:47 +08:00
    @xenme 可即使只有一个区,只要数据是连续的大块内,也不会降低读写效率啊。
    可能分区主要还是为了避免碎片太多吗?我能想到的解释只有这一个。当然不考虑曾经无数次死机被重装的 C:\
    xenme
        3
    xenme  
       2015-04-20 10:48:32 +08:00   ❤️ 1
    @dtdnqsb 是的。所以分区只是相对能挤压下数据而已,没特别大的改善。
    估计分区多的也没人是为了这一点点的性能来分这么多。
    zts1993
        4
    zts1993  
       2015-04-20 11:06:51 +08:00   ❤️ 1
    对于很多人来说..分区只是大型固定容量文件夹..和效率无关
    zhicheng
        5
    zhicheng  
       2015-04-20 11:16:40 +08:00   ❤️ 1
    不会的,你记住一点,软件层的任何技术,都突破不了硬件的物理限制。软件层做的是让硬件利用最大化。
    mailunion
        6
    mailunion  
       2015-04-20 11:17:46 +08:00   ❤️ 1
    三年以前还分区,系统C盘、软件D盘(那时软件还放在D盘)、资料E盘、媒体F盘……
    目前,不分区了。SSD 一整块盘安装系统,1T 整块D盘。现在软件都是默认安装在系统盘。
    luo362722353
        7
    luo362722353  
       2015-04-20 11:20:13 +08:00 via iPhone   ❤️ 1
    不会的…分区好比你多分了一个文件夹罢了
    chevalier
        8
    chevalier  
       2015-04-20 11:21:21 +08:00   ❤️ 1
    不管分几个区,一个硬盘就那一个磁头
    Tiande
        9
    Tiande  
    OP
       2015-04-20 11:22:50 +08:00   ❤️ 1
    @chevalier 磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写。
    有多少个磁盘面,就有多少个磁头。
    Tiande
        10
    Tiande  
    OP
       2015-04-20 11:26:47 +08:00
    @mailunion SSD 的花费和寿命没法很好的平衡,不过用SSD是很快啦。
    @zhicheng 好的,记住了。
    chenshaoju
        11
    chenshaoju  
       2015-04-20 11:31:14 +08:00   ❤️ 1
    我的机械盘仍然分两个区,SSD不分区。

    NTFS的MFT存在效率问题,如果文件数量越多,那么效率就会越低。

    因此,C盘作为系统,D盘作为其他剩下的所有东西。

    只分两个区则是为了空间利用率。
    zvhdd
        12
    zvhdd  
       2015-04-20 11:40:57 +08:00   ❤️ 1
    @dtdnqsb 分区能提高机械硬盘的性能,主要体现在将程序等高密度读写的数据放在磁盘靠前的位置,也就是盘片外缘。在给定转速下,磁盘读取速度会更高,寻道时间更短。所以可以把数据(电影音乐照片啥的)放在磁盘后部。我个人一项是1-2个系统分区(约占磁盘容量5%-10%),加上一个大分区装所有其他静态的文件。
    对于SSD来说,分区与否几乎没有性能上的影响。
    Tiande
        13
    Tiande  
    OP
       2015-04-20 11:44:46 +08:00
    @chenshaoju 想起来 Everything 这类程序应该就是调用了 MFT 的数据。
    刚看到 MFT 碎片整理 很麻烦,人 与 文件系统 的信任看来是不复存在的。
    Tiande
        14
    Tiande  
    OP
       2015-04-20 11:46:36 +08:00
    @zvhdd 实际上是尽可能的把大文件放在连续的区块内,避免碎片造成的性能损失吧。
    stupidcat
        15
    stupidcat  
       2015-04-20 11:49:28 +08:00   ❤️ 1
    @zhicheng 那分区能提高硬盘的实际(操作系统层面的)使用效率吗?即能否提高硬件利用率?
    zhicheng
        16
    zhicheng  
       2015-04-20 11:57:18 +08:00   ❤️ 1
    @stupidcat 不会。
    quix
        17
    quix  
       2015-04-20 12:12:31 +08:00   ❤️ 1
    以前分区只有一个原因..重装时候方便格盘.. 感觉个人用得电脑分区带来的性能提升微乎其微
    loading
        18
    loading  
       2015-04-20 12:21:54 +08:00 via iPhone   ❤️ 1
    对于听歌,你知道播放器会直接缓存整首歌吗?
    所以一边玩游戏一边听歌是没问题的,不然先别谈性能,硬盘早坏了。

    下载软件的缓存也是。

    而对于打游戏,一般就是读图时的需求特别大,那么,把游戏放在d盘,确实比放e盘性能要好很多,因为读图是连续读取,这个在硬盘上外侧的优势体现就明显了。


    以上论点立足于现在的机械硬盘和windows的分区管理方式。
    loading
        19
    loading  
       2015-04-20 12:27:37 +08:00 via iPhone   ❤️ 1
    windows现在我会建议只分cd两个,我给他们装(修…)的时候都会介绍这样的好处。

    如果cdef几个盘都只有剩余500m空间,但是你来了个600m的av…i文件。
    juneszh
        20
    juneszh  
       2015-04-20 12:30:31 +08:00   ❤️ 1
    分区现在唯一的好处是分离坏扇区
    bellchu
        21
    bellchu  
       2015-04-20 12:38:35 +08:00   ❤️ 1
    公司电脑默认只有一个分区 (前置一个300M的隐藏分区)
    zvhdd
        22
    zvhdd  
       2015-04-20 13:02:00 +08:00   ❤️ 1
    @dtdnqsb 确切地说是放在临近的物理磁道内,加上利用外圈的高速读取。
    7654
        23
    7654  
       2015-04-20 14:24:04 +08:00   ❤️ 1
    分区的唯一好处就是重装系统不会影响数据分区吧。。。
    otakustay
        24
    otakustay  
       2015-04-20 14:27:20 +08:00   ❤️ 1
    我只知道迅雷就给他一个区去下载,半年后这个分区IO速度会极慢,但其它区不受影响……如果不分区我不敢想象
    debuge
        25
    debuge  
       2015-04-20 15:29:02 +08:00   ❤️ 1
    个人电脑看喜好,公司电脑必须分。
    whatisnew
        26
    whatisnew  
       2015-04-20 15:37:52 +08:00   ❤️ 1
    肯定不能 linux 的文件系统就是一个文件,没有存在分区的原理。

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

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

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

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

    因此,从另一个角度讲,通过分区,也同样是可以优化的
    Autonomous
        40
    Autonomous  
       2015-04-21 11:11:14 +08:00
    直接上SSD,然后单分区就没这个烦恼了
    wuxqing
        41
    wuxqing  
       2015-04-21 14:21:06 +08:00
    谁能帮助分析下原因
    https://www.v2ex.com/t/185005
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:57 · PVG 21:57 · LAX 05:57 · JFK 08:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.