我在Android上开发一个应用程序,需要管理磁盘,我的程序是root权限在Android后台运行的。一个问题是格式化磁盘分区太慢了,需要三个小时才能完成磁盘的格式化。4TB
步骤我的格式是:
- 删除所有分区
parted -s /dev/block/sda mklabel gpt
parted -s /dev/block/sda mkparted ext2 0% 100%
mkfs.ext4 -F -b 4096 /dev/block/sda1
执行上述步骤时,第 4 步很慢,因此我将第 4 步替换为:
mkfs.ext4 -T lagerfile -F /dev/block/sda1
或mkfs.ext4 -F -b 4194304 /dev/block/sda1
,但仍然很慢。那么有什么更快的方法呢?谢谢你!
答案1
初始化 ext4 文件系统通常不会花费很长时间,尤其是不考虑所创建的数据结构的复杂性!不过,我预计实际写入的数据量将远小于 100 MB。
三个小时太长了;我从来没有见过 mkfs.extX 花费这么长时间;我的脑海中浮现出,10 年前,2TB 最多需要 20 分钟。就现代标准而言,硬盘驱动器的速度较慢,而 SATA1 链路的速度较现代标准而言较慢。
这可能意味着您的存储设备或其连接方式有问题。检查dmesg -Hwx
和journalctl -xef
是否在格式化过程中出现任何错误。
在不太可能的情况下,硬件没问题,或者您正在通过 USB1.1 访问硬盘,或者它实际上是一大堆模拟 SATA 驱动器的软盘驱动器,或者其他什么:
所以,也许你的 Android 工具太旧了。在这种情况下,a) 更新您的 e2fsprogs(我有 1.46.3,您应该至少有 1.45,这是 2.5 年前发布的),这将为您提供更快的结果,或者 b) 如果不可能,请尝试mkfs.ext4 -E lazy_itable_init=1 -E lazy_journal_init=1
;但是:这只是将您在 mkfs.ext4 上花费的时间转移到其第一次挂载上。天下没有免费的午餐!
如果您的内核内置了更多文件系统支持,您也可以尝试其他文件系统。 XFS 以其快速创建而闻名,并且可能适合您的用例。