eMMC真能优化成UFS?谈谈手机闪存的文件系统
和UFS闪存相比,eMMC的性能更弱,同一型号的手机混用这两种规格的闪存,让一些消费者感到了不满。对此,厂商称通过优化,eMMC的产品也可以获得优秀的体验。这个优化到底是怎么回事?根据以往的一些宣传,可以推断出是由于储存器使用了更先进的文件系统——F2FS。
对于储存器的文件系统,很多朋友或许并不太关注。但在使用上,不可避免地会感受到不同文件系统之间的区别——最直观的,莫过于兼容问题,例如NTFS文件系统的硬盘插到Mac电脑中无法写入,WinXP无法辨别exFAT文件系统等等。为什么储存器会选择不同的文件系统?一个优秀的文件系统,真的能把eMMC优化成UFS吗?今天就一起来谈谈这问题吧。
<ignore_js_op>
文件系统有啥用?
我们知道,在使用硬盘、U盘等储存器之前,需要进行格式化。而格式化的时候,会看到有很多文件系统可以选择。例如,在Win系统下,可以把格式化为NTFS、FAT32等等,在Linux下可以格式化为Ext3、Ext4等等,在macOS中可以格式化为HFS+、APFS等等。这些不同的文件系统,都有着一个共同的作用,那就是组织起储存器上的数据,让操作系统和用户更容易辨认和操作。
<ignore_js_op>
例如,在HDD硬盘上,数据是由扇区来储存的。什么是扇区?HDD的盘片是一个同心圆,把圆分成一个个小小的扇形,数据在这些扇形中储存,这些扇形就被称之为扇区。扇区储存着数据,但是操作系统并不会直接让用户访问一个个扇区——辨认不同的扇区靠的是物理地址,作为一个用户,面对着“01DE”“02FD”这样的物理地址,压根就无从下手。大家找苍老师的影视作品,都是到“摇杆驱动程序”的文件夹中去找,哪有找扇区物理地址的道理?
要把扇区组织起来,变成用户易于理解的各种文件、文件夹,就得文件系统来发挥作用了。我们知道,几十百来个人的广场舞,尚有令人眼花缭乱的阵仗,更何况是天文数字一般的扇区。不同的操作系统,组织数据的方式各不相同,于是就诞生了各种各样的文件系统。
<ignore_js_op>
这些不同的文件系统,特性也不尽相同,而且还有这优劣之分。例如大家非常熟悉的FAT32和NTFS,NTFS就明显要比FAT32更加先进——FAT32无法建立起2T以上的分区、储存4G以上的文件,而NTFS则可以轻松做到;在安全方面,NTFS支持文件加密、权限控制等特性,还支持日志,而FAT32则都不支持。另外,在性能方面,NTFS对FAT32也是有着明显优势。因此,如果文件系统更先进,的确可以把储存器“优化”得更上一个档次。
专为闪存而生的文件系统F2FS
文件系统的选择是有讲究的。例如在大容量硬盘流行、注重安全性的今天,在Win系统中使用的硬盘基本都会格式化成NTFS;而为了寿命和兼容性的考虑(NTFS的日志会请求更多读写,对闪存寿命不利),U盘、存储卡又往往格式化成为FAT32。安卓手机又普遍使用什么文件系统呢?我们知道安卓基于Linux,因此也继承了Linux的很多特性,大多数安卓机的闪存都跟随了Linux的主流文件系统,格式化成为了Ext4。
<ignore_js_op>
Ext4是一种很优秀的文件系统,它支持无限子目录、多块分配、日志记录等先进特性。不过,它是否适合手机?还真不一定。Ext4在2006年首次出现,当时的储存介质普遍还是HDD。而现在安卓机使用的都是闪存,Ext4并没有针对闪存作太多的优化。
HDD和闪存的结构天差地别,数据的组织也并不一样。在物理结构上,闪存并不存在扇区,因此需要经由FTL层来模拟HDD的扇区以实现对文件系统的兼容。加上文件系统没有对闪存作什么优化,所以效率会受到影响。那么有没有为闪存作优化的文件系统?F2FS便是了。
<ignore_js_op>
F2FS文件系统的全称是“Flash Friendly File System”,看名字就知道,这是专门为闪存而生的文件系统。这个文件系统来自三星,在2012年底被Linux内核所支持,自然也能够用于安卓机上。F2FS的确做了很多针对闪存的优化,最重要的就是基于闪存的块来进行读写,小文件的随机读写性能大大提高。
eMMC真能优化成UFS?
以上的问题也可以这么说:eMMC使用F2FS,到底能不能获得和UFS同等的性能?
根据已有的测试数据来看,F2FS的确比Ext4性能更高,甚至能让eMMC 5.1在随机写入性能超过UFS 2.1。不过,在持续读写速度方面,UFS 2.1仍要遥遥领先。而USF 2.1配合F2FS,取得了非常理想的测试成绩,在随机写入方面甚至能十倍于采用Ext 4的UFS 2.1。无论是eMMC还是UFS,换用后F2FS,都有明显提升,而UFS换用F2FS的提升幅度更大,性能表现更加完美。
那能不能说F2FS能让eMMC优化成UFS?这要分开不同方面看。在随机读写性能方面,使用F2FS的eMMC的确可以媲美Ext4的UFS。
这个性能对App的开启速度很重要,某些使用F2FS的eMMC安卓机在App开启速度方面,就因此不输使用UFS的竞品机型。但是,eMMC的物理瓶颈,是无法依靠F2FS来补全的——eMMC持续读写速度慢,而且是半双工,每通道同一时间只能读数据或者写数据,不能同时读写。在复杂的应用环境下,eMMC依然会是瓶颈。因此,UFS搭配F2FS,才是最完美的性能方案。
无论如何,UFS从硬件规格上,明显优于eMMC。eMMC使用F2FS后,或许能在某些方面胜过使用Ext4的UFS,但仍不能掩盖硬件规格更低的事实——UFS可以换用F2FS,eMMC却是变不了UFS的。目前同时使用UFS和F2FS的设备不多,如果很看重闪存性能,那还是UFS更值得选购——无论用的是Ext4还是F2FS文件系统。
eMMC真能优化成UFS?谈谈手机闪存的文件系统的更多相关文章
- 手机闪存速度测试工具,AndroBench
手机闪存速度测试工具,AndroBench
- 被忽视的eMMC——A1 SD Bench闪存测试
一直以来,大家对手机的配置方面都比较关注CPU和GPU的架构.频率.核心数等,却经常忽略了手机闪存的速度.实际上手机的闪存素质对手机日常操作的响应.载入速度同样起到举足轻重的影响,今天给大家介绍的则是 ...
- [Android] 配置安卓模拟器,使得dex文件不被优化成odex
最近做一个模块,需要将apk里面加载的dex文件dump出来,所以需要配置让dalvik不要把dex文件优化成odex. 1. 配置build.prop 主要是通过修改文件/system/build. ...
- 闪存中的NorFlash、NandFlash及eMMC三者的区别【转】
本文转载自:https://blog.csdn.net/Blazar/article/details/77843655 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器 ...
- 瑞发科NS1081主控 + THGBM5G7A2JBAIR(eMMC) 制作16GB闪存驱动器
文档标识符:NS1081_FLASH-DRIVE_D-P9 作者:DLHC 最后修改日期:2020.8.22 本文链接:https://www.cnblogs.com/DLHC-TECH/p/NS10 ...
- Android真机测试、乐视手机启用开发者模式
一.乐视手机启用开发者模式 1.进入 设置>关于手机,连续按5次,进入开发者模式 显示结果如下: 2.启用开发者模式,并且要启用USB调试 3.在VS中部署或调试Android引用,使用真机测试 ...
- Eclipse 真机调试检测不到手机解决方案
想用Eclipse真机调试,但是死活检测不到手机. 手机已经打开了usb调试模式. 开始用的华为Mate9,后面试了下小米,都不行. 在网上搜了一堆,什么安全驱动.adb占用.删除360手机助手.修改 ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位 置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星 ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星, ...
随机推荐
- 实现MongoDB读写分离的“读偏好”介绍
在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...
- c/c++ gdb 调试带参数的程序
直接gdb pgname 参数1 这种方式,参数1是不会带到gdb里的 1,首先启动程序 gdb pgname 2,设置程序的参数 set args 参数1
- Golang 学习权威网站
Golang 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Golang 是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...
- Saltstack_使用指南03_配置管理
1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest ...
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- 【Linux基础】查看某一端口是否开放(1025为例)
1.使用lsof 命令来查看端口是否开放 lsof -i:1025 //如果有显示说明已经开放了,如果没有显示说明没有开放 lsof(list open files)是一个列出当前系统打开文件的工具. ...
- Git命令行管理代码、安装及使用
出处:https://www.cnblogs.com/ximiaomiao/p/7140456.html Git安装和使用 目的:通过Git管理github托管项目代码 一.下载安装Git 1 ...
- JS正则四个反斜杠的含义
我们首先来看如下代码,在浏览器中输出的是什么? // 在浏览器中输出的 console.log('\\'); // 输出 \ console.log('\\\\'); // 输出 \\ 一:js正则直 ...
- AI 强化学习
强化学习(reinforcement learning,简称RL), agent policy state action 目标 最大化累计reward 参考链接: https://en.wikipe ...
- Spring Cloud 入门教程(七): 熔断机制 -- 断路器
对断路器模式不太清楚的话,可以参看另一篇博文:断路器(Curcuit Breaker)模式,下面直接介绍Spring Cloud的断路器如何使用. SpringCloud Netflix实现了断路器库 ...