だいぶ間があいちゃいましたが、とうとう 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 のイメージを使います。
インストーラで設定することはそんなに多くないですが、ポイントとしては以下。
最初のログイン
インストール時に作ったアカウントでログインし、 su または sudo で作業をします。
ネットワークまわりの設定
/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 の設定
- /etc/hostname.* も消えました
- ifconfig は存在しますが使いません (linux なら ip addr show だよね的な)
- dladm (datalink adm) と ipadm (IP adm) を使います
- e1000g0 ではなく net0 みたいな名前をふだん使うようになりました
- 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.
再起動あたり
- 起動時のフレームバッファが気に入らない人は menu.lst を編集して console= を設定する
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 ...