CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > exFAT UDF フォーマットでOS間データ交換

exFAT UDF フォーマットでOS間データ交換

since 2012.01.02 / CORY

パソコンは使う人によって用途が様々ですが、複数のOSを使い分けている人にとって、OS間のデータ移動は悩みの種のひとつです。筆者の手元にある現在稼働しているOSに限って見ても、MS-DOS/Windows、FreeBSD、NetBSD、Mac OS X、Linux など様々です。

最近はネットワーク経由のファイル交換サービスが充実してきましたが、大きなファイルや、手軽で安全な移動を考えると、物理メディアを使った移動は欠かせませんが、この時に問題になるのが、ファイルシステムの互換性。

いわゆるUSBメモリ、メモリカードの類では FAT が使われており、手軽なデータ交換には良いですが、ファイルサイズが4GB程度に制限される(FAT32の場合)など、制約があります。

ここでは、FAT32 の制約が問題になる大容量のファイル交換にも対応できる方法として、UDF と exFAT を試してみます。

目次

exFATを使う UDFを使う ファイルシステム概観

NEC Direct(NECダイレクト)

exFATを使う

データ交換の対象が Windows と Mac の比較的新しいOSに限られる場合、exFAT が使いやすそうです。SD/SDHCメモリカードの後継にあたるSDXC規格に採用されていることもあり、今後のサポート拡大も期待されます。

一方で、Microsoft 独自の規格で原則非公開になっていることから、オープンソース系OS(BSD、Linuxなど)での対応がしばらく不安定になる可能性があるなど、問題もあります。こうした問題が無い用途であれば、exFAT の利用が考えられます。

exFATでフォーマットする

Windows Vista SP2 以降、および Windows 7/8 では、標準で exFAT のフォーマットに対応しています。GUIから、コマンドプロンプトから、いずれでも対応しています。

Mac OS X では、ディスクユーティリティからフォーマットできます。フォーマットしたいドライブまたはパーティションを右クリックし「消去」、フォーマットで ExFAT を選択。

Windows(XP以降)と Mac OS X(10.6.5以降)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout] (※)
"Scancode Map"=hex:\
	00,00,00,00,\
	00,00,00,00,\
	03,00,00,00,\
	1d,00,3a,00,\
	3a,00,1d,00,\
	00,00,00,00

exFATでフォーマットしたドライブを読み書きする

比較的最近のOSに限られますが、標準対応のOSであれば、普通に接続すれば読み書きできます。FATフォーマットされたリムーバブルメディアと同じ感覚です。

Windows XP では

Linuxでは

【参考】

UDFを使う

UDFは光ディスクに最適化されたファイルシステムですが、制限付きながらハードディスク等で使うこともできます。ただし、exFATで用が足りるのなら、exFATを使う方が良いでしょう。

exFATに対応していないOS(Mac OS X など)で使う場合は UDF を検討すべきですが、exFATに比べてファイルシステムが複雑なことと、HDDなどのパーティション内のUDFボリュームを認識しないOS(NetBSD など)があるので、実際に試してみる必要があります。また、最初のフォーマット(初期化)に時間がかかる、Windows XP などでは読み込みのみに対応している等の注意点もあります。

UDFでフォーマットする

Windows 7/8 では、コントロールパネル > 管理ツール > コンピュータの管理 > ディスクの管理 を開き、UDFにしたいディスクにドライブ名を割り当てます。その後、コマンドプロンプトを管理者権限で開き(メニュー上で右クリックして「管理者として実行」を選ぶ)、format x: /FS:UDF (x: はドライブ名)とすればフォーマットされます。

この時、Windows 7 ではHDD内のパーティションをフォーマットできますが、Windows 8 では光ディスク以外フォーマットできないようになっているようです。 Mac OS X では、ディスクユーティリティからフォーマットできます。フォーマットしたいドライブまたはパーティションを右クリックし「消去」、フォーマットで ExFAT を選択。

Windows(XP以降)と Mac OS X(10.6.5以降)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout] (※)
"Scancode Map"=hex:\
	00,00,00,00,\
	00,00,00,00,\
	03,00,00,00,\
	1d,00,3a,00,\
	3a,00,1d,00,\
	00,00,00,00

exFATでフォーマットしたドライブを読み書きする

比較的最近のOSに限られますが、標準対応のOSであれば、普通に接続すれば読み書きできます。FATフォーマットされたリムーバブルメディアと同じ感覚です。

Windows XP では

Linuxでは

ファイルシステム概観

各ファイルシステムについては Wikipedia 英語版が詳しいよ、で済ませていた所ですが、意外と簡単に一覧できる資料が無かったので、自分のメモを兼ねて、ここに整理しておきます。詳しくは Wikipedia 各ページにて。(英語版の方が詳しいものの、日本語版でも必要な情報は得られるのではと。Wikipedia日本語版:exFATUDF

OS毎に適したファイルシステムが開発・採用されており、特に規格化などはされていないのが実情です。代表的なファイルシステムを以下に挙げますが、この中で策定時より規格化されているのは UDF (Universal Disk Format) のみ。他はディファクト・スタンダードとして使われているものです。

各OSとも一般に、システム領域として使えるファイルシステムと、互換性に配慮して読み書き、または読み込みのみに対応したファイルシステムがあります。簡単に表にしてみます。


FAT(12/16)FAT32NTFSexFATUDF(*)HFS+ext2fsUFS(*)等
最大ファイルサイズ32MB (FAT12)
2GB (FAT16)
4GB (16, NT)
4GB16TB (-Win7)
256TB (Win8)
16EB16EB8EB16GB - 2TB8ZB
ファイル名最大長
/パス名最大長
(標準) 8+3bytes
(LFN) 255字 (UTF-16)
255字
(UTF-16)
255字
(UTF-16)
255bytes
/1023bytes
255字
(UTF-16)
255bytes255bytes
最大ボリュームサイズ32MB (12)
2GB (16)(*)
2TB256TB
(-Win8)
512TB(*)128TB8EB2TB - 32TB8ZB
MS-DOS 6






Windows 9x (DOS7)◎(*)





Windows 2000 (NT5)


Windows XP (NT5)1.5/△

Windows NT 6
Windows Vista(*), 7, 8


Windows CE 6



FreeBSD 5-1.5/●
△/○
NetBSD 5-

Mac OS X 10.4

1.5
Mac OS X 10.5-

◎=標準(システムインストール可) ○=読み書き対応 ●=読込のみ対応 △/▲=3rd partyのドライバ等あり 空欄=未対応
単位の103(または210を示す表記例 < K < M < G < T < P < E < Z
各数値は約数。上記では2進10進を書き分けていないことと、上記の値より1単位少ない場合がある。
* UDF = Universal Disk Format (ISO/IEC 13346, JIS X 0611)
* UFS = Unix File Systems、OS/CPUが変わると通常は互換性が無いので注意
* FAT16の最大ボリュームサイズは64KB/クラスタでは4GB。
* FAT32の最大ボリュームサイズは4KB/セクタでは16TB。
* Windows 95 の FAT32 対応は OSR2以降
* exFAT の最大ボリュームサイズは理論上は64ZB。
* Windows Vista はSP1以降で exFAT に対応
※Windows XP はSP2以降+KB955704適用で exFAT 読み書きに対応
※Mac OS X の exFAT 対応は 10.6.4 以降 ※上記以外に、暫定的に対応している場合がある(NetBSD から NTFS への書き込みなど)

Linux は distribution が多岐に渡るので割愛。上記の表は執筆時点の筆者の知る範囲によるもので、今後変わる可能性があることと、筆者が把握していない 3rd party製ドライバ等があり得るので、注意すること。

exFAT への Windows 7/8 のインストールは出来るという話もあるようだが未確認。

なお、本稿では触れないものの、BSD系の FFS や Linux の ext2/3 を Windows NT系から読み書きできるようにするソフトウェアもある。

FAT, NTFS, exFAT

1977年にNCR社の Disk BASIC で採用された、フロッピーディスクに最適化されたファイル管理手法 File Allocation Table が始まり。その開発に係わったビル・ゲイツ氏らが Microsoft社を立ち上げ、1981年より販売された IBM PC 向け PC DOS の開発を請け負い、さらにそれを自社ブランドにした MS-DOS を販売して同社の基盤を成したが、この標準ファイルシステムが後に FAT と呼ばれ、事実上の標準になる。

初期の FAT はクラスタ番号(ディスク上の位置情報)を12bitで表現していたが、ディスク容量の拡大に合わせて 16bit, 32bit と拡張されたため、初期の FAT は FAT12 と呼ばれるようになった。

その後、簡素な構造で扱いやすいが複雑な制御ができない FAT の制約を越えるため、NTFS (New Technology File System) が開発され、1993年より発売された Windows NT 系の標準ファイルシステムとして採用される。しばらくFATと併存するが、家庭向けWindowsがNT系に統一された Windows NT 5 (Windows 2000/XP) 以降はNTFSがWindowsの標準ファイルシステムになる(FAT32へのシステムインストールも選択可能)

一方、他のOSもフロッピーディスク読み書きの互換性を考慮し FAT の読み書きに対応していたため、フロッピーディスクが使われなくなった後も、同様のデータ保管・交換に使われる外付けの外部記憶装置(外付けHDD、USBメモリ、SD/SDHCメモリカードなど)の多くで FAT が採用され、今なお標準的に使われ続けている。

また、構造が単純でCPU等への負担が少ないことなどから、組み込みOSや大容量リムーバブルメディア向けに exFAT が開発され、SDXCメモリカードで採用されるなど、対応され始めている。

exFAT では容量拡大に対応するとともに、空き領域ビットマップが採用されており、フラッシュメディアなどで書き込みが早くなるほか、OSやSSD等のファームウェアが対応すれば空き領域の最適化もしやすくなる。 一方で、Microsoft独自の非公開仕様でありライセンスが明確化されておらず、NTFSと同様に 3rd party による対応がしづらいことや、特許問題なども懸念されている。

HFS+

前身となる HFS (Hierarchical File System) は、Apple社が Macintosh 向けに開発したファイルシステム MFS (Macintosh File System) を階層構造(フォルダ)に対応させた改良版。1985年発売の Macintosh System 3.1 より採用され、Mac OS 9 まで使われる。

1998年の Mac OS 8.1 より、ディスクドライブの大容量化に合わせた改良版の HFS+ が開発・採用され、しばらく併存する。

BSD系OSから派生した NeXTSTEP の Kernel と UI に FreeBSD のユーザランドを加えて全面的に作り替えられ 2001年に発売された Mac OS X からは HFS+ が標準となり、HFS は読み書きのみ(10.6 以降は読み込みのみ)対応している。(なお、Mac OS X は UFS (FFS) にも対応している。)

HFS+ は、iPod, iPhone, iPad など携帯端末向けの iOS でも採用されている。

UDF (Universal Disk Format)

1985年に登場した CD-ROM(Yellow Book 仕様)に最適化されたファイルシステムが 1988年に規格化され、ISO 9660 (JIS X 0606) となった。その制限を乗り越える、光メディア向け共通規格として ISO/IEC 13346 (JIS X 0611) が策定され、大容量化した DVD の登場に合わせて1996年より UDF 1.02 が使われ始めた。

その後、DVD-RAM の標準に採用されパケットライティングに対応した UDF 1.50、DVD-VR で採用された UDF 2.00、Blu-rayディスクで採用された UDF 2.50 へと拡張されている。

UFS

Unix File Systems の略で、Unix系OSで使われるファイルシステムの総称。ただし Linux で使われる extfs (extended file system) は含まず、FreeBSD, NetBSD, OpenBSD, Dragonfly BSD などの BSD OS で使われる FFS (Fast File System) に限定して呼ばれる場合もある。

BSD系で使われている FFS は、OS毎に独自の拡張を含んでいる場合があり、さらに処理系の big/little endian に依存する構造のため、OS間の互換性には配慮されておらず、同じOSであってもCPUが変わると読み書きできない場合がある。

Linux では1992年より extfs (extended file system) が採用されており、ext2, ext3 と拡張されている。また、利便性確保のために FFS の読み込みに対応している場合がある。

HDDに最適化された FFS に加え、最近は NAND フラッシュメモリドライブに最適化した CHFS (Chip Flash File System) が開発され、NetBSD 6.0 から搭載されている。

余談:「7.8GBの壁」「32GBの壁」「64GBの壁」について

PC-98、PC/AT互換機では上記の他に「7.8GBの壁」「32GBの壁」「64GBの壁」と呼ばれる制約があるが、これはBIOS(ファームウェア)やフォーマットソフトウェアに由来するもの。

従来より、HDDを512バイト毎に区切り、C/H/S (Cylinder/Head/Sector) で物理的な位置を指定するアクセス方法が使われてきた。初期のHDDではシリンダ/ヘッド/セクタに対応していたが、HDDの高密度化により意味を為さなくなり、互換性維持のために存在していた。

これに対し、PC/AT互換機ではクラスタ(C/H/Sで区切ったHDDの最小単位)の先頭を0として単純に番号を振ったLBA方式が採用されるようになり、 LBA対応によりこの壁を越えた。

余談:「137GBの壁」について

上記の他に「137GBの壁」と呼ばれる制約があるが、これは初期のLBAアドレス幅が 28bit だったことに由来するもの。LBA が 48bit に拡張された製品が「Big Drive」という名で普及し、現在は 128PB まで対応している。 (参考:Windows 2000 における ATAPI ディスク ドライブへの 48 ビット LBA サポート

BIOSでのLBA対応が望めないPC-98では、I-O DATA社が独自に「BigなDrive」に対応し、同社製対応 ATA I/F(「挑戦者」ブランド UIDE-133/98-A)にて 2TBまで対応した(LBAではなく、C/H/Sを最大限まで拡張し、255 * 255 * 65535 * 512 = 2,181,876,940,800バイト≒2032GiB まで対応したもの)。同社製I/Fは製造終了しているが、有志で対応している人がいる→非公式 PC-9821BIOS

なお、PC/AT互換機の制約(起動ドライブは512bytes/sectorにしか対応していなかった)があったため実現しなかったが、PC-98では2048bytes/sectorからの起動にも対応しているので、上記「BigなDrive」の発想を併用して理論上は8TBまで対応可能。

余談:「2TBの壁」について

PC/AT互換機のMBR (Master Boot Record) 内のパーティションブロックで管理できるクラスタ数が 32bit までで、クラスタサイズ512bytesのHDDでは最大2TiBが上限になるもの。この壁を越えるためには、BIOSでの対応に加え、OS側での対応も必要になったが、OS側で対応されたのは 2007年の Windows Vista SP1 以降になる。FreeBSD では 2008年の 7系列以降。

MBRパーティションテーブルを使わず、GPTパーティションテーブルを使うことで回避するため、未対応のOSは共存できなくなる。2012年頃から1台で2TBを越えるHDDが普及価格帯に入ってきたが、Windows XP など旧世代のシステムでは 1台あたり 2TB以内に抑える必要がある。

【参考】


改版履歴

2013.01.03
「exFAT UDF フォーマットでOS間データ交換」に改題
「ファイルシステム概観」を追加
2012.01.02
初版

更新日 : 2013年01月03日 (616)

CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > exFAT UDF フォーマットでOS間データ交換


« 短絡線 »
[ CORY's twilight zone | PC-98, FreeBSD(98), Mac OS X, Android | 鉄道・街 | 自然 | flickr | twitter (log) | YouTube | Contact ]

Copyright © 1996-2019 CORY / ISAKA Yoji. Some rights reserved:
Creative Commons Attribution-Share alike 2.1 Japan.