水曜日 11 04, 2009
水曜日 11 04, 2009
直前に書いたzfs dedup ですが、 早速社内の人が試した結果がきました。 とっても単純な試験ですが、とてもわかりやすい検証結果となっています。 ビルド#128はまだありませんので、開発途中のビルドからbfuをしたそうです。 最初dfとかzfs listみてもdedupの効果がわからずとまどったようですが、zpool listでちゃんとわかるということです。
$ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 166K 293G 21K /lacieusb ... $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 310K 298G 0% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- ...
$ zfs create lacieusb/test1 $ zfs create lacieusb/test2 $ zfs create lacieusb/test3
$ cd /lacieusb/test1 $ dd if=/dev/urandom of=testfile bs=1024 count=1000000 $ sum testfile 36236 2000000 testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 981M 297G 0% 1.00x ONLINE - ... $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 980M 292G 25K /lacieusb lacieusb/test1 977M 292G 977M /lacieusb/test1 lacieusb/test2 21K 292G 21K /lacieusb/test2 lacieusb/test3 21K 292G 21K /lacieusb/test3 ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 1 7.63K 977M 977M 977M 7.63K 977M 977M 977M Total 7.63K 977M 977M 977M 7.63K 977M 977M 977M dedup = 1.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.00 ...
zfs listでは普通に領域を消費しているように見えますが、 zpool listではほぼ1GBの消費にとどまっているのが確認できます。$ sum /usr/tmp/testfile 36236 2000000 /usr/tmp/testfile $ cp -fpr testfile /lacieusb/test2/ $ sum /lacieusb/test2/testfile 36236 2000000 /lacieusb/test2/testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 983M 297G 0% 2.00x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 1.91G 291G 25K /lacieusb lacieusb/test1 977M 291G 977M /lacieusb/test1 lacieusb/test2 977M 291G 977M /lacieusb/test2 lacieusb/test3 21K 291G 21K /lacieusb/test3 ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 2 7.63K 977M 977M 977M 15.3K 1.91G 1.91G 1.91G Total 7.63K 977M 977M 977M 15.3K 1.91G 1.91G 1.91G dedup = 2.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 2.00 ...
$ cp /lacieusb/test2/testfile /lacieusb/test3 $ ls -la 合計 2001617 drwxr-xr-x 2 root root 3 11月 4日 16:50 ./ drwxr-xr-x 5 root root 5 11月 4日 16:21 ../ -rw-r--r-- 1 root root 1024000000 11月 4日 16:50 testfile $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 2.87G 290G 25K /lacieusb lacieusb/test1 977M 290G 977M /lacieusb/test1 lacieusb/test2 977M 290G 977M /lacieusb/test2 lacieusb/test3 977M 290G 977M /lacieusb/test3 ... $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 983M 297G 0% 3.00x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 2 7.63K 977M 977M 977M 22.9K 2.86G 2.86G 2.86G Total 7.63K 977M 977M 977M 22.9K 2.86G 2.86G 2.86G dedup = 3.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 3.00
1MBしか増えていませんので、ファイル単位ではなくblock単位であることが確認できます。$ ls -al -rw-r--r-- 1 root root 1024000000 11月 4日 17:02 testfile $ sum testfile 36791 2000000 testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 984M 297G 0% 3.99x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 1 1 128K 128K 128K 1 128K 128K 128K 2 1 128K 128K 128K 3 384K 384K 384K 4 7.63K 977M 977M 977M 30.5K 3.81G 3.81G 3.81G Total 7.63K 977M 977M 977M 30.5K 3.81G 3.81G 3.81G ... dedup = 4.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 4.00
Jeff Bonwick氏の 新しい書き込み でZFSのdedupが話題なっていますね。 deduplication、重複をなくすということですが、これ自身が最近結構話題になっていると思います。 また、これほど早くdedupがzfsで実装されるとは思いませんでした。 Jeffのblogには書いていませんが、OpenSolarisのビルド#128に入ってくるそうです。 ZFSはもとともsnapshot/cloneを駆使することで、 使い方によってはかなり重複がさけられる運用ができますが、 これでますます無駄のないストレージの運用プラス速度の向上が見込めますね。 もちろん様々なトレードオフがあるので、 実際の運用にどの方法が適しているのかみてみる必要もあると思いますが。
以下、Jeffのブログの要約です。 英語の参照文も入れおきますので、興味あれば原文を読む時の参考にしてください。 だれか全部訳してくれるまでということで。
ZFS provides block-level deduplication because this is the finest granularity that makes sense for a general-purpose storage system.
ZFS deduplication is synchronous.
zfs set dedup=on tank
zfs set dedup=verify tank
zfs set dedup=fletcher4,verify tank
to use the 256-bit block checksums in ZFS as hash signatures for dedup.
月曜日 4 20, 2009
いろいろなマシンにOpenSolarisを導入していますが、 最近はほとんど最初から入っているドライバだけで済んでいました。 しかし、久しぶりにそうでないマシンに遭遇したので、簡単にメモを書いておきます。 まず、マシンですが、ちょっと古いラップトップで、SHARPのPC-AL90Gというものです。 でた当時に会社で購入したのですが、 当時はグラフィックス(S3 UniChrome)がどうにもならず、Solarisで使うのは諦めていました (当時は別の人がいろいろ頑張ってくれていたのですが、詳しいことはよく覚えていないのです)。 しかし、ひょんな事から久しぶりに私の手元に帰ってきたので試してみることに。
System : PC-AL Series CPU Type : Mobile AMD Athlon(tm) 64 Processor 2700+ CPU MHz : 1600MHz CPU 2nd Cache : 512KB Memory : 1.2GB
まだまだ現役で充分使えそうなマシンです。 CD-ROM(DVD Super Multi?)が付いていますので、OpenSolaris 2009.11を起動します。 とりあえずLiveCDとして使える状態になるのですが、忘れていました。 パーティションを切り直すツールはまだOpenSolarisには入っていないのでした (まもなく、もしくはもう、入ったはずですが)。 そこで、たまたま手元にあったUbuntu 7.10で起動しますが、 あれあれ?グラフィックスが切り替わったところで固まります。 OpenSolaris 2009.11でいけるんだからという軽い気持ちで、 Ubuntu 8.10をダウンロードして試しますが、同じ結果に....あれーー?? もしかするとグラフィックスが切り替わるところで固まるけど、なにか違う理由なのかもしれません (画面は切り替わってちゃんとカーソルは書いたところで固まります)。 では、Ubuntu以外でとググッて見ると、gparted の 大元 にちゃんとLiveCDもあるではないですか。 これの最新版で試したところうまくいきました。 80GBのディスクをおおよそ半分にします (この後使う人はおそらくWindowsなので)。
さて気を取り直して、再度OpenSolaris 2009.11で起動します。 直後にDevice Driver Utilityを起動すると、モデムのドライバがないことと、 有線のネットワークが"third party"とでます。 AL90GはWifiが付いていないので、このままではネットに繋がりません。 PC-CardのWifiを使ってみましょう(他機種で実績のあるAtherosのカードです)。 あれ?無反応? DDUの結果を見るとそもそもCardBus Bridgeを認識しません (表にすら出てきません)。 このままではどうにもならないのですが、 とりあえずこのネットワークなしの状態のままでOpenSolaris 2009.11を導入します。 これはあっさり、問題なく完了。 しかし、ネットワークに繋がらないので、このままブートしても意味がありません。
そこで、あらかじめ導入されていたWindows XPを起動して、 ドライバを捜します。 問題の有線ネットワークはRhine-IIですので、 かの有名な MurayamaさんのWebページ から、 vfe をダウンロードして、DVD-RWに書き込みます。 ここで、ハードディスクに導入したOpenSolaris 2009.11を起動し、 ダウンロードしたファイルのREADMEに従ってvfeドライバをインストールします。 最初READMEを見た時makeと書いてあるのでコンパイラって最初から入っていたかな? と不安になりましたが、コンパイルする必要はなく(別のオプションを指定したりする場合必要)、ちゃんと導入できます。 ちょっと驚いたのは、make installが終わった直後にNWAMが動き始めwifiネットワークに繋がったのです。 これはできすぎー?と喜んだのですが....その後にリブートをすると動きません。 でなぜかいったん動かなくなるとどうしてもうごきません。 modunloadしたり、再導入したりといろいろやっても動きません。 でいろいろ調べると、vfeのドライバにはvfe.confが存在しません。 実はSolarisにはこの*.confファイルがあるものとないものがあるのですが、 理由がすぐにはわかりませんでした。 が、とりあえずやってみようと言うことで、 空のvfe.confを作って(といっても念のためiprb.confのコピー)を/kernel/drvにおいてリブート。 ちゃんと動くじゃないですか。 CardBusに関しては調べる時間がとれていないのですが、
が大量にでますが、これだけではbiosか、ドライバか?あるいは全く別の原因なのかこれではわからないですね。 image-updateを使ってb111にしてみましたが、この症状は改善しません。 というところで、今回は時間切れでした (_o_)。Apr 20 18:40:48 hostname pcic: [ID 868228 kern.warning] WARNING: pciclass,0607000: Odd Cardbus Present State 0xffffffff
水曜日 3 25, 2009
皆さんはzfsで作ったファイルシステムをどのようにバックアップしていますか? 最近ではテープというデバイス (単体のテープドライブ、テープ・オートローダ、テープ・ライブラリ)は古くさく、 過去のものという考えを持った人が多くなってきていると思いますが、 私はまだ価値があると思っています。 簡単にオフラインの場所に保管できるとか(例えば遠隔地や耐火金庫に入れるとか)、 保管できるデータの量とそれに要する場所の大きさとかいろいろ利点があります。 また、速度も各世代でディスクに対して結構高速です ( sustained data rate of 120MB./sec for LTO4 / T10000 )。 ソフトウエアは会社において私は(部門のサーバとして) Sun StorageTek Enterprise Backup Software を使っています。 特にバージョン7.3以降はzfsをサポートしており、なかなか快調です。 現在私の書いたちょっとしたスクリプトを使って、 直接使用中のファイルシステムではなくスナップショットからとるように運用しています (これは2年くらい前にやったことで、最新のSun StorageTek Enterprise Backup Software ではもっとスマートにできるようになっているかもしれません)。
このSun StorageTek Enterprise Backup Softwareは実際良くできていて、 使いやすく、かつパワフルです。 しかし、無料ではありませんし、小さな組織における小さなサーバでは大げさすぎるかもしれません。 あるいは、定期的にはとらないけど、なにか特別な理由で1回だけとりたい場合などにも適さないかもしれません。 そういった場合今まではufsdump/ufsrestoreがとても役に立ってくれました。 当然完璧ではありませんが(もっと早くなってほしいですね、特にディレクトリ関連は)、 十分であり、差分のバックアップも効率よくやってくれます。 そうはいってもufsdumpというくらいで、これはufsだけに有効なコマンドで、 zfsには少なくともこれに直接変わるコマンドはありません。 zfsのスナップショット機能はとても強力で、間違えて消してしまったファイルや、古いバージョンの ファイルを復活させるのには大変便利です。 しかし、すべて同じディスクのプール内だけで行われることです。 zfsのsend/recieveはかなり期待が持てそうですが、 ufsdump/ufsrestoreのように複数のテープに書き出す機能がありません (もともと媒体に書き出すために設計しているわけでないので)。 GNUのtar(gtar)には複数のテープを扱う機能があるようですが、どうも、 手動で切り替える場合だけで、オートローダに対応していないようです。
さて、ではどうすればよいのでしょうか? gtarを改造しますか? でもそれではtarの書式しかサポートできません。 うーん、Unixのプログラマーらしい発想をしてみたいと思います。 複数のテープをサポートする機能はもっと一般的な機能として実現するべきではないかと思います。 そうですね、古くからもともとテープを扱うために作られたコマンドがありますね、ddです。 ということで、ddをおもしろ半分の気持ちで試しに改造してみました。 ddはOpenSolarisのプロジェクトの一環としてオープンソース化されていますので、 ソースコード は簡単に手に入ります。 まあ、私がCのプログラムを書くなんていうのはかなりしばらくぶりなので、腕はさび付いていますが、 なんとか動く物ができました。
参考までに私のやった変更を ここに 載せておきました。 もし、興味がおありでしたら次のステップで試してみてください。
そしてコンパイルします。$ cd ${SRC} $ cd usr/src/cmd/dd $ patch dd.c < dd_mtv.patch
自動的にテープドライブかどうか判断したりする方法もあるかもしれませんが、 結果が正確でないかもしれませんし、 その結果とんでもないことが起こるかもしれないと思い、 私はオプションで指定するように作りました。 使い方の例です:
- ial[=n]
- Input being AutoLoader. 入力が(if)がオートローダであることを指定します。 オプションでオートローダがロードする時間nが指定できますが、 省略すると180秒になります。
- oal[=n]
- Output being AutoLoader. 出力が(of)がオートローダであることを指定します。 オプションでオートローダがロードする時間nが指定できますが、 省略すると180秒になります。
一応この改造版はSPARCの上で StorEdge L280 with DLT7000 drive (ただし、このオートローダはすでに外して使わなくなったので、最近テストしていません), と StorageTek L20 with LTO2 drive で試しています。# zfs send rpool/export/home@backup | dd oal of=/dev/rmt/0cbn obs=2048b
最後に将来の希望をリストすると (:-p):
How do you backup zfs based file system/stroage? Those days tapes (tape drive, tape autoloader, tape libary) are considered legacy by many people, but I still value the tape as backup device. Its can be store offline easily (can place on to fire safe stroage for example), amount of data on given space (such as library) would be greater. And it actually pretty fast ( sustained data rate of 120MB./sec for LTO4 / T10000 ). At work/office, I do use Sun StorageTek Enterprise Backup Software. Version 7.3 and following do support zfs file system, and works fine. I even wrote small script to backup from snapshot instead of live file system (I done this years ago, newer version may support this in more elegant way).
While Sun StorageTek Enterprise Backup Software is nice, easy to use, poweful solution, it does cost and combersome for small operation or adhoc backups. For those cases, ufsdump/ufsrestore did excellent job for me. Its not perfect (I wish it does go even faster, too slow on directory), but adequate and came with incremental backup. But it only for the ufs, and zfs does not have direct replacement (yet?). zfs snapshot does wonderful job for finding lost (unitentinally deleted, or look for older version) files, but within the existing disk storage/pool only. zfs send/receive looks promising., but unlike ufsdump/restore, it does not able to write to multiple tape volume. Well, zfs send/receive did not designed for that purpose. GNU tar (gtar) has ability to handle multiple tapes, but it appear only for manual tape exchange operation (not for autoloader).
What should I do? Modify gtar to support autoloader ? But that only support gtar format. Think like Unix programmer (^ ^;). Handling multiple tape volume should reside on more generic Unix command. I decided to modify dd command for experimentation (or fun :-). Its being open sourced as part of OpenSolaris. Its being while I did actually wrote piece of source code, so, its kind a rusty. But I was able to produce workable version.
For reference I have placed patach/diff of my modification posted. If you are interested to try, prepare the OpenSolaris source code and compiling environment, Down load the patch, and apply patch to the dd.c:
then, complie it. For usage, I have added two options.$ cd ${SRC} $ cd usr/src/cmd/dd $ patch dd.c < dd_mtv.patch
Automagically detect the tape drive and such may not acculate, and may result in undesired behavior, therefore I decided to have above option to contol the behavior. Example on how may use:
- ial[=n]
- Input being AutoLoader. Optional n indicate how many seconds will wait for the autoload to complete, default being 180 second.
- oal[=n]
- Output being AutoLoader. Optional n indicate how many seconds will wait for the autoload to complete, default being 180 second.
I have tested this vesion with old tape autoloader StorEdge L280 with DLT7000 drive (but I have take it offline while ago, and have not tested lately), and StorageTek L20 with LTO2 drive.# zfs send rpool/export/home@backup | dd oal of=/dev/rmt/0cbn obs=2048b
And finally wish list (:-p):
I have request to provide binary from comment onto this entry. I already reply to the comment to provide binary, but just in case I'll also write here. I did uploaded binary at here. its include both SPARC and x86 binary, as well as DEBUG binary. However, I don't have autoloader connected to x86 server, therefore x86 version are not being tested. As usuall, please use it at your own risk. Also, I would appreciate if you can report back how it works.
月曜日 1 19, 2009
2009年の最初の OpenSolaris Night Seminar を1月9日に行いました。 今回は私が 「Solaris/OpenSolaris の発展とその背景にあるハードウエア」 と題して話をさせていただきました。 どうも、歴史というと私が引っ張り出されるのですが、 期待にこたえるべくがんばってみました。 しかし、年末年始に準備をしたのですが、 どうもそれでも準備不足と自分のプレゼン技術の未熟さを露呈する結果となり申し訳ありませんでした(_o_)。
水曜日 8 13, 2008
先月 OpenSolaris 2008.05 を CD/DVDもnetworkも無い状態で導入 というのを書いておりますが、 その中で別の方法で導入できる気もするといっております。 今回はそれを試してみた結果です。 基本的には前回の導入方法を試みている時にZFSの柔軟性とそのパワフルさに感心し、 さらに大胆な別の方法でできるのではないかと考えました。 それは、"zfs send"でできるイメージを導入に使うというものです。 この方法を2台のマシンで試しており現在の所、 特に大きな問題もなく運用できています。 マシンはそれぞれ、SunのデスクトップマシンであるW1100z(AMD Opteron)と、 PanasonicのCF-W5(Intel Core2 Duo)というノートパソコンです。
英語で書いた時は"cheat"という言葉を使っていますが、 あまり良い意味ではありません。 まあ、インチキというかいい加減な方法であるということです。
OpenSolaris 2008.05の導入、とくに"All language"というバージョンの場合、 結構時間かかりますよね? ざっとCDからイメージを複写してる時間を計ってみると (つまりブート、構成している時間などを除いて)、 CF-W5(DRAM 1GB)でまるまる1時間以上、W1100z(DRAM 2GB)で40分以上かかります。 たかがCD一枚なのですが、圧縮の解凍に時間がかかっているようで、 ディスクとかCDドライブの時間よりもCPUに時間をとられているようです。 しかし、"zfs recv"はかなり効率が良く、高速です。 これが今回方法の思い立ったヒントです。
以下が今回のインチキなネットインストール方法です。
すでに導入済みのマシンがあり、かつ@installのsnapshotを消していない場合は、 そのマシンでもかまわないはずです。jack@opensolaris:~$ pfexec su jack@opensolaris:~# zfs send -R rpool@install | ssh 他のホスト名 -l ログイン名 "dd of=ファイル名 bs=1024k"
でまずはroot権限を獲得します。jack@opensolaris:~$ pfexec su jack@opensolaris:~#
format> fdisk Total disk size is 9729 cylinders Cylinder size is 16065 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Other OS 0 254 255 3 2 IFS: NTFS 255 4629 4375 45 3 Active Solaris2 4629 8714 4086 42 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 6 format> p PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' partition 7 - change `7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk ! - execute , then return quit partition> p Current partition table (original): Total disk cylinders available: 4084 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 262 - 4083 29.28GB (3822/0/0) 61400430 1 swap wu 1 - 261 2.00GB (261/0/0) 4192965 2 backup wu 0 - 4083 31.29GB (4084/0/0) 65609460 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0 partition>
これは、"zfs recv"を実行時にrecvしたファイルシステムから 順次自動的にマウントしてくれるのですが、 途中で既存のものとぶつかるとそこで止まって先をやってくれないためです。 実際最初/export/homeができなくて結構面倒なことになりました (rootでログインできないようになっているのに、 設定したユーザのホームディレクトリが無いとログインできません。 なんとか救済できるのですが、面倒です)。jack@opensolaris:~# mv /opt /opt-
jack@opensolaris:~# zpool create -f rootディスク(例えばc5d0s0) jack@opensolaris:~# ssh 他のホスト名 -l ログイン名 "dd if=ファイル名 bs=1024k" | zfs recv -Fvd rpool
jack@opensolaris:~# zfs rollback rpool@install jack@opensolaris:~# zfs rollback rpool/ROOT@install jack@opensolaris:~# zfs rollback rpool/ROOT/opensolaris@install jack@opensolaris:~# mkdir /a jack@opensolaris:~# mount -F zfs rpool/ROOT/opensolaris /a
実際の所install-finishが何をするスクリプトのなのか完全には把握していません。 しかし、これを走らせるとディスクにすでに導入されているOSをGRUBのメニューに 書き込んだ上でbootアーカイブを作ってくれます (おそらく、これ以外にも何かしています)。 CF-W5の場合はWindows Vistaでした。 また、zfs.cacheも実際のマシンの内容と違うとおかしな動きをします。jack@opensolaris:~# cp /etc/zfs/zpool.cache /a/etc/zfs/ jack@opensolaris:~# cp /etc/path_to_inst /a/etc jack@opensolaris:~# /sbin/install-finish /a cd jack@opensolaris:~# installgrub -m /a/boot/grub/stage1 /a/boot/grub/stage2 /dev/rdsk/rootディスク(例えばc5d0s0) <<. y . jack@opensolaris:~# umount /a
通常のリブートはshutdown(1M)やGNOMEのメニューから"シャットダウン”を 選んで電源再投入をするべきですが、ここではむしろよけいなことをされたくないので、 さっくり落とします。 また、リブート中にLiveCDのメディアを抜いて確実にハードディスクからブートさせてください。jack@opensolaris:~# reboot
マシンは大きな問題なくブートするはずですが、 いくつか修正する必要があるかもしれません。
の一行を加え、リブートします。LAYOUT=キーボード配列の名前
なにか私がリブート前に修正し忘れているファイルがあるのかもしれません
もちろんこの方法によるOpenSolaris 20058.05の導入はSunがサポートする方法ではありませんし、 一台だけ導入するのであれば単に面倒なだけです。 しかし、試験のために何度も導入したり、多くのマシンを導入する際には、 高速で有効な方法だと思います。 実は"zfs send"のイメージをどこかにおこうかと思ったのですが、 2.6GBのサイズになり、 mediacast.sun.comだと500MBごとに切らないといけないのでやめてしまいました。
火曜日 8 12, 2008
When I wrote Installing OpenSolaris 2008.05 without CD/DVD nor network - English about month ago (already a month!), I mentioned about having new idea on installing OpenSolaris. Since ZFS are so much powerful and flexible, I thought I can cheat installation process by using the "zfs send" image. I have tried one desktop machine (Sun W1100z) and one notebook PC (Panasonic CF-W5), and so far found no major issues (but some).
When you install OpenSolaris 2008.05, especially "All language" version, it does takes while isn't it? Just measuring about CD image copy phase took more than full hour on CF-W5, and more than 40 minutes for W1100z. It is still just single CD, but compressed. For CF-W5, its more likely depend on the CPU speed than disk or CD drive. At same time, "zfs recv" seems to be efficient and fast, even on the notebook PC. This is where my idea came from.
Here is my cheat process:
If you already has installed machine (which has not destroy the @install snapshot), you can do the same on that machine as well.jack@opensolaris:~$ pfexec su jack@opensolaris:~# zfs send -R rpool@install | ssh someotherhost -l loginname "dd of=path_to_file bs=1024k"
which gives you the root access to the system (so be careful).jack@opensolaris:~$ pfexec su jack@opensolaris:~#
format> fdisk Total disk size is 9729 cylinders Cylinder size is 16065 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Other OS 0 254 255 3 2 IFS: NTFS 255 4629 4375 45 3 Active Solaris2 4629 8714 4086 42 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 6 format> p PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' partition 7 - change `7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk ! - execute , then return quit partition> p Current partition table (original): Total disk cylinders available: 4084 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 262 - 4083 29.28GB (3822/0/0) 61400430 1 swap wu 1 - 261 2.00GB (261/0/0) 4192965 2 backup wu 0 - 4083 31.29GB (4084/0/0) 65609460 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0 partition>
"zfs recv" wants mount the just received zfs file system, but if conflict, its stop right there. Moving /opt to avoid this.jack@opensolaris:~$ mv /opt /opt-
jack@opensolaris:~# zpool create -f yourdisk(such as c5d0s0) jack@opensolaris:~# ssh someotherhost -l loginname "dd if=path_to_file bs=1024k" | zfs recv -Fvd rpool
jack@opensolaris:~# zfs rollback rpool@install jack@opensolaris:~# zfs rollback rpool/ROOT@install jack@opensolaris:~# zfs rollback rpool/ROOT/opensolaris@install jack@opensolaris:~# mkdir /a jack@opensolaris:~# mount -F zfs rpool/ROOT/opensolaris /a
Seriously, I don't exactly know what install-finish script does, but without this, menu.lst will not have other than Solaris (in case of my CF-W5, Windows Vista). Also, zpool.cache seems to do some trick as well.jack@opensolaris:~# cp /etc/zfs/zpool.cache /a/etc/zfs/ jack@opensolaris:~# cp /etc/path_to_inst /a/etc jack@opensolaris:~# /sbin/install-finish /a cd jack@opensolaris:~# installgrub -m /a/boot/grub/stage1 /a/boot/grub/stage2 /dev/rdsk/$1 <<. y . jack@opensolaris:~# umount /a
and while rebooting, taking out the liveCD/InstallCD to make sure boot from hard disk.jack@opensolaris:~# reboot
System should boot fine, but there are few things need to be fixed.
Need reboot to take effect.LAYOUT=Your_keyboard_layout_name
Obviously this isn't supported way of installing OpenSolaris 2008.05, and if you are installing just one machine once, this isn't interested. But for the testing or need to install bunch of machine, this might help you. It is so much faster!.
日曜日 7 20, 2008
しばらくぶりの更新で申し訳ないです。 直前の英語の記事と同様の内容を日本で書いています。 自転車も引き続き乗っていますが、これもそのうち書きます(プラハとか館山とか)以前に Solaris 10をCD/DVDもnetworkないマシンにインストール というのを書いていますが、 今回は似たことをもう少し新しいマシンを使ってOpenSolaris 2008.05を導入してみたいと思います。 マシンは Thinkpad X21 で、Windows 2000が入っていた頃のものですから、あまり新しいとは言えません。 しかし、前回のSony PCG-505Vよりはかなり新しいですし、 CPU (Pentium III@700MHz vs Pentium MMX@300MHz)も、 メモリ(384MB vs 128MB)もかなり刷新されています。 残念ながらそれでも OpenSolaris 2008.05 installation requirement で要求されている最低限の512MBに及びません。 そうはいってもとりあえず試してみたいものです。 まずはOpenSolaris 2008.05のLiveCDを使ってブートしてみます (導入するにしてもまずはこれでブートが必要)。 ThinkPad X21は内蔵のCD/DVDドライブがないのでUSB DVDドライブを使います。 問題なくブートし、firefoxなどのアプリケーションがちゃんと動作します。 さて、ハードディスクへの導入はどうなるでしょうか? およそ1時間くらいたってから(実際にはじっと見ていたわけではないので、2時間かもしれません)、 マシンは凍り付いてしまったようで、何も反応しなくなりました。 懲りずに何度がやってみたのですが、同じ結果です。 2回目の時に、導入をはじめる前に、 導入自身には関係なさそうなプロセスやサービスを止めてみました。 そうすると1回目よりは先に進んだところで凍ります。 これはおそらく(というか当たり前?)メモリが途中で足りなくなっているのでしょう。
ここまでは予定通りですので、引き続きまっとうでない方法でやってみましょう。 前回のSolaris 10の時と同じように、ThinkPad X21のディスクをはずします (X21のディスクはねじ一本だけで簡単にはずせるので助かります)。 今回は自宅でやっている話なので、自宅のメインマシンを使います。 例によってはずした2.5インチのディスクを2.5インチと3.5インチのIDEコネクタの変換器を 使って、メインマシンにつなげます。 そしてメインマシン上でOpenSolaris 2008.05を2.5インチドライブに導入。 全く問題なく、導入が完了します。 ところで、OpenSolaris 2008.05の導入では導入完了時にZFSのsnapshotをとってあるので、 なにか問題が発生してもすぐにもとに戻せます。 そこで、早速なにも変更を加えていない、メインマシンで導入しただけの状態のディスクを、 ThinkPad X21に戻してブートをしてみます。 とうぜんGRUBからしてだめなんだろうと思っていると、 あれ?あれあれあれ? 何事もなかったようにちゃんとブートします (もちろん、導入後の最初のブートとしてです)。 前回苦労した/devとか/etc/path_to_instとか全くいじっていないのに! なんとなく釈然としませんが、自分自身でログインしてみます。 gnome-terminalを立ち上げてコマンドをいくつか使ってみますが、 問題ありません。 こうやって実際に使ってみるとこのThinkPad X21は決して遅いマシンではありません (ただし、ディスクだけは20GBだったのを60GBのものに入れ替えています)。 さらにfirefoxを起動すると...あれ、だめです。 メモリが足りないと出ます。 もしやと思ってswapデバイスを調べると、ああ、やっぱり、 導入時に使ったデスクトップのマシンにつながれていたときのデバイスパスで指定されており、 ThinkPad X21では存在しなかったので、ここまでswapなしで動いていました (デスクトップではc5であり、ThinkPadではc0)。 手動でswapを加え、リブート後に備えて/etc/vfstabも書き換えておきます。 これで、firefoxも無事起動できました。
この思いがけない簡便さは、ZFSとZFS root/bootプロジェクトのおかげのようです。 もともとZFSは自動的に自身のデバイスパスを発見/構成することができるのですが、 OpenSolaris 2008.05はルートファイルシステムからすべてZFSで構成するようになっており、 /devなどをいじらなくても勝手に正しいデバイスパスで動いてくれます。 また、ZFS root/bootではGRUBのメニューも自動生成するようになっているようで、 このためにGRUBもなにも主導で変更する必要なしに動作するようです。 ここまでなにもしないで、別のマシンで導入したディスクでブートし、動作するとは驚きでした。 しかし、なぜpath_to_instなども変更せずにここまで動くのかはまだ私にはなぞです。 とくに、今回導入に使ったマシンはAMD Athlon X2とnVIDIAのチップセットで、 ThinkPad X21とはかなり構成が違います。
ThinkPad X21の上でOpenSolaris 2008.05は思ったより快適に動作しますが、 ひとつだけ問題があります。 無線LAN(Wifi)なのですが、ThinkPad X21は内蔵がありませんので、 PCCardをさして使っています。 しかし、現在のnwamの実装ではPCCardのplug&playとうまく動作しません。 そこで、PCCardをさした後にnwamを再起動させてやる必要があります。 まあ、それを除けば今回はあまりにも簡単にことが済みました。 今回のことで別の方法で導入できそうな気もするので、それもそのうち試してみようと思います (成功したらここに書きますね :-p)。
木曜日 7 17, 2008
Have not updated blog for few month now, hopefully, I can update blog little more frequently again.I have written about Installing Solaris 10 without CD/DVD nor network looong time ago. This time with OpenSolaris 2008.05 release with relatively newer machine Thinkpad X21. Okay, X21 is old, it came with Windows 2000, but far newer than Sony PCG-505V. It holds three times more memory (384MB vs 128MB) and much faster CPU (Pentium III@700MHz vs Pentium MMX@300MHz), yet still less than 512MB. OpenSolaris 2008.05 installation requirement said minimum of 512MB. I just gone ahead to try OpenSolaris 2008.05 LiveCD (you have to boot LiveCD in order to install anyway), by using USB CD drive (since X21 does not have internal drive). Booted just fine, using firefox and other appear to be working fine also. Now, I did try install onto hard disk. After about an hour (or was two? I was not waited in front of machine), machine appear to be freeze, nothing works nor respond. I tried couple of times to make sure. It seems to lack of memory are the problem (no surprise). At second time, I did killed few processes which I does not think important while installing the OS. Which made progressed farther than first time, but not good enough to finished.
Now real fun begin (^ ^;). Just as before, I took out the hard drive from Thinkpad X21 (which was easy, because it just require one screw to deal with). And this was at my home, I used my home machine as host to install this time. Again, just as before, I used converter to convert from 2.5inch to 3.5 IDE connector. Installed OpenSolaris 2008.05 without any problems. Since I knew OpenSolaris create at install time snapshot on newly installed disk, without any change to the installed hard disk, I just plugged into Thinkpad X21. Booted off, Hey!, it worked! Without any changes to the installed disk, no modification to the /dev nor path_to_inst, it just booted fine! Logged in as myself, bring up the gnome-terminal, everything looks fine so far. Thinkpad x21 is not that slow machine to use (except I swapped hard drive to 60GB sometime ago). Bring up firefox.....ah....no go. Not enough memory. Umm. something to do with swap ? Yup, swap device name are hard coded for my main home machine. Manually adding correct device name, and make sure also change the /etc/vfstab. Firefox works just fine.
This new easy of use (^ ^) are result of zfs and zfs root project. ZFS auto discover the its own device name/tree to mount. Since OpenSolaris 2008.05, every file system are zfs. Without modify the /dev, system just detect them just fine. Also, zfs root has auto configured grub menu (and others?). Therefore, I don't even need to modify the grub menu file in order to boot. This was very nice surprise to me. I have not look deep enough on why not even path_to_inst does not require to be rebuild. This still puzzle me. My main host machine are AMD Athlon x2 with nVIDIA chipset which is very different from ThinkPad X21.
OpenSolaris 2008.05 with ThinkPad X21 works quite well. Only problem I have so far are Wifi. ThinkPad X21 does not have built in Wifi, I use PCCard Wifi board. However, nwam (network auto magic) does not work auto magically with PCCard plug and play yet. I have to restart the nwam service after I plug in the card. Now, this was too easy of exercise, and I'v got idea on different way to install. I'll try that next...(^ ^)
金曜日 4 11, 2008
今年で2回目になる Sun Business .Next 2008で、 今回もしゃべることになりました。 ただし、そろそろ若手にも出てもらおうということで、 私以外にOpenSolarisコミュニティ活動で活躍してもらっている人にも出てもらいます。 残念ながらコミュニティのトラックは人気のようでほぼ埋まってしまっているようです。
ということで、私の内容ではなくまだ席が少し空いているキーノート・セッションに関して。 今年は John Fowler がきてくれるということで、期待しています。 Johnは現在ハードウエアの部署の大ボスをしていますが、 元々はソフトウエアの人です。 以前にもふれたと思いますが、私はしばらく(3年半)USのサンで仕事をしていました。 その時におなじOpenWindowsのグループでDeskSetの担当だったのがJohnでした。 私の記憶が正しければカレンダマネージャ(cm)を書いたのが彼です。 Johnとその当時は直接話したことは無いのですが、 後に彼の奥さんとなった女性と一緒に仕事をしたことがあり、 3年くらい前にJohnとあった時にそのことでなぜか盛り上がりました (日本からきたエンジニアが珍しかったのか、奥さんが私のことを彼に話していたそうです)。 その後、驚くほど出世したわけですが、 彼の人格によるところが多そうです。
少しだけ彼と私が似ているとすると、 ソフトウエアを仕事としている(た)のに、 ハードウエアに非常に関心があるということでしょうか。 また、本人からとかではなくJonathanの話として聞いたことがあるのですが、 Johnの優れた点の一つは、社内の様々な人を繋ぎ、 連携させプロジェクトを成功させていくという点だそうです (アメリカ人の技術者は専門職に特に特化している人が多く、 別の分野の人を連携させるのはたやすくありません)。 これは私も是非見習いたい点です。 話をしているととてもソフトウエアの専門家であったとは思えないほど、 広い範囲の知識(と興味)をもち、 ハードウエア部門を背負って立つのも当然と思えるほどです。 久しぶりにあうJohnが当日どのような話をしてくれるのか楽しみです。
火曜日 2 19, 2008
ちょっと時間がたちましたが、日本語で書いている人を見かけないので...IndianaのPreview2が出ましたね( アナウンスメイル)。 出たその日にダウンロードしてインストールをしたのですが、 その後時間がとれなくてさわっていませんでした。 IndianaはUbuntuのようにCD1枚でLiveCDとインストールができるわけですが、 CD1枚に収まらない分はネットワークから引っ張ってくることになります。 Preview1の時はよく見ていなかったためかほとんど追加のパッケージが 無かった(ネットワーク越しにCDと同じパッケージがおいてあっただけ)ようなのですが、 Preview2では少なくとも400個以上の追加パッケージがあるようです (ちょこちょこっとスクリプトを書いて数えたので間違えているかもしれません)。 すでにCDからインストールされているのが433個で、数えたのが464個で、 あわせると900個近くですね。 現在のIndianaのパッケージは基本的にNevadaのSVR4パッケージから生成されている(よう)です。 元になっているNevadaのbuild 79bは1900個位のパッケージがありますから、 まだまだ半分位しかないのでしょうか。 ざっと見た感じではまだまだローカリゼーション関連は入っていないようです (ま、その辺を詰めるためにまもなく出張する人間が近くに座っていますけど :-)。
で、例の誰も使わないPentiumIII@750MHzのマシンで、この追加パッケージを全部入れようと しているのですが....終わらない。 途中で固まりますが、 trussで見てみるとpkg.opensolaris.orgからの返事待ちで止まります。 強制終了して再起動すると少しずつ進むという状態です。 他のマシンでも再現したらバグ報告なのかな... とりあえず家からもやってみますか。 皆さんも preview2 ダウンロードして試してみてください。
水曜日 1 16, 2008
Solarisエバンジェリストと名乗っているおかげか、 Solarisエバンジェリストグループには度々記事を書いてほしいという依頼が来ます。 今回は@IT様からの依頼で、
この連載では、サーバOSとして十数年発展してきた「Solaris」をオープンソース化した「OpenSolaris」を紹介し、ブログサーバ「Roller」と組み合わせて運用していくうえで有用なさまざまな知識を紹介していきます。(編集部)という内容のシリーズ物の初回で、 掲載 されております (すでにサンのトップブロガーである Jim が紹介してくれていますが)。 どうも私がさわりをとりあえず書いて、 もっと濃い内容は別の人が書くというのがパターン化してきています。 次回以降はSolarisエバンジェリストグループの中でももっと若手の方に書いてもらう 予定にしております。 記事に関しての意見や、今後の内容に関して希望がありましたら、 このブログに対するコメントでも受けたいと思いますので、 遠慮無くお願いします。
金曜日 11 09, 2007
Sun Tech Days 東京 2007に多く方にきて頂けました、本当にありがとうございます。
いつもの通りJim GrisanzioさんがOpenSolaris dayの
多くの写真
をすでに載せています。
また、片貝さんも多くのブログエントリー
でこの件について書いていますね
私もおもにブース周りの写真を多く撮りました。
![]() |
| Sun Tech Days 東京 2007 |
私はJimの写真で何となくわかるかもしれませんが、 OpenSolaris dayの最初のご挨拶とその日一日の進行役を務めさせて頂きました。 なれない役割で不手際もあったかと思いますが、 すべてのセッションで多くの質問をして頂きありがたく思っております。 やはりこういう時は双方向でいろいろやりとりができる感じになると、 良い感じになります。 また、実際に聞きに来てくれた方がどういったことに興味をもっていられるのかも実感できます。 ただし、即席の私の通訳はいまふたいきで大変申し訳ありませんでした。 翻訳と通訳が如何に違う能力か改めて実感しました。
私は以前USに1人で周りに日本人が一切いない環境で生活/仕事をしていたことがあるのですが、 行った最初はほとんど英語がしゃべれませんでした。 英語が全くわからないのではなく、会話のタイミングに間に合うように片言でも何でも 文章が組み上がらないのです。 時間をかければ自分が言いたいことは思いつくのに、思いついた時には会話は終わっているみたいな (T T)。 そこで普段1人でいる時にも英語で考える訓練をはじめました。 使える言葉が極端に減るので、最初は本当に苦労したのですが、 そのおかげで少しは会話が成り立つようになりました。 この結果私は英語で話をしている時は頭の中も英語であり、 日本に翻訳していないのです。 ですから、頭の中でどんどん翻訳をしていくという訓練は全然できていません。 通訳する時も一度英語で理解してから、日本語に翻訳するために、 リアルタイムで全然うまくできません。 と、言うのがいいわけです、申し訳ありません _o_
Solaris関連の基調講演としてはJames Hughesさんが登場しましたが、 とても良かったと思います。 おそらく日本の方はあまり彼のことを知らないと思うのですが、 実は私もお目にかかるのは初めてでした。 いろいろな意味であうのを楽しみしていたのですが、 今回食事に行く機会など話をする機会が多くありました。 とても気さくな方でCTOとかフェローとかという肩書きからは想像できない人柄です。 日本には以前の職の時に何度もきていると言うことなのですが、 住んだわけでも学校で学んだわけでもないのに、かなり日本語がわかります。 しゃべる方はほんの片言なのですが、聞く方はかなり理解できるようで、驚きました。 英語と日本語はかなり文法とかセマンテック的に違いが大きいので、 お互いの言葉を学ぶのが難しいと思っていたのですが、 James Hughesは数回日本を訪れただけでこれだけわかるのは驚きです。 例えば彼は講演の最後で「ご静聴ありがとうございました」と言いましたが、 こちらで教えたわけではなく、 彼の方から正しい発音を教えてくれと前の日に唐突に言われてびっくりさせられました。
James Hughesさんの講演の内容は そのうち公式ページにプレゼンテーションの資料が公開されるとはずですが、 おもになぜ今Solarisなのか、そしてIndianaがどういったもので、 なぜそうしたのかといった内容でした。 これらはタイムリーであり、最新の情報が盛りたくさんで良かったと思います。 また、彼なりのしゃべり方の演出で楽しく聞けたのではないかと思います。 ある意味子供っぽく振る舞い、強調したいところがどこなのか大変わかりやすかったです。 できれば彼には度々日本にきて様々な場で今後も講演をしてもらえればと感じています。
改めて、ご来場頂いた多くの方々、本当にありがとうございました。 これからも主に開発者の方にはOpenSolaris, おもに実際に運用している方にはSolarisという形で、宜しくお願いします。
火曜日 11 06, 2007
今Sun Tech Daysの前の日でCommunity dayのいっかんとして、 OpenSolaris Dayをやっいます。 これはその会場自身でかいています。 Let's Note CF-W5を初めて使っているのですが、 Nevadaのビルド#76で何の問題もなく会場のWifiが使えています。 会場には多くの方に来ていただいていますが、まだ、席はあります。 是非午後遅くのセッションだけでもご参加ください。