`mkfs.ext4 /dev/block/sda1`을 빠르게 만드는 방법은 무엇입니까?

`mkfs.ext4 /dev/block/sda1`을 빠르게 만드는 방법은 무엇입니까?

Android에서 애플리케이션을 개발 중이고 디스크를 관리해야 합니다. 내 프로그램은 루트 권한으로 Android 백그라운드에서 실행됩니다. 한 가지 문제는 디스크 파티션 포맷이 너무 느리고 디스크 포맷을 완료하는 데 최대 3시간이 걸린다는 것입니다. 4TB단계 내 형식은 다음과 같습니다.

  1. 모든 파티션 삭제
  2. parted -s /dev/block/sda mklabel gpt
  3. parted -s /dev/block/sda mkparted ext2 0% 100%
  4. 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 파일 시스템을 초기화하는 것은 일반적으로 오래 걸리지 않습니다. 특히 생성되는 데이터 구조의 복잡성을 고려하지 않으면 더욱 그렇습니다! 그러나 실제 기록되는 데이터 양은 100MB보다 훨씬 적을 것으로 예상됩니다. 세시간은 너무 길다;mkfs.extX가 이렇게 오래 걸리는 것을 본 적이 없습니다. 10년 전에는 2TB가 최대 20분 정도 걸렸습니다. 하드 드라이브는 최신 표준에 따라 더 느리고 SATA1 링크는 최신 표준에 따라 더 느립니다.
이는 저장 장치나 연결 방식에 문제가 있음을 의미할 수 있습니다. 포맷 과정에서 오류가 발생했는지 확인 dmesg -Hwx하세요 .journalctl -xef


하드웨어에 문제가 없거나, USB1.1을 통해 하드 드라이브에 액세스하거나, 실제로 SATA 드라이브를 에뮬레이트하는 플로피 드라이브 묶음이거나 기타 다른 경우인 경우는 다음과 같습니다.

그렇다면 Android 도구가 너무 오래되었을 수도 있습니다. 이 경우, a) e2fsprogs를 업데이트하십시오(저는 1.46.3을 가지고 있고, 2.5년 전에 출시된 1.45 이상이 있어야 합니다). 그러면 더 빠른 결과를 얻을 수 있습니다. b) 가능하지 않은 경우에는 다음을 시도하십시오 mkfs.ext4 -E lazy_itable_init=1 -E lazy_journal_init=1. 이는 mkfs.ext4에 소비한 시간을 첫 번째 마운트로 전송하는 것뿐입니다. 세상에 공짜 점심은 없습니다!

커널에 더 많은 파일 시스템 지원 기능이 내장되어 있으면 다른 파일 시스템을 사용해 볼 수도 있습니다. XFS는 빠른 생성으로 유명하며 귀하의 사용 사례에 적합할 수 있습니다.

관련 정보