2011/12/11(Sunday)
■[solaris] Solaris11 リリースおめでとう!!
だいぶ間があいちゃいましたが、とうとう Solaris11 がリリースされました。
私が Solaris の世界に足を踏み入れたきっかけは、ふだん扱うデータが多くて困ってたときに「いいファイルシステムないかなー」と 2ch を漁っていたところ、http://logsoku.com/thread/pc8.2ch.net/unix/1146631270/ というスレに出会ったことでした。
しかし ZFS はじめすごい便利な機能が盛りだくさんな OS なのに、 ksh とかキモくていやでたまりませんでした。しばらくして OpenSolaris に /usr/gnu/bin なディレクトリができたあたりから「やべえこれしかなくね」なんて思ってましたけど、業務で使うにはサポート契約などの関係でなかなか難しかった。
そんなガマン大会ももう終わりです。存分に新しい ZFS と暮らしやすいユーザランドで暮らすことができるようになりました。が、残念なこともあります。タダで業務に使える便利な OS ではなくなってしまったかもしれません。
さまざまな改善・変更点とか
Debian も Sarge が出るときに大変だったような気がしますが、次期バージョンのリリースまで時間がかかると、改善と共に変更も多く、移行も大変です。 ``the First Cloud OS'' なんて言ってるくらいで、ほんとに変わりました。
営業的な目玉や細かいところは Oracle の方がちゃんと営業活動をしてくださるので、 Transitioning From Oracle Solaris 10 to Oracle Solaris 11 から気になるところをピックアップしつつ、とりあえず触ってみたいけど live CD だと裏でいろいろやってくれすぎてよくわからん、という人向けに「私はこうやってインストールした」のメモを書いておきます。
とりあえずつかってみようの例
Debian や Solaris10 ならなんとなくインストールできる人が、デスクトップなどではなくサーバ向けのセットアップをしたいときの例です。
インストール
まずは http://oracle.com/solaris11 からインストーラをダウンロードします。いくつか種類がありますが text install のイメージを使います。
インストーラで設定することはそんなに多くないですが、ポイントとしては以下。
- 起動ディスク(?)は UFS ではなく ZFS になる
- ミラー設定はあとでやります
- ネットワークは ``Automatic'' ではなく ``None'' を選び、あとで手動で設定
- タイムゾーンをちゃんと選びつつ、そのタイムゾーンでの時刻を設定
- RTC は UTC になるようです。
- インストール終了後 reboot すると一瞬インストーラがまた起動したように見えますが、おとなしく待ちます。
最初のログイン
インストール時に作ったアカウントでログインし、 su または sudo で作業をします。
- root は role です
ネットワークまわりの設定
/etc にあるたくさんのファイルは、かなりのものが自動生成で SMF 管理に移行しました。
- ホスト名
- /etc/nodename は消えました
- これはすでにインストーラが設定してくれます
root@oscar:~# svccfg -s svc:/system/identity:node describe config
config application
Properties that control the configuration of the node
config/nodename astring oscar
Network name of the computer
config/loopback astring oscar
Hostname mapped to loopback
root@oscar:~# svccfg -s svc:/system/identity:node listcust
config/loopback astring admin oscar
general/enabled boolean admin true
- ホスト名を変える場合
- 以下で "# setprop config/nodename = astring: oscar" の # (コメント) を外し、astring: 以降を編集します
root@oscar:~# svccfg -s svc:/system/identity:node editprop
- 編集を反映するには、以下のようなかんじで試せばどれか当たるはず
root@oscar:~# svccfg -s svc:/system/identity:node validate root@oscar:~# svccfg -s svc:/system/identity:node refresh root@oscar:~# svcadm refresh svc:/system/identity:node root@oscar:~# svcadm restart svc:/system/identity:node
- NIC の設定
- NIC 一覧
- e1000g ドライバで認識された device e1000g0 が link net0 と認識されている
- vlan, link aggregation, vnic なども dladm の範疇です
root@oscar:~# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 Ethernet up 1000 full e1000g0 root@oscar:~# dladm show-ether LINK PTYPE STATE AUTO SPEED-DUPLEX PAUSE net0 current up yes 1G-f bi root@oscar:~# dladm show-link LINK CLASS MTU STATE OVER net0 phys 1500 up --
- IP 設定
- create-ip が ifconfig plumb 相当
- -ip なんだか -if なんだかは紛らわしい
root@oscar:~# ipadm show-if IFNAME CLASS STATE ACTIVE OVER lo0 loopback ok yes -- root@oscar:~# ipadm create-ip net0 root@oscar:~# ipadm show-if IFNAME CLASS STATE ACTIVE OVER lo0 loopback ok yes -- net0 ip down yes --
- IP address 設定
- net0 という link に IPv4 のアドレス 192.168.1.10/255.255.255.0 を設定します
root@oscar:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 lo0/v6 static ok ::1/128 root@oscar:~# ipadm create-addr -T static -a 192.168.1.100/24 net0/v4 root@oscar:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 192.168.1.100/24 lo0/v6 static ok ::1/128
- default route 設定
- ここは今まで通りのようです
root@oscar:~# route -p add default 192.168.1.1
- NSS 設定
- /etc/inet/hosts は存在しますが /etc/hostname.* がないので、あまり書くことはないかも。
- /etc/resolv.conf, /etc/nsswitch.conf も存在しますが自動生成されるので手で編集してはいけません
- resolv.conf に server 192.168.1.1 を設定する相当
- ほぼドキュメント通りに丁寧に書くと以下のようなかんじ。
- 最初は config/nameserver というエントリが無いので、ホスト名みたく editprop とはちょっと変わります
root@oscar:~# svccfg -s svc:/network/dns/client svc:/network/dns/client> setprop config/nameserver = net_address: 127.0.0.1 svc:/network/dns/client> select dns/client:default svc:/network/dns/client:default> refresh svc:/network/dns/client:default> validate svc:/network/dns/client:default> quit
- nsswitch.conf に dns を設定する相当
root@oscar:~# svccfg -s svc:/system/name-service/switch svc:/system/name-service/switch> setprop config/host = astring: "files dns mdns" svc:/system/name-service/switch> select system/name-service/switch:default svc:/system/name-service/switch:default> refresh svc:/system/name-service/switch:default> validate svc:/system/name-service/switch:default> quit
- ついでに mdns も有効にしちゃう
- ちなみに "svc:/network/" は部分一致で省略できます
root@oscar:~# svcadm enable svc:/network/dns/multicast
- なお nwam という言葉をご存じの方は、もうこの名前は使わなくなったと考えて下さい
- svcs -a | grep nwam で出てくるやつはダミーです
ブートディスクをミラー設定
- ブートディスクは EFI ラベルじゃなくて SMI ラベルが必要です
- 簡単にいえば同じフォーマットされてないとダメってこと
- ミラー追加
- うまくいったかは zpool status -lv とかで見てみてください
root@oscar:~# format -L vtoc c4t1d0
Searching for disks...done
selecting c4t1d0
[disk formatted]
c4t1d0 is labeled with VTOC successfully.
root@oscar:~# prtvtoc /dev/rdsk/c4t0d0s2 | fmthard -s - /dev/rdsk/c4t1d0s2
fmthard: Partition 2 specifies the full disk and is not equal
full size of disk. The full disk capacity is 33511590 sectors.
fmthard: Partition 2 specified as 33511590 sectors starting at 0
does not fit. The full disk contains 33511590 sectors.
fmthard: New volume table of contents now in place.
root@oscar:~# zpool attach -f rpool c4t0d0s0 c4t1d0s0
Make sure to wait until resilver is done before rebooting.
再起動あたり
kernel$ /platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS,console=force-text
- デフォルトで fast reboot というのが有効になっています
で、 shutdown なのか init なのか halt なのか。みたかんじ poweroff と reboot でよさそうですね。
エラー検知
Solaris10 時代からそうですが FMA (Fault Manager?) という仕組みがあって、たいていの OS 的エラーはこれで検知できます。
- つかうコマンド
- fmadm faulty, fmdump, fmdump -e
- とりあえず打ってみてなんか出たら残念でした
- 検知したエラーを通知
- 以下コマンドで何か見つかったときに root 宛てにメールが来ます
- problem-diagnosed 以外にも updated, repaired, resolved とかがあります
root@oscar:~# svccfg setnotify problem-diagnosed mailto:active
- メールの例
- kernel panic で自動的に reboot してた場合に来たメールです
Date: Sat, 10 Dec 2011 18:47:50 +0900 (JST) From: No Access User <noaccess@localhost.localdomain> X-FMEV-HOSTNAME: oscar X-FMEV-CLASS: list.suspect X-FMEV-UUID: a7085088-582a-4aef-bf74-9d0d5cf3818d X-FMEV-CODE: SUNOS-8000-KL X-FMEV-SEVERITY: Major Subject: Fault Management Event: oscar:SUNOS-8000-KL To: root@localhost.localdomain SUNW-MSG-ID: SUNOS-8000-KL, TYPE: Defect, VER: 1, SEVERITY: Major EVENT-TIME: Sat Dec 10 18:47:50 JST 2011 PLATFORM: i86pc, CSN: -, HOSTNAME: oscar SOURCE: software-diagnosis, REV: 0.1 EVENT-ID: a7085088-582a-4aef-bf74-9d0d5cf3818d DESC: The system has rebooted after a kernel panic. AUTO-RESPONSE: The failed system image was dumped to the dump device. If savecore is enabled (see dumpadm(1M)) a copy of the dump will be written to the savecore directory /var/crash. IMPACT: There may be some performance impact while the panic is copied to the savecore directory. Disk space usage by panics can be substantial. REC-ACTION: Use 'fmadm faulty' to provide a more detailed view of this event. If savecore is not enabled then please take steps to preserve the crash image. Use 'fmdump -Vp -u a7085088-582a-4aef-bf74-9d0d5cf3818d' to view more panic detail. Please refer to the associated reference document at http://sun.com/msg/SUNOS-8000-KL for the latest service procedures and policies regarding this diagnosis.
ichii386@oscar% fmdump -Vp -u a7085088-582a-4aef-bf74-9d0d5cf3818d
TIME UUID SUNW-MSG-ID
Dec 10 2011 18:47:50.083117000 a7085088-582a-4aef-bf74-9d0d5cf3818d SUNOS-8000-KL
TIME CLASS ENA
Dec 10 18:47:46.4495 ireport.os.sunos.panic.dump_available 0x0000000000000000
Dec 10 18:47:37.7837 ireport.os.sunos.panic.dump_pending_on_device 0x0000000000000000
nvlist version: 0
version = 0x0
class = list.suspect
uuid = a7085088-582a-4aef-bf74-9d0d5cf3818d
code = SUNOS-8000-KL
...
panicstr = BAD TRAP: type=e (#pf Page fault) rp=ffffff001ef229c0 addr=5a occurred in module "si3124" due to a NULL pointer dereference
...
パッケージ
- たとえば mysql 入れたかったら以下のようにします。
- 175 は Solaris11 11/11 の snv 番号
root@oscar:~# pkg search 'pkg.fmri:*/mysql*' | grep 175 pkg.fmri set solaris/database/mysql-51 pkg:/database/mysql-51@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-51/library pkg:/database/mysql-51/library@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-51/tests pkg:/database/mysql-51/tests@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-common pkg:/database/mysql-common@0.5.11-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-51 pkg:/database/mysql-51@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-51/library pkg:/database/mysql-51/library@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-51/tests pkg:/database/mysql-51/tests@5.1.37-0.175.0.0.0.2.537 pkg.fmri set solaris/database/mysql-common pkg:/database/mysql-common@0.5.11-0.175.0.0.0.2.537 root@oscar:~# pkg install mysql-51 ...
まとめ
前提知識の置き方が、Solaris 知らない人、10 なら知ってる人、OpenSolaris や Solaris 11 Express 知ってる人とかなりバリエーションあるので、公式の移行ガイドにしてもキレイにまとめるのはかなり大変そうです。
最初の設定でよくつかうのは dladm, ipadm, svcadm, svccfg, svcs, pkg ってとこでしょうか。どれも Linux にはないコマンドですが、 MacOS の launchctl 同様に慣れてくればきっと便利に感じると思います。これを機に Solaris 派になってみてはいかが??
- 136 http://www.google.co.jp/url?sa=t&rct=j&q=apple remote desktop&source=web&cd=10&ved=0CIcBEBYwCQ&url=http://d.hatena.ne.jp/ichii386/20080121/1200846667&ei=4_LlTvjmAYiiiAfs-vW1BQ&usg=AFQjCNHOwuaFy5YtmmIC1ZaV9hGLMAC7Dw
- 38 http://t.co/axGHIKPC
- 38 http://www.google.co.jp/url?sa=t&rct=j&q=mysql partition&source=web&cd=4&ved=0CDwQFjAD&url=http://d.hatena.ne.jp/ichii386/20071118/1195361764&ei=-H7kTr6nDJGhmQWV54yRBQ&usg=AFQjCNEIwmLv-MaSUvT3rmfulRIxLLjcvA
- 35 http://www.google.co.jp/url?sa=t&rct=j&q=mysql パーティション&source=web&cd=6&ved=0CFQQFjAF&url=http://d.hatena.ne.jp/ichii386/20071118/1195361764&ei=sGflTqOZIczJmQWa9MWQBQ&usg=AFQjCNEIwmLv-Ma
- 31 http://www.google.co.jp/url?sa=t&rct=j&q=mysql not exists&source=web&cd=4&sqi=2&ved=0CEEQFjAD&url=http://d.hatena.ne.jp/ichii386/20070705/1183575658&ei=nM_mTvqLGq-dmQXp68GRCg&usg=AFQjCNHf_mrJCeES0Pd1YJ1RXy5UvuM02Q
- 26 http://www.google.co.jp/url?sa=t&rct=j&q=gitによるバージョン管理&source=web&cd=10&ved=0CH0QFjAJ&url=http://d.hatena.ne.jp/ichii386/20111208/1323299802&ei=dbDkTq_PJa32mAXHzsy
- 22 http://www.google.co.jp/url?sa=t&rct=j&q=proc_open&source=web&cd=2&ved=0CCYQFjAB&url=http://d.hatena.ne.jp/ichii386/20071116/1195153132&ei=2vrlTpiRJqfPmAXEm_30BA&usg=AFQjCNE2zQ7bQ92pOO3iUsNLAFFBTNwXwg
- 20 http://www.google.co.jp/url?sa=t&rct=j&q=mac remote desktop 使い方&source=web&cd=5&sqi=2&ved=0CFIQFjAE&url=http://d.hatena.ne.jp/ichii386/20080121/1200846667&ei=KcLkTu20OqmtiAf-htC2BQ&usg=AFQjCNHOwuaFy5YtmmIC1ZaV9hGL
- 20 http://www.google.co.jp/url?sa=t&rct=j&q=n-01b&source=web&cd=13&ved=0CEQQFjACOAo&url=http://d.hatena.ne.jp/ichii386/20091228/1261938570&ei=Om0IT9vEB4etiAeXlfmeCQ&usg=AFQjCNHh3WHiKc0FtevoqP8f5Xvm7KQJ2A&sig2=qIlgf0nTI0lFL1caOrsDng
- 18 http://www.google.co.jp/url?sa=t&rct=j&q=mysql+not+exists&source=web&cd=4&ved=0CEIQFjAD&url=http://d.hatena.ne.jp/ichii386/20070705/1183575658&ei=Fw7oTqyzBqXJmAXNyMCTCg&usg=AFQjCNHf_mrJCeES0Pd1YJ1RXy5UvuM02Q





