USB 플래시 드라이브를 올바르게 파티션하는 방법과 마모 레벨링을 고려할 파일 시스템은 무엇입니까?


13

두 가지 문제. 첫 번째 : 플래시 드라이브를 분할하는 방법?

이 작업을 수행 할 필요는 없지만 FAT에서 ext4로 드라이브를 포맷하려고 할 때 gparted가 불평 한 후 파티션을 삭제하고 새 파티션 테이블을 만들어야했기 때문에 파티션이 올바르게 정렬되었는지 더 이상 확신 할 수 없습니다.

순진한 대답은 "기본값을 사용하면 모든 것이 잘 될 것"이라고 말하는 것입니다. 그러나 다음 링크를 읽으면 https://lwn.net/Articles/428584/http://linux-howto-guide.blogspot.com/2009/10/increase- 가 간단하지 않다는 것을 알 수 있습니다. usb-flash-drive-write-speed.html

그런 다음 실린더, 헤드 및 섹터 문제도 있습니다. 현재 나는 이것을 얻는다 :

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

따라서 현재 이해를 바탕으로 파티션을 4MiB (현재 1MiB)로 정렬해야합니다. 그러나 나는 여전히 내 장치에 헤드와 섹터를 올바르게 설정하는 방법을 모른다.

두 번째 문제 : 파일 시스템.

내가 본 벤치 마크에서 ext4가 최고의 성능을 제공하지만 마모 레벨링 문제가 있습니다. Transcend JetFlash 700의 마이크로 컨트롤러가웨어 레벨링을 제공한다는 것을 어떻게 알 수 있습니까? 아니면 드라이브를 더 빨리 죽일까요?

웹에서 많은 게시물을 보았으므로 최신 드라이브가 이미 처리하고 있다고 걱정하지 마십시오. 그러나 나는 그 증거에 대한 단일 증거를 본 적이 없으며 어떤 시점에서 사람들은 SSD를 USB 플래시 드라이브 기술과 혼합하기 시작합니다. 안전한 옵션은 ext2를 사용하는 것이지만 내가 수행 한 심각한 테스트는 끔찍한 성능을 보여주었습니다 !!!

이 값은 실제 시나리오에서 얻은 것이며 일부 합성 테스트는 아닙니다.

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

응답하기 전에 위에 게시 한 링크를 읽으십시오. 또한 많은 말을하고 다시 말했지만 사실이 없기 때문에 일부 참조로 백업 된 답변에 관심이 있습니다.

도와 줘서 고마워.


"마모 평준화 문제가 있습니다" -실제로 문제의 선택은 없습니다. 구입 한 USB 플래시 드라이브 또는 SD 카드 중 하나가 만족스러운웨어 레벨링 작업을 수행하거나 그렇지 않습니다. 웨어 레벨링을 수행하는 파일 시스템 (예 : JFFS2)을 사용할 수 없습니다. 그리고 UBI 볼륨 관리를 설치할 수 없습니다 (먼저 MTD를 설치해야하지만 이는 원시 플래시 장치 용입니다). 따라서 임베디드 컨트롤러에 의존하고 있습니다.
톱밥

답변:


8

실린더, 헤드 및 섹터에 대해 걱정하지 말고 섹터와 만 작동하십시오. 파일 시스템을 정렬하는 가장 쉬운 방법은 단순히 파티션 테이블을 갖지 않는 것입니다 (즉, 파일 시스템을 /dev/sdX직접 작성하는 것 ). 대부분의 Linux 시스템은이 문제를 잘 처리하지만 Windows는 놀라서 부팅 가능하게 만들 수 없습니다. 파티션 테이블이 필요한 경우 지우기 블록을 구성하는 512 바이트 섹터 수를 계산하십시오. 지우기 블록은 약 128-512KiB이므로 플래시 드라이브가 무엇을 사용하는지 알 수없는 경우 1024 개의 섹터로 이동하십시오. 파티션이이 숫자의 배수로 시작해야합니다.

또한 블록을 불필요하게 수정하는 것을 피할 수 있도록 지우기 블록 크기에 대해 ext2 / 3 / 4에 알리고 싶습니다. 지우기 블록을 구성하는 파일 시스템 블록 수 stridestripe-width개수를 모두 설정 하므로 512KiB 지우기 블록에 대한 작업은 다음을 사용하십시오.

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

성능 측면에서 저널이 없으면 성능이 향상되어야하지만 조작이 중단되면 데이터가 손상 될 가능성이 높아집니다. 그러나 ext4의 범위는 큰 파일에 대해 더 적은 메타 데이터를 수정해야하므로 성능을 향상시켜야합니다. 아마도 저널을 비활성화 한 상태에서 ext4를 사용합니다.

tune2fs -O ^has_journal

cat /proc/mtd연결된 플래시 장치의 지우기 블록 크기를 찾는 데 사용할 수 있습니다 .
Tomalak

파일 시스템이 지원되는 한 파티션 테이블이없는 플래시 드라이브는 Windows에서 제대로 작동합니다. Pendrives는 일반적으로 파티션 테이블을 가지고 있지 않으며 정상적으로 작동합니다.
gronostaj

Dreamplug의 Linux / Fedora 용 sd-card에서 fs를 최적화하면 ext4가 지우기 블록 크기를 "알고", 그에 따라 블록 크기"보폭" 값을 설정 하는 방법을 보여줍니다 . 또한 / proc / mtd는 SD / 스틱 플래시 메모리 장치가 아닌 톱밥이 말한 것처럼 원시 플래시 장치에만 사용할 수 있기 때문에 여기서는 관련이 없다고 생각합니다.
tuk0z

그것을 시도한 것은 끔찍한 조언이었습니다. 이러한 매개 변수를 USB 플래시 드라이브와 함께 사용하지 마십시오. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card- 이 녀석은 더 나은 매개 변수를 가지고 있지만 기본적으로 gparted가 사용하는 것보다 여전히 조금 더 낫습니다.
Zdenek

그것은 9 월에했던 것과 같은 링크입니다.
tuk0z

4

요즘 대부분의 Linux 파티셔닝 및 파일 시스템 생성 도구는 기본적으로 4K 경계의 데이터를 정렬하는 값으로 설정되며 디스크가 노출되어 LWN 기사 에서처럼 나쁘지 않은 경우 기본 블록 크기를 사용합니다.

TLDR; 최신 버전의 도구와 함께 최신 Linux 배포판 (예 : 2013 이상)을 사용하여 파티션과 파일 시스템을보다 잘 (완벽하지는 않지만) 정렬하면 자동으로 정렬됩니다. 또한 SD 카드의 최고 값은 USB 스틱의 값과 다를 수 있습니다 (Transcend JetFlash는 SD 카드가 아닌 USB 스틱이라고 생각합니다). 저렴한 플래시에서 실제 기본 지우기 블록 크기를 추론하려면 벤치마킹 해야합니다 .


1

또한 fstab에서 파일에 액세스 할 때마다 불필요한 쓰기를 피하려면 마운트 옵션 "noatime"을 사용해야합니다.


아직이 일에 진실이이 옵션을 XD를 들으 누락 된 것을 생각 나게
HypeWolf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.