CentOS4.5でFAT32の外付けUSBディスクを接続しました。
使用目的はsambaによるWindowsクライアントからの各種ファイル共有の為です。
FAT32にする理由は、万が一Linuxマシンが故障した場合にも外付けディスクをWindowsに繋げることによりデータはとりあえず引き続き利用可能にするのが主な目的です。
現在は玄人志向のkuro-box/HGにdebianを入れて、ext3のファイルシステム上でsambaのファイルを共有していますが、こちらを移行する方法についてもふれたいと思います。
既にUSBディスクがFAT32でフォーマットされている場合は読み飛ばして構いません。
CentOSはデフォルトでhaldaemonという、外部メディア接続時にマウントをよろしくやってくれる機能が動作していますのでまずは一時的に止めます。
| # /etc/init.d/haldaemon stop |
続いてUSBディスクを差し込むと、/var/log/messagesに以下のようなメッセージが出て、/dev/sd?と、SCSIディスクとして認識されます。
| Sep 1 22:08:45 rabi kernel: usb 1-3: new high speed USB device using address 12 |
上記例では既にパーティションが一つあるのでsda1が認識されています。
前述のhaldaemonを停止しないと、この時点で/media/usbdisk等で自動でマウントされてしまうので、その場合は手動でumountして、haldaemonは停止しておきましょう。
続いてfdiskでvfatのパーティションを作成します。既にあるパーティションを削除してから作成する例を以下に示します。
| # fdisk /dev/sda このディスクのシリンダ数は 9964 に設定されています。 コマンド (m でヘルプ): d(既存のパーティション削除) コマンド (m でヘルプ): n(パーティション新規作成) コマンド (m でヘルプ): t(パーティションタイプ変更) コマンド (m でヘルプ): p(パーティション一覧表示) Disk /dev/sda: 81.9 GB, 81964302336 bytes デバイス Boot Start End Blocks Id System コマンド (m でヘルプ): w(パーティション変更適用) ioctl() を呼び出して領域テーブルを再読込みします。 警告: DOS 6.x 領域を作成、または変更してしまった場合は、 |
続いてFAT32でフォーマットします。
| # mkdosfs /dev/sda1 |
CentOSのデフォルト設定でvfatのファイルシステムをマウントすると、日本語や8.3形式のファイルの大文字・小文字の扱いに問題があるため、以下のマウントオプションを追加します。
/etc/fstabにはまだ、/dev/sda1のマウント設定は書かれていないと思います。この設定はhaldaemonが自動で書き込んでくれるので、先に上記のマウントオプションをhaldaemonに教えてあげます。
以下のファイルを作成します。
[/usr/share/hal/fdi/95userpolicy/storage-policy.fdi]| <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> <deviceinfo version="0.2"> <device> <match key="block.is_volume" bool="true"> </device> |
このファイルを作成後にhaldaemonを起動する事により、/media/usbstorageが自動でマウントされます。
| # /etc/init.d/haldaemon start |
他のサーバで動作しているsambaの共有名毎にファイルを全てコピーしましょう。ポイントは単純なコピーではなく、タイムスタンプを元のファイルの時刻のままコピーするために、smbtarを利用します。
コピー元が\\kuro\degicameの場合以下のようにしてコピーを行います。
| # cd /media/usbdisk # mkdir degicame # cd degicame # smbtar -s kuro -x degicame -t -|tar xvf - |
コピー中は「uid 0 gid 0 に所有者を変更できません: 許可されていない操作です」といったエラーがでますが、これはvfatのファイルシステムにuid,gidに対する操作が行えない為であり、特に気にしなくて大丈夫です。
sambaの具体的な設定は割愛しますが、これでLinux上からもWindows上からも正しく日本語が表示できるファイル名で保存が出来るようになります。
8.3形式のファイル名をリネーム(mv)するときに、大文字小文字を変更するだけの操作はエラーになります。ちょっとわかりにくいので具体例を以下に示します。
| 【通常のファイルシステムの場合】 # touch aaa.txt # mv aaa.txt AAA.txt 【vfatのファイルシステムの場合】 # touch aaa.txt # mv aaa.txt AAA.txt mv: cannot move `aaa.txt' to `AAA.txt': ファイルが存在します |
回避策としては、一旦aaa.txtをaaa_.txt等別の名前に変更後、AAA.txtに変更するしか無さそうです。
Linuxのコマンドラインでは上記のエラーがmv時に出ますが、sambaで共有した際にWindowsから名前を変更した場合は特にエラーにはなりませんが、ファイル名は変更されません。
自動マウントは本エントリではコンソールでgnomeが動作しているため、gnome-volume-managerがhaldからのイベントを受けて自動でマウントしてくれています。
完全にコンソールしか使わない人(init level 3の人)はUSBディスクを刺しても、haldaemonをrestartしても自動マウントはしてくれませんので、その場合は手動でマウントしてください。
投稿者 yotan : 2007年9月 2日 19:58| トラックバック(0)※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです


