btrfs和ext4测速对比

ok2.0现在可以不用boot分区直接一根到底使用btrfs文件系统了。

所以今天重装了下ok,然后测试了下磁盘的io性能,以下测试均是在同一块sata接口的古老ssd硬盘上测试的。

一、测试结果


二、简要总结

  1. exfat毫无疑问性能是最差的
  2. ext4就比较有意思了,大部分时间还是比btrfs快,但其对dd命令分块大小比较敏感,分块变化时写入速度波动较大
  3. btrfs大部分时间比ext4慢,读速度差不了太多,但是写速度分块小的时候差别还是稍大的
  4. btrfs在分块很小的时候要比ext4快很多
  5. btrfs在分块大的时候不一定比ext4差了#

三、个人愚见(轻喷)

  1. 个人认为如果作为系统分区,因为有成千上万的软件,这些软件作者不一样,在io的时候很可能分块大小什么的不一样,万一有些情况碰到恰好是ext4比较弱的分块,那么此时速度就会很慢,甚至系统卡顿。
  2. 操作系统有木桶效应,往往是否流畅取决于最短的那根木板,所以使用btrfs或xfs做根目录文件系统体验上要优于ext4。
  3. 即使我们不使用btrfs的高级性能,仅仅当作普通硬盘来使用,他对不同类型io操作的适应性显然要优于ext4。
  4. btrfs对ssd专门的优化对硬盘的寿命也有帮助,越好的硬盘其根etx4的差距越不容易感知。
  5. 综上,拥抱btrfs吧,ext4真的有点老了。

四、测速脚本

#!/usr/bin/env python3



import os



bs_list_K = [str(2**i) for i in range(13)]

bs_list_M = [str(i) for i in range(1, 9)]



sum = 1024

print(f"\n分块传输大小:1KB 到 {bs_list_K[-1]}KB")

print("测试中,请耐心等待...")

for bs in bs_list_K:

   count = int(sum*1024/int(bs))

   in_result = os.popen("dd if=/dev/zero of=test.dd oflag=direct bs=" +

   str(bs)+"K count="+str(count)+" 2>&1").read()

   in_result = in_result.split("\n")[-2].split(",")[-1]

   out_result = os.popen("dd if=test.dd of=/dev/null iflag=direct bs=" +

   str(bs)+"K count="+str(count)+" 2>&1").read()

   out_result = out_result.split("\n")[-2].split(",")[-1]

   print(bs+" KB\t"+"写入: "+in_result+"\t读取: "+out_result)



sum = 1024

print(f"\n分块总传输大小:1MB 到 {bs_list_M[-1]}MB")

print("测试中,请耐心等待...")

for bs in bs_list_M:

   count = int(sum/int(bs))

   in_result = os.popen("dd if=/dev/zero of=test.dd oflag=direct bs=" +

   str(bs)+"M count="+str(count)+" 2>&1").read()

   in_result = in_result.split("\n")[-2].split(",")[-1]

   out_result = os.popen("dd if=test.dd of=/dev/null iflag=direct bs=" +

   str(bs)+"M count="+str(count)+" 2>&1").read()

   out_result = out_result.split("\n")[-2].split(",")[-1]

   print(bs+" MB\t"+"写入: "+in_result+"\t读取: "+out_result)



os.system("rm test.dd")

2023-12-25_00-17-34.png

真的哎,不用单独分个/boot 了

收藏一下:15_1013:

请教,如果使用btrfs安装系统,系统分区方案能不能说一下,笔记本电脑(ideapad110),4g内存,1t机械硬盘

没啥区别,就是文件系统不太一样。
我建议:
1、500MB的fat32格式efi
2、6GB的swap
3、50GB以上btrfs格式的根目录
4、剩下的随你,爱啥格式啥格式,不挂载到linux里,用于存放个人的数据,类似于windows的D盘

btrfs支持子卷。ubuntu/debian安装选择btrfs时一般缺省都是创建两个子卷,一个@或@rootfs挂载到/,一个@home挂载到/home。

好像1.0我也没分过boot分区。