分区能提高硬盘的读写性能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Tiande
V2EX    Linux

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

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

    单次磁盘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
    PRO
       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
    PRO
       2015-04-20 11:22:50 +08:00   1
    @chevalier 磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写。
    有多少个磁盘面,就有多少个磁头。
        10
    Tiande  
    OP
    PRO
       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
    PRO
       2015-04-20 11:44:46 +08:00
    @chenshaoju 想起来 Everything 这类程序应该就是调用了 MFT 的数据。
    刚看到 MFT 碎片整理 很麻烦,人 与 文件系统 的信任看来是不复存在的。
    Tiande
        14
    Tiande  
    OP
    PRO
       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
    PRO
       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
    PRO
       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
    PRO
       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
    PRO
       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
    谁能帮助分析下原因
    t/185005
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5507 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 03:46 PVG 11:46 LAX 20:46 JFK 23:46
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86