Solaris 11 EA (Early Adopter) というのが出てました。ほぼ snv_173 そのもののようです。
先日、自宅のサーバ (Solaris11 Express, snv_151a) の BIOS とかを firmware してたら突然死亡して、せっかくだし EA release にしようと新規インストールしました。新しめの Intel on-board NIC である 82579V (pci8086,201b) にもちゃんと e1000g で動いていました。
ただ、 LSI MegaRaid SAS 9240-i8 が imraid_sas で認識されているもののディスクが見えない。 snv_151a のときに LSI から落としてきた imr_sas もダメでした。 JBOD じゃなくて virtual disk 作んないとダメかな? あとで余裕あるときに調べようと思っています。
で、ちょっとハマったメモ。
import
まともに export もせずに死んで OS だけ入れ替えたので、import しようとすると以下のとおり。
ichii386@oscar:~$ sudo zpool import pool: tank id: 4765092275615549508 state: UNAVAIL status: The pool was last accessed by another system. action: The pool cannot be imported due to damaged devices or data. see: http://www.sun.com/msg/ZFS-8000-EY config: tank UNAVAIL missing device raidz1-0 ONLINE c1t0d0 ONLINE c1t3d0 ONLINE c1t1d0 ONLINE c1t2d0 ONLINE cache c1t1d0
ichii386@oscar:~$ sudo zpool import tank cannot import 'tank': pool may be in use from other system, it was last accessed by oscar (hostid: 0x894ca0) on Wed Sep 28 12:24:59 2011 use '-f' to import anyway ichii386@oscar:~$ sudo zpool import -f tank The devices below are missing, use '-m' to import the pool anyway: 16845364573619796447 [log] cannot import 'tank': one or more devices is currently unavailable
device path が変わった
何が起きているかというと、OS 入れ替えに伴いケーブル差し替えをしたので、以下のように device path (の numbering) が変わったのでした。
device | snv_151a 時代 | snv_173 入れた後 |
---|---|---|
hdd1 | c2t0d0 | c1t0d0 |
hdd2 | c2t1d0 | c1t3d0 |
hdd3 | c2t2d0 | c1t1d0 |
hdd4 | c2t3d0 | c1t2d0 |
log | c1t0d0 | なし |
cache | c1t2d0 | なし |
log, cache がなしになってるのは、 imraid_sas がうまくいかない都合です。
import -m (retry)
書いてあるとおりに -m を使って import すると、次のようになりました。
ichii386@oscar:~$ zpool status tank pool: tank state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: http://www.sun.com/msg/ZFS-8000-4J scan: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE - - - c1t3d0 ONLINE - - - c1t1d0 ONLINE - - - c1t2d0 ONLINE - - - logs 16845364573619796447 FAULTED 0 0 0 was /dev/dsk/c1t0d0s0 cache c1t1d0 FAULTED - - - corrupted data errors: No known data errors
logs も cache もないので、これをなんとか消してやりたい。 logs は 1684... という数字を使って
ichii386@oscar:~$ sudo zpool remove tank 16845364573619796447
とすれば消えてくれるんですけど、 cache のほうは c1t1d0 が raidz1-0 に入ってると認識されてうまくいきません。
ichii386@oscar:~$ sudo zpool remove tank c1t1d0 cannot remove c1t1d0: only inactive hot spares, cache, top-level, or log devices can be removed
zdb
logs とおなじように device path じゃなくて数字 (guid) を指定したらうまくいきそうなんですけど、これはどうやって調べればいいんだ? ということで、 zdb の出番です。
しかし、たんに zdb tank しても、 cache の情報は出てくれませんでした。
ichii386@oscar:~$ sudo zdb tank MOS Configuration: version: 31 name: 'tank' state: 0 txg: 1382933 pool_guid: 4765092275615549508 timestamp: 1317327582 hostid: 4887412 hostname: 'oscar' vdev_children: 1 vdev_tree: type: 'root' id: 0 guid: 4765092275615549508 children[0]: type: 'raidz' id: 0 guid: 3650509394302283806 nparity: 1 metaslab_array: 29 metaslab_shift: 35 ashift: 9 asize: 4000766230528 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 9100254656495358846 path: '/dev/dsk/c1t0d0s0' devid: 'id1,sd@SATA_____WDC_WD10TPVT-00U_____WD-WX21A31P4321/a' phys_path: '/pci@0,0/pci8086,201b@1f,2/disk@0,0:a' whole_disk: 1 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 1408779724253808096 path: '/dev/dsk/c1t3d0s0' devid: 'id1,sd@SATA_____WDC_WD10TPVT-00U_____WD-WX51A31U8925/a' phys_path: '/pci@0,0/pci8086,201b@1f,2/disk@3,0:a' whole_disk: 1 create_txg: 4 children[2]: type: 'disk' id: 2 guid: 11558871919403241941 path: '/dev/dsk/c1t1d0s0' devid: 'id1,sd@SATA_____WDC_WD10TPVT-00U_____WD-WXE1A21S3853/a' phys_path: '/pci@0,0/pci8086,201b@1f,2/disk@1,0:a' whole_disk: 1 create_txg: 4 children[3]: type: 'disk' id: 3 guid: 17021081150085051024 path: '/dev/dsk/c1t2d0s0' devid: 'id1,sd@SATA_____WDC_WD10TPVT-00U_____WD-WX41A31J8285/a' phys_path: '/pci@0,0/pci8086,201b@1f,2/disk@2,0:a' whole_disk: 1 create_txg: 4 (以下略)
man zdb すればわかりますが、これはふつうのユーザは使っちゃダメよらしいので、 http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/zdb/zdb.c を眺めて何とかならんかなー、と考えると、 "l2cache" という文字列がみえる。
そこで以下を試したところ、上手いこと行きました。
ichii386@oscar:$ sudo zdb -M l2cache tank MOS L2 Caches: l2cache[0]: type: 'disk' guid: 10032807697961866673 path: '/dev/dsk/c1t1d0s0' devid: 'id1,sd@SATA_____INTEL_SSDSC2MH25__LNEL119500KC250DGN/a' phys_path: '/pci@0,0/pci8086,201b@1f,2/disk@1,0:a' whole_disk: 1
ichii386@oscar:$ sudo zpool remove tank 10032807697961866673
ichii386@oscar:$ zpool status tank pool: tank state: ONLINE status: The pool is formatted using an older on-disk format. The pool can still be used, but some features are unavailable. action: Upgrade the pool using 'zpool upgrade'. Once this is done, the pool will no longer be accessible on older software versions. scan: resilvered 54.5K in 0h0m with 0 errors on Fri Sep 30 07:02:18 2011 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE - - - c1t3d0 ONLINE - - - c1t1d0 ONLINE - - - c1t2d0 ONLINE - - - errors: No known data errors
感想
なんてとこで、snv_173 の話はちょこちょこ書いていいのかなー。