USB 플래시 드라이브에서 UDF 사용


75

4G보다 큰 파일을 8G USB 플래시 드라이브 에 복사하지 못한 후 ext3으로 포맷했습니다. 이것이 지금까지는 잘 작동하지만 Linux를 사용하지 않는 사람에게 파일을 복사하는 데 사용하려는 경우 문제가 발생할 수 있습니다.

대신 UDF 로 형식을 지정하려고 합니다 . 추가 드라이버를 설치하지 않고도 가장 인기있는 세 가지 운영 체제 (Windows, MacOS 및 Linux)에서 읽을 수 있기를 바랍니다 . 그러나 이미 웹에서 찾은 것으로부터 파일 시스템을 만드는 데 사용되는 매개 변수와 관련된 몇 가지 작은 문제가있는 것으로 보입니다. 드라이브).

나는 알고 싶습니다:

  • 파일 시스템을 만들려면 어떤 유틸리티를 사용해야합니까? (지금까지 내가 발견 mkudffs하고 genisoimage, 그리고 mkudffs최고의 옵션을 보인다.)
  • 최고의 호환성을 위해 선택한 유틸리티와 함께 ​​어떤 매개 변수를 사용해야합니까?
  • 이 세 가지 운영 체제 UDF의 가장 일반적인 버전과 실제로 얼마나 호환됩니까?
  • 실제로 UDF를 사용하는 것이 가장 좋은 아이디어입니까? FAT32 4G 파일 크기 제한과 같은 문제없는 제한이없고 파일을 건 드리는 모든 단일 컴퓨터에 특수 드라이버를 설치할 필요없이 호환성이 더 좋은 다른 파일 시스템이 있습니까?

답변:


56

먼저 UDF 파일 시스템을 만들기 전에 드라이브를 완전히 제로화했습니다.

dd if=/dev/zero of=/dev/sdx bs=512

이것은 운영 체제의 파일 시스템 유형 감지를 혼란스럽게 할 수있는 남은 수퍼 블록 또는 기타 메타 데이터를 피하기위한 것입니다 (파티션 테이블을 없애기 위해 첫 번째 섹터를 0으로 설정해야 함) 파티션 테이블은 실제로 혼란 스러울 수 있습니다). count=1dd 명령 에서 스위치를 사용하여 드라이브의 첫 512 바이트 (MBR이 일반적으로있는 위치) 만 더 빨리 제로화 할 수 있지만 테스트되지는 않았습니다.

파일 시스템을 만들려면 내가 사용한 명령은 다음과 같습니다.

mkudffs --media-type=hd --blocksize=512 /dev/sdx

mkudffsudftools패키지를 설치 한 후 데비안 기반 Linux 배포판 (예 : 우분투)에서 명령을 사용할 수 있습니다 .

sudo apt-get install udftools

의 기본 블록 크기 mkudffs는 2048이며, 이는 USB 플래시 드라이브 (512 바이트 섹터를 사용)에 적합하지 않습니다. 블록 크기는 파일 시스템 메타 데이터를 찾는 데 사용되므로 잘못된 블록 크기를 사용하면 UDF 파일 시스템으로 인식되지 않을 수 있습니다 (앵커가 파일 시스템 드라이버가 예상하는 위치가 아니기 때문에). 있습니다 mkudffsman 페이지가 잘못; 512는 블록 크기에 유효한 값입니다 (코드에서 명시 적으로 허용 함).

또한 파티션 대신 전체 드라이브를 사용했습니다. 이것은 더 호환성이 있어야합니다.

지금까지의 테스트 결과 :

  • 가장 최신 커널이있는 Linux (우분투 9.10의 2.6.31) : 작동합니다.
  • 이전 커널이있는 Linux : 디바이스 섹터 크기 ( 커밋 1197e4d 에서 수정 ) 대신 2048을 잘못 사용했기 때문에에 bs=512옵션이 필요합니다 .mount
  • Windows Vista : 작동합니다.
  • 새로운 Mac : 작동합니다.
  • Windows XP : 읽을 수는 있지만 쓸 때 "액세스가 거부되었습니다". 디스크가 가득 찼다 고 생각하는 것 같습니다.

지금까지 4G보다 큰 파일을 만들려고 시도하지는 않았지만 작동하지 않는 이유는 없습니다.

모든 최신 운영 체제 (우분투 9.10 및 Fedora 12가 나오지 않는 한 더 이상 필요하지 않은 Linux에서만 수동으로 마운트해야 함)에서 완벽하게 작동했으며 Windows XP에서 읽기 전용으로 작동했습니다 (놀랐습니다) 나에게; 파일 시스템을 전혀 인식하지 못할 것으로 기대했다), 큰 USB 플래시 드라이브에서 FAT32 또는 NTFS 대신 UDF를 사용하는 것이 좋습니다.


1
드라이브를 어떻게 포맷 / 파티션 했습니까? 32GB USB 드라이브를 0으로 사용하여 dd if=/dev/zero of=/dev/sdb bs=1M파티션 테이블을 사용하지 않고 남겨 둡니다.
romeovs

4
@romeovs : 드라이브를 분할하지 않았습니다. 그것은 파티션 테이블과 오래된 파일 시스템을 제거하고 UDF 파일 시스템을 파티션되지 않은 전체 드라이브에 넣는 것입니다. 파티션 테이블을 만들면 혼동 될 위험이 있습니다.
CesarB

3
500GB SeaGate FreeAgent Desktop USB 2.0 외장 하드 드라이브에서 작동하지 않았습니다 (이 스레드가 플래시 드라이브에 관한 것인지 확실하지 않음). Windows 7은 디스크 관리 유틸리티에서 항상 드라이브가 "할당되지 않은"것으로 표시했습니다. 여러 가지 옵션 조합을 시도했습니다.
Adam Monsen

2
후속 감사합니다. 처음이지는 않지만 며칠 / 주간의 테스트 후에 OP에 의해 정교하게 대답되는 똑똑한 질문을 보는 것은 드문 일입니다. 잘 했어, 고마워!
Luc

1
UDF 작성 프로세스를 자동화하고 더 나은 호환성을 위해 파티션 테이블을 작성하는 Pieter Wuille스크립트 도 참조하십시오 . 대체 솔루션 으로 게시했습니다 .
고인돌

7

CesarB는 문제의 핵심에 도달하는 데 큰 역할을했습니다. 충분히 강조 할 수없는 한 가지는 UDF를 포맷 할 때 적절한 블록 크기를 사용하는 것이 얼마나 중요한지입니다.

CesarB의 게시물 (및 다른 연구 / 테스트)에서 영감을 받아 올바르게 감지 된 섹터 크기를 사용하여 UDF 형식화 프로세스를 자동화하는 스크립트를 작성했습니다. GitHub의 format-udf를 참조하십시오 . 주목할만한 특징 :

  • UDF (Universal Disk Format)로 블록 드라이브 (하드 드라이브 또는 플래시 드라이브)를 포맷합니다
    • 최대 호환성에 사용되는 UDF 개정 2.01
    • 기존 MBR을 삭제하기 위해 처음 4096 개의 섹터가 제로화됩니다 (적절한 UDF 감지에 필요함)
  • 여러 운영 체제 제품군 (Windows, OS X 및 Linux)에서 결과 파일 시스템을 읽고 쓸 수 있습니다.
  • Bash 환경이있는 모든 OS에서 실행

마지막으로, 내가 작성한이 스크립트는 Windows에서 사용할 수 없습니다. 그러나 스크립트는 OS X 및 Linux에서 실행됩니다. 이렇게하면 Windows가 새로 포맷 된 UDF 드라이브를 마술처럼 감지 할 수 있어야합니다.

게시 된 질문에 직접 대답하기 위해 format-udf는 다음을 수행합니다.

  • 운영 체제 및 환경에 따라 적절한 형식의 도구를 선택하십시오
  • 포맷에 필요한 모든 매개 변수를 자동으로 감지하고 채 웁니다.
  • OS 호환성 극대화 (호환성 차트는 GitHub 페이지 참조)
  • asker가 찾고있는 최대 기능 세트 (및 최소 한계)를 산출

1
Github에서 format-udf 유틸리티를 살펴본 결과 그것에 대해 한 가지 질문이 있습니다. 스크립트는 드라이브의 물리적 블록 크기를 감지합니다. Linux 호출 매개 변수가 "논리적 섹터 크기"가 아닌 "물리적 섹터 (블록) 크기"인 것이 올바른 것입니까? 육체와 논리는 많은 것을 의미 할 수 있습니다. 무엇 hdparm"물리적 섹터 크기는"드라이브 내부 것 인 반면 "논리 섹터 크기"를 호출하는 것은,의 SATA 프로토콜에 의해 사용되는 주소 지정 단위입니다. 저에게 UDF 사양의 "물리적 블록"은 실제로 Linux의 "논리적 블록"을 의미한다는 것이 더 합리적입니다.
Johan Myréen

@ JohanMyréen, 당신은 자리에 있습니다. GitHub에서이 주제에 대한 토론에 참여하도록 초대합니다. github.com/JElchison/format-udf/issues/13 Windows 7 및 10에서 추가 테스트를 기다리는 동안 질문에 따라 변경 사항이 임박했습니다.
j0nam1el

1
format-udf는 정말 좋습니다. 그냥 리눅스에서 테스트했고, OS X와 ​​Windows 10에서 포맷 된 드라이브를 읽고 쓸 수있었습니다.
mivk

"bash를 사용하여 모든 OS에서 실행"하는 기능에는 약간의 호소력이 있지만 동일한 접근 방식을 mkudffs직접 구현하는 것이 더 좋습니다 . 에 새로운 --best-block-size옵션을 추가하는 것을 의미 합니다 mkudffs.
MarcH

3

내가 찾은 문제는 드라이버가 r / w 용으로 빌드되지 않았기 때문에 내가 마운트 한 Linux 버전이 읽기 전용이라는 것입니다. 그것은 Windows에서 작동했으며 Mac이라고 생각합니다.

예, 좋은 해결책을 찾기가 어렵습니다. 잠시 동안 win 및 mac 용 드라이버가있는 fat32 파티션, mac 파티션 및 큰 ext3 파티션이있는 외장 드라이브가있었습니다. 작동했지만 드라이버 설치를 의미했습니다. 깔끔한 트릭은 Mac (fw & usb)에서도 부팅 가능했기 때문에 공간을 확보하고 메모를 한 다음 명령 줄과 mac 파티션 테이블을 통해 파티션을 추가 할 수 있습니다.

세계는 모든 파일 시스템에서 사용할 수있는 무료가 필요합니다. ZFS는 좋은 선택입니다. :-)


ZFS는 있으면 좋지만 많은 사람들을 혼란스럽게 할 것입니다. 그것은 또한 외부 미디어에 약간 과잉이라고 생각하지 않습니까? 내가 말할 수있는 것에서 거대한 파일 서버에 더 적합합니다.
Mike Cooper

2
ZFS는 합산 및 오류 복구를 확인하므로 불완전한 소비자 제품에는 많은 의미가 있습니다. :-D 우리는 요즘 비트 썩음이 결국 무언가를 먹을 정도로 충분히 보관하고 있습니다 (ZFS로 이어지는 문제에 대해 Sun이 수행 한 연구를 참조하십시오. 또한 HD 인코딩의 오류율은 감지되지 않습니다). 우리는 모든 것이 사용할 수있는 실제 fs가 필요하지만 fatX는 그렇지 않습니다. 아직은 아니에요
Ronald Pottol

ZFS는 Linux에서 작동하지 않습니다.
점화는


1

최대 호환성을 얻으려면 최소한 버전 2.0 에서 udftools 프로젝트의 mkudff 를 사용해야합니다 . 특별한 매개 변수가 필요하지 않으며 모든 것이 자동 감지됩니다.

세 가지 큰 제한이 있습니다.

  1. Microsoft Windows 시스템은 MBR 또는 GPT 파티션 테이블이없는 경우 이동식 하드 디스크를 인식하지 못합니다.

  2. Apple Mac OS X 시스템은 파티션 된 디스크에서 UDF 파일 시스템을 인식하지 못합니다.

  3. UDF 블록 크기가 디스크의 논리 섹터 크기와 일치하지 않으면 모든 시스템 (최근 Linux 커널 제외)이 UDF 파일 시스템을 인식하지 못할 수 있습니다.

버전 2.0 이후 도구 mkudff는 세 가지 제한을 모두 처리합니다. 제거 할 수없는 하드 디스크를 포맷하면 섹터 0에서 시작하여 전체 디스크에 걸쳐있는 "가짜"MBR 테이블이 생성됩니다. 따라서 UDF 파일 시스템은 첫 번째 파티션 (Microsoft Windows에 필요) 또는 전체 디스크 (Apple Mac OS X에 필요)에서 읽을 수 있습니다. 자세한 내용은 mkudffs 2.0 매뉴얼 페이지를 참조하십시오.


0

NTFS, NTFS-3G를 사용하면 Linux를 사용하여 쓸 수 있고 Mac 용 http://macntfs-3g.blogspot.com/ 을 볼 수 있습니다.


4
여기에는 Mac 용 추가 드라이버가 포함 된 것 같습니다.
Mike Cooper

그가 FAT를 사용하고 싶지 않다면 그는 붙어 있고 NTFS-3G는 Mac에서 작동합니다. 그는 이미 쓰기 위해 링크 한 것이 필요합니다.
user10547

4
약간의 문제는 그것이 Mac 이 아니라는 입니다. 차라리 다른 사람들의 컴퓨터에 드라이버를 설치할 필요는 없습니다.
CesarB

-1

EXT3 파티션에 액세스 할 수있는 Windows (및 Mac) 용 드라이버가 있으므로 EXT3으로 포맷하고 드라이버와 함께 어디서나 사용할 수 있습니다. 다른 방법은 보관자를 사용하여 큰 파일을 각각 최대 4GB의 두 개 이상의 파일에 저장하는 것입니다. 이 방법으로 범용 FAT32 파일 시스템을 사용할 수 있습니다. 호스트 컴퓨터에서 아카이브를 사용하려면 압축을 풀어야하지만 드라이버없이 아카이브를 수행 할 수 있습니다. ZIP 형식도 작동 할 수 있다고 생각하지만 RAR 형식 아카이버는 Windows, Linux, Mac에서 작동하므로 사용하십시오. 그러나 나는 드라이버와 함께 갈 것입니다. 일단 설치되면 제한없이 무엇이든 할 수 있습니다. PC에서는 Ext2Fsd를 전체 EXT2, EXT3 및 EXT4 액세스에 사용하고 Macdrive는 전체 MacOS 형식 액세스에 사용했습니다. NTFS 및 기타 파티션에 완전히 액세스 할 수있는 Linux 및 MacOS 용 툴도 있습니다. 읽기 액세스 만 필요한 경우 드라이버가 필요하지 않으며 Linux 및 MacOS는 NTFS 파티션 읽기를 지원하므로 USB를 NTFS로 포맷하십시오! 이러한 모든 컴퓨터가 동일한 네트워크에 있으면 작업이 더 쉬워집니다! USB를 포맷하여 네트워크에서 공유하십시오. 다른 컴퓨터에는 액세스하는 데 문제가 없어야합니다!


2
대답에 UDF도 언급되어 있지 않기 때문에 -1!
고인돌
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.