準仮想化SUSE on SUSE+XEN でUSBメディアを認識させる。

※ 検索エンジンでご覧になった方へ - この操作方法は SUSE Linux Enterprise Server で検証しています。他のディストリビューションで動作するかどうかはわかりませんが、参考になるようでしたらコメントください。

SLES10sp1 で準仮想化した SUSE Linux Desktop (SLED10sp1) に USB メモリを認識させる方法です。Google で検索するより、さすが Novell です。
support.novell.comの充実しているところにはノベルというメーカーの力強さ、底力を感じます。

XEN: Mounting CD-ROM's and USB devices in para-virtual DomU's using command line tools
という文書がありましたので、この手順でUSBのメモリキーを認識させて書き込みを行う手順を説明します。同じく CD-ROM を認識させる手順もあるので参考にするといいでしょう。

XEN 仮想化された SUSE のシステムをDomain-U のネットワークサービスとして使うと、外部からのアタックに備えてさまざまなプロテクトを掛けます。またCPU本体(Domain-0)はネットワークからまったくアクセスできないように設定しておけば、装置全体がアタックを受けることもありません。

ただしそれだけ強固なシステムを作ると、中のログを拾ったり、ウェブサーバーのコンテンツを修正したい場合など、非常に不便です。かといってそのためだけにポートを開放するのも危険なので、サーバールームから直接外部メディアにアクセスしたいという欲求が出てきます。

- Domain-0側の動き -


linux-c63e:~ # fdisk -l

Disk /dev/sda: 250.0 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 276 12024 94373842+ f W95 Ext'd (LBA)
/dev/sda3 14 275 2104515 82 Linux swap / Solaris
/dev/sda4 * 15680 30401 118254465 83 Linux
/dev/sda5 276 11241 88084363+ 83 Linux

Partition table entries are not in disk order

Disk /dev/sdb: 8086 MB, 8086617600 bytes
255 heads, 63 sectors/track, 983 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 984 7897056 6 FAT16
Partition 1 has different physical/logical endings:
phys=(982, 254, 63) logical=(983, 36, 12)

※ fdisk -l で見ると /deb/sdb がUSBメモリのようです。普通に売っている 8Gb のスティックですが fat32 でフォーマットされています。なぜか FAT16 と見ていますが...

linux-c63e:~ # xm block-attach sled10x1 phy:/dev/sdb xvde w

※ xm block-attach コマンドで Domain-U(sled10x1) に仮想デバイス xvde を書き込みモード(w) でアタッチします。


-Domain-U 側の動き-

- Domain-0 で xm block-attach を行う前です。

linux-kq77:~ # ls /dev/x*
/dev/xconsole /dev/xvda /dev/xvda2 /dev/xvdc
/dev/xvc0 /dev/xvda1 /dev/xvdb

- この間に xm block-attach を実行し xvde デバイスをアタッチさせます。

linux-kq77:~ # ls /dev/x*
/dev/xconsole /dev/xvda /dev/xvda2 /dev/xvdc /dev/xvde1
/dev/xvc0 /dev/xvda1 /dev/xvdb /dev/xvde

- 新しい xvde という名前のデバイスが作成されます。それではマウントしてみましょう。

linux-kq77:~ # mount -t vfat /dev/xvde1 /media/usb
linux-kq77:~ # ls /media/usb
dsc05516.jpg


- USB のファイルが見えます。firewall のログを書き込んでみましょう。

linux-kq77:~ # cp /var/log/firewall /media/usb/
linux-kq77:~ # ls /media/usb
dsc05516.jpg firewall

- 書き込みもできました。マウントを解除します。

linux-kq77:~ # umount /dev/xvde1
linux-kq77:~ # ls /media/usb
linux-kq77:~ #

- umount できたのでファイルはありません


- Domain-0側の動き -

-Domain-0 側から仮想ドライバ xvde をデタッチします。

linux-c63e:~ # xm block-detach sled10x1 xvde
linux-c63e:~ #

-Domain-U 側の動き-

- Domain-U 側で ls /dev/x* を実行すると、先ほど見えた /dev/xvde が消えます。

linux-kq77:~ # ls /dev/x*
/dev/xconsole /dev/xvda /dev/xvda2 /dev/xvdc
/dev/xvc0 /dev/xvda1 /dev/xvdb

準仮想化SUSE on SUSE+XEN でUSBメディアを認識させる。_a0056607_13561858.gif


なぜかはわかりませんが Domain-0 側で ls しても Domain-U から書き込んだファイルは見えませんでしたが、ファイルそのものは Windows PCにスティックを挿すと正しく読み込むことができました。


こういう機能は圧倒的に VMware が充実していますが、何十万円もする VMware で構築するより、数万円でアクティベートできる SLES10 の方が圧倒的にコストパフォーマンスは高いと思います。

-検索キーワード-

SUSE10sp1 SLED10sp1, SUSE10, SUSE, XEN, 順仮想化, paravirtual XEN, USB Memory, USBメモリ認識, CD認識、リムーバブルメディア、書き込み、読み込み、Domain-U, xm block-attach, xm block-detach,

非番のエンジニア
Commented by quuux at 2008-05-12 14:34
準仮想化だけどね...
SLES10 SP2はGold Master Candidate。ネットワークがらみの挙動不審のため、これを待つ!
Commented by islandcenter at 2008-05-12 20:14
コメントありがとうございます。
Windows 2008 を待つ!
これがボクの回答です。
Commented by tengan7 at 2010-05-18 14:32 x
CentOS5.4 な Xen環境でもUSBメモリ書き込みOKでした。
Commented by islandcenter at 2010-05-19 00:49
コメントありがとうございます。リムーバブルメディアの扱いは基本はみんな一緒です。
Commented by いぐりん at 2011-08-07 10:12 x
大変役に立ちました。
debian(squeeze)+Xen環境でも、USBメモリ認識Okでした。
有用な情報大変ありがとうございます。
Commented by islandcenter at 2011-08-07 18:46
コメントありがとうございます
面倒でも同じテクニックは CD・DVD などでも使えます。
by islandcenter | 2008-05-12 14:17 | XEN | Comments(6)