2012年 07月 24日
NTFS では使えない文字がある:の嘘。Windows と Linux のデュアルブート
openSUSE でスクリーンショットを取って ntfs パーティションに保存したときに気がついたのですが、Windows では「使ってはいけない文字」を NTFSフォーマットは受け付けて書き込むことができるわけです。
たとえば、スクリーンショットを取って、":" なんかが入っているファイルを ntfs-3g は平気で書き込んでくれます。これを Windows に切り替えて Gimp2 で開くとこんな感じになります。
もちろんフォトビューワでも読めないし、 Explorer から削除も受け付けません。
つまり NTFS は「ほとんどどんな条件のファイルでも受け付ける」のですが Windows (あるいはアプリケーション)はそれを許さないということです。
よくある話ですが NTFS は256「文字」までという制限がありますが、この数字が「バイト」なのか「2バイト」なのかはよくわかりません。ただ、Windows 2000 ころまでは Bytes だったような気がします。
やったことないので確信は持てないのですが
C:\1\2\3\...............\250(位)までディレクトリを掘って、 ...\250 に1万個くらいファイルをぎりぎりの長さで作ります。その後 C:\1 を "C:\すんご長いフォルダ名だよーxxxxxxxxxxxxxx--wwww"みたいにリネームしたとき、どういう動きをするんでしょうね。
怖くてやっていませんけど。
ファイル名とパスの最大長の色々
--
こういった問題はいつもファイルサーバのマイグレーション作業にはつき物です。私の得意な Novell NSS のマイグレーションではたまに 「256 文字」の制限に引っかかるファイルがあるのですが、いったいこのようなファイルはどのように作られたのでしょうね、不思議です。こういうファイル名がマルチOS対応のファイルサーバーの共有フォルダなんかにあると Windows のバージョンによっては、Search するだけで、おなじみのブルースクリーンが出てきたりします。
(たいていIEの「全部保存」では許されるみたいです。素敵な長いファイル名を作ってくれます。多分「ファイル制限」を無視したバグでしょう)
おそらく、 Linux から ntfs-3g を使えば 「256 文字」以上の素敵なディレクトリも作ってくれるかもしれません。 Novell NSS ではこういったファイル名の長さに制限がないため、 厳密なファイル名規則を守る Windows のエクスプローラーからファイルをバックアップすると「アクセスできない」ファイルが山のように生まれます。もっともそれが Windows のアプリケーションで作られたファイルだからクセが悪い。それも純正 Microsoft 純正Office だのIEで「できちゃったファイル」だから、エンドユーザへの説明に困ります。
それから、数万のファイルがあるフォルダの属性を変えたとき、「ほとんど固まる」状況も何とかしてほしい。
あと、いろいろ調べたんだけど、 NTFS だけは「デフラグ」というウラ業務が必須らしいですね。初めて知った私は馬鹿です。そういた Novell NSS, MAC, Linux もデフラグの機能ないしなあ。
デフラグの必要がある NTFS 上でデフラグが必要な Hyper-V の仮想イメージを動かしている皆様のご努力には頭が上がりません。これ毎日の管理者の仕事ですからね。C:ドライブなら、システムの再起動が必要だし。
一番いいのは Windows が EXT3 とか ZFS なんかを動かしてくれることなんですけど。
夢ですかね。
サーバ移行のコツ - Windows のファイル名の謎