cappuccinoのコンピタブログ

cappmac.exblog.jp
ブログトップ

タグ:Solaris ( 4 ) タグの人気記事

apcupsdを入れた

実家メンテ計画も最終段階

雷の頻発する昨今なので、サージコンセント&無停電電源装置を導入しました。

Solaris 10にUPSを入れるケースはあまり無いのでメモとして記録。

◇ apcupsdとは
APC社の販売するUPSと連携するためのソフト。
UPSが停電を検知するとホストPCに送信する信号を受信し、停止処理を行なう。
UPSにより供給する電力ではPCは数分しか起動しないため、停止処理をしないと結局ただの電源断と同じになってしまう。このソフトがあれば、UPSからの電源供給が断たれる前に安全に電源を落としてくれる。

注意)gmakeを入れる必要あり!
■ gmakeのインストール
pkg install SUNWgmake
これだけでOK

■ apcupsdのインストール
めんどくさいので丸ごと記録

まずは、コンフィグ。

cappmac@opensolaris:‾/Desktop/src/apcupsd-3.14.9# ./configure --enable-usb
checking for true... /usr/bin/true
checking for false... /usr/bin/false
checking build system type... i386-pc-solaris2.11
checking host system type... i386-pc-solaris2.11
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking for gawk... gawk
checking for library containing strerror... none required
checking for shutdown... /usr/sbin/shutdown
checking for mail... /usr/bin/mail
checking for wall... /usr/sbin/wall
checking for sh... /usr/bin/sh
checking for GNU make... gmake
checking for ranlib... /usr/bin/ranlib
checking for rm... /usr/bin/rm
checking for cp... /usr/bin/cp
checking for echo... /usr/bin/echo
checking for ln... /usr/bin/ln
checking for sed... /usr/bin/sed
checking for ar... /usr/bin/ar
checking for mv... /usr/bin/mv
checking for rst2html.py... no
checking for rst2pdf... no
checking for abort... yes
checking for fork... yes
checking for calloc... yes
checking for getpid... yes
checking for ioctl... yes
checking for kill... yes
checking for rewind... yes
checking for select... yes
checking for setsid... yes
checking for signal... yes
checking for strerror... yes
checking for strncmp... yes
checking for strncpy... yes
checking for tcgetattr... yes
checking for vfprintf... yes
checking for setpgrp... yes
checking for snprintf... yes
checking for vsnprintf... yes
checking for library containing nanosleep... none required
checking for syslog... yes
checking for strftime... yes
checking whether setpgrp takes no argument... yes
checking for library containing socket... -lxnet
checking for library containing gethostname... none required
checking for library containing gethostbyname... none required
checking for library containing gethostbyname_r... -lnsl
checking for socklen_t... yes
checking for library containing inet_addr... none required
checking for strchr... yes
using libc's strchr
checking for strstr... yes
checking for strcasecmp... yes
checking for memmove... yes
checking for getopt_long... yes
checking for inet_pton... yes
checking for localtime_r... yes
checking for egrep... egrep
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for sys/types.h... (cached) yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking arpa/nameser.h usability... yes
checking arpa/nameser.h presence... yes
checking for arpa/nameser.h... yes
checking whether stat file-mode macros are broken... no
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... no
checking for tzname... yes
checking for uid_t in sys/types.h... yes
checking type of array argument to getgroups... gid_t
checking for mode_t... yes
checking for off_t... yes
checking for pid_t... yes
checking return type of signal handlers... void
checking for size_t... yes
checking for uid_t in sys/types.h... (cached) yes
checking for socklen_t... yes
checking for int32_t... yes
checking for X... no
checking whether #! works in shell scripts... yes
Will not install HAL policy file
checking for libusb-config... /usr/bin/libusb-config
Using generic libusb USB driver.
checking for pkg-config... no
checking how many arguments gethostbyname_r() takes... five
checking if libsupc++ is required... yes
checking if GCC supports -fno-exceptions... yes
checking if GCC supports -fno-rtti... yes
checking for wait... yes
checking for waitpid... yes
checking for wait3... yes
checking for union wait... no
Disabling cgi support...
gcc private include directory found.
configure: creating ./config.status
config.status: creating autoconf/variables.mak
config.status: creating platforms/apccontrol
config.status: creating platforms/etc/changeme
config.status: creating platforms/etc/commfailure
config.status: creating platforms/etc/commok
config.status: creating platforms/etc/offbattery
config.status: creating platforms/etc/onbattery
config.status: creating platforms/etc/apcupsd.conf
config.status: creating examples/safe.apccontrol
config.status: creating src/win32/Makefile
config.status: creating platforms/sun/apcupsd
config.status: creating platforms/sun/rc0.solaris
config.status: creating platforms/sun/apccontrol
config.status: creating src/drivers/usb/generic/libusb.h
config.status: creating include/config.h


Configuration on Tue Aug 16 00:08:10 JST 2011:

Host: i386-pc-solaris2.11 -- sun Solaris
Apcupsd version: 3.14.9 (22 July 2011)
Source code location: .
Install binaries: /etc/opt/apcupsd/sbin
Install config files: /etc/opt/apcupsd
Install man files: /usr/share/man
Nologin file in: /etc
PID directory: /var/run
LOG dir (events, status) /etc/opt/apcupsd
LOCK dir (for serial port) /var/spool/locks
Power Fail dir /etc
Compiler: g++ 3.4.3
Compiler flags: -I/usr/local/include -I/usr/sfw/include -g -O2 -fno-exceptions -fno-rtti -Wall
Linker: gcc
Linker flags: -L/usr/local/lib64 -L/usr/local/lib -L/usr/sfw/lib
Host and version: sun Solaris
Shutdown Program: /usr/sbin/shutdown
Port/Device: /dev/ttya
Network Info Port (CGI): 3551
UPSTYPE apcsmart
UPSCABLE smart

drivers (no-* are disabled): apcsmart dumb net generic-usb snmp no-net-snmp pcnet no-test

enable-nis: yes
with-nisip: 0.0.0.0
enable-cgi: no
with-cgi-bin: /etc/apcupsd
with-libwrap:
enable-pthreads: yes
enable-dist-install: yes
enable-gapcmon: no
enable-apcagent: no

Configuration complete: Run 'gmake' to build apcuspd.


次にmake
gmakeを使うので注意。

cappmac@opensolaris:‾/Desktop/src/apcupsd-3.14.9# gmake
src
src/lib
CXX src/lib/apcconfig.c
CXX src/lib/apcerror.c
CXX src/lib/apcevents.c
CXX src/lib/apcexec.c
CXX src/lib/apcfile.c
CXX src/lib/apclibnis.c
CXX src/lib/apclock.c
CXX src/lib/apclog.c
CXX src/lib/apcsignal.c
CXX src/lib/apcstatus.c
CXX src/lib/asys.c
CXX src/lib/newups.c
CXX src/lib/md5.c
CXX src/lib/statmgr.cpp
statmgr.cpp: In member function `bool StatMgr::Update()':
statmgr.cpp:58: warning: 'len' might be used uninitialized in this function
CXX src/lib/gethostname.c
CXX src/lib/amutex.cpp
CXX src/lib/astring.cpp
CXX src/lib/autil.cpp
CXX src/lib/atimer.cpp
CXX src/lib/athread.cpp
CXX src/lib/libsupc++fix.cpp
AR src/lib/libapc.a
src/drivers
src/drivers/apcsmart
CXX src/drivers/apcsmart/smart.c
CXX src/drivers/apcsmart/smarteeprom.c
CXX src/drivers/apcsmart/smartoper.c
CXX src/drivers/apcsmart/smartsetup.c
CXX src/drivers/apcsmart/smartsetup2.c
src/drivers/dumb
CXX src/drivers/dumb/dumboper.c
CXX src/drivers/dumb/dumbsetup.c
src/drivers/net
CXX src/drivers/net/net.c
src/drivers/pcnet
CXX src/drivers/pcnet/pcnet.c
src/drivers/usb
src/drivers/usb/generic
CXX src/drivers/usb/generic/generic-usb.c
In file included from libusb.h:9,
from generic-usb.c:28:
/usr/include/usb.h:60: warning: ignoring #pragma ident
CXX src/drivers/usb/generic/hidutils.c
In file included from libusb.h:9,
from hidutils.c:28:
/usr/include/usb.h:60: warning: ignoring #pragma ident
CXX src/drivers/usb/usb.c
src/drivers/snmplite
CXX src/drivers/snmplite/apc-mib.cpp
CXX src/drivers/snmplite/asn.cpp
CXX src/drivers/snmplite/mge-mib.cpp
CXX src/drivers/snmplite/mibs.cpp
CXX src/drivers/snmplite/rfc1628-mib.cpp
CXX src/drivers/snmplite/snmp.cpp
CXX src/drivers/snmplite/snmplite.cpp
CXX src/drivers/drivers.c
AR src/drivers/libdrivers.a
src/libusbhid
CXX src/libusbhid/parse.c
CXX src/libusbhid/data.c
CXX src/libusbhid/descr.c
AR src/libusbhid/libusbhid.a
CXX src/options.c
CXX src/device.c
CXX src/reports.c
CXX src/action.c
CXX src/apcupsd.c
CXX src/apcnis.c
LD src/apcupsd
CXX src/apcaccess.c
LD src/apcaccess
CXX src/apctest.c
LD src/apctest
CXX src/smtp.c
LD src/smtp
platforms
platforms/etc
platforms/sun
doc
MAN apcupsd.8 -> apcupsd.man.txt
MAN apcaccess.8 -> apcaccess.man.txt
MAN apctest.8 -> apctest.man.txt
MAN apccontrol.8 -> apccontrol.man.txt
MAN apcupsd.conf.5 -> apcupsd.conf.man.txt


最後にmake install
これもgmakeを使うので注意。

cappmac@opensolaris:‾/Desktop/src/apcupsd-3.14.9# gmake install
src
src/lib
src/drivers
src/drivers/apcsmart
src/drivers/dumb
src/drivers/net
src/drivers/pcnet
src/drivers/usb
src/drivers/usb/generic
src/drivers/snmplite
src/libusbhid
MKDIR /etc/opt/apcupsd/sbin
COPY apcupsd => /etc/opt/apcupsd/sbin/apcupsd
COPY apctest => /etc/opt/apcupsd/sbin/apctest
COPY apcaccess => /etc/opt/apcupsd/sbin/apcaccess
COPY smtp => /etc/opt/apcupsd/sbin/smtp
platforms
platforms/etc
COPY apcupsd.conf => /etc/opt/apcupsd/apcupsd.conf
COPY changeme => /etc/opt/apcupsd/changeme
COPY commfailure => /etc/opt/apcupsd/commfailure
COPY commok => /etc/opt/apcupsd/commok
COPY offbattery => /etc/opt/apcupsd/offbattery
COPY onbattery => /etc/opt/apcupsd/onbattery
platforms/sun
------------------------------------------------------------
Sun distribution installation
------------------------------------------------------------
COPY apcupsd => /etc/init.d/apcupsd
LN //etc/rc0.d/K21apcupsd -> ../init.d/apcupsd
LN //etc/rc1.d/S89apcupsd -> ../init.d/apcupsd
LN //etc/rc2.d/S89apcupsd -> ../init.d/apcupsd
=================================================
apcupsd script installation for Solaris Solaris complete.
You should now edit /etc/opt/apcupsd/apcupsd.conf to correspond
to your setup then start the apcupsd daemon with:

/etc/init.d/apcupsd start

Thereafter when you reboot, it will be stopped and started
automatically.
=================================================
Configuring ugen driver to match APC UPSes...

Driver (ugen) is already installed.

NOTE:
"(usbif51d,class3) already in use" and
"Driver (ugen) is already installed"
errors may be safely ignored.

=================================================
Driver configured. You must PERFORM A RECONFIGURE
BOOT "reboot -- -r" before running Apcupsd.
=================================================
COPY apccontrol => /etc/opt/apcupsd/apccontrol
doc
COPY apcupsd.8 => /usr/share/man/man8/apcupsd.8
COPY apcaccess.8 => /usr/share/man/man8/apcaccess.8
COPY apctest.8 => /usr/share/man/man8/apctest.8
COPY apccontrol.8 => /usr/share/man/man8/apccontrol.8
COPY apcupsd.conf.5 => /usr/share/man/man5/apcupsd.conf.5


使い方は他のOSと同様なので割愛。
[PR]
by cappuccino_mac | 2011-08-16 23:21 | 設定覚え書き

実家に帰ったらHDD死んでた

去年から東京暮らしになっていたんですが、お盆休みで実家に帰省しました。
1年中稼働しているサーバが実家にあるんですが、そのサーバのHDDがお亡くなりになっていました。

HDDがお亡くなりになっても、うちのサーバはSolarisによるソフトRAID(正確にはミラー)がしてあるのでデータ的には問題はありません。

ただ、起動時に問題が出たり、HDD交換時にはハードウェアRAIDみたいなお手軽さはなかったのでちょっとしたメモとして本エントリを記載します。

ちなみに前回のZFSについての紹介記事はここに記載しています。

【運用状況】
ヘッドレス状態でリモート管理
HDDは4台搭載し、2台メイン、2台ミラーで運用。

【発生状況】
sshがたまにログイン失敗するようになり、再起動を掛けたが、サーバ機能が不全(ping以外反応せず)。
モニターをつないで確認した結果。disk 2がアクセスリトライの規定値に達して動作しない旨のメッセージを出し続けていた。(詳細メッセージは取りこぼしたため未掲載)
HDDのどれかが、アクセス時に異音を発生させていた。どれか1台が壊れたもよう。

【障害対応記録】
■障害発生ディスク特定
DELLのPCだとBIOSでデバイスを停止(PC上から認識できないようにする)ことができるが、NECの安いサーバにはそのような機能はなかった。
そのため、1台1台電源を抜いて異音のするディスクを確かめる。特定完了。今回はSamsungさんでした。
障害発生ディスクを抜くとSolarisは正常起動した。
逆に言えば障害が発生するとSolarisは起動しないとも言える。可用性としてはどうなのだろう。

障害が発生したプールはDEGRADEDと表示される。今回はrpoolが死んでいることが分かる。
そして、障害が発生したディスクはc9d0s0ということも確認できる。
c0064553_13345557.png


ちなみにrpoolプールはシステム用のプールのため、バックアップ側にもgrubを入れる必要がある。

■ディスク入れ替え
HDDを近くのPCショップで購入し、入れ替え。

■ディスク認識
入れ替えただけでは認識はしてくれない。
まず、formatコマンドでパーティションを作成する必要がある。

cappmac@opensolaris:‾# format
Searching for disks...done


Total disk size is 60800 cylinders
Cylinder size is 16065 (512 byte) blocks

Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===


パーティションの作成はこの中のfdiskで行う。
作成方法は前回の記事と同じだが、作成後、パーティション情報を見ると、パーティション2にデータの大部分が格納されるように作られてしまっている。
format> partition


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> print
Current partition table (original):
Total disk cylinders available: 60797 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 60796 465.73GB (60797/0/0) 976703805
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 alternates wm 1 - 2 15.69MB (2/0/0) 32130


たぶん、パーティション0に設定することができればそのままresilver(RAIDでいうところのリビルド)が始まると思うのだが、やってくれなかった。

そのため、パーティション0とパーティション2を入れ替える処理を動かして、リビルドさせるよう修正した。
cappmac@opensolaris:‾# zpool replace rpool c9d0s0 c9d0s2
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c9d0s2 overlaps with /dev/dsk/c9d0s0


どうもうまくいかない。強制的実行オプションをつけてやれといっているのでやってみる。

cappmac@opensolaris:‾# zpool replace -f rpool c9d0s0 c9d0s2
Please be sure to invoke installgrub(1M) to make 'c9d0s2' bootable.
Make sure to wait until resilver is done before rebooting.


できた。あとは前回と同様にgrubをインストールする。

cappmac@opensolaris:‾# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c9d0s2
raw device must be a root slice (not s2)


また怒られた。
rootパーティションに設定しないとダメみたいだ。なのでパーティション0に設定した。

cappmac@opensolaris:‾# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c9d0s0
stage1 written to partition 0 sector 0 (abs 16065)
stage2 written to partition 0, 273 sectors starting at 50 (abs 16115)


今度はうまくいった。

リビルド進行中は進捗状況が示される。
300GB近くあるので結構かかる。
c0064553_1349459.png


いったん、resilveredされるとあとは通常と同様にミラー化されて運用できる。ためしに今回障害が発生しなかったHDDを抜いたが、特に問題は起きていない。
replaceされる前のパーティションが名称として残っているのが少し気持ち悪いが運用はできているのでとりあえず良しとした。
(修正)と思ったら消えていました。replace後はそのパーティションだけになるようです。
[PR]
by cappuccino_mac | 2011-08-15 12:25 | 雑感

なにかと便利な Solaris

最近、Solarisを結構気に入って使っています。
先日、自宅サーバのOSもUbuntuからSolarisに切り替えてしまいました。
メモも兼ねて、Solaris布教活動をしたいと思います。

実のところSolarisをいじるのはこれまでも何度かありました。会社でもいじっていますし。
Solarisがイケルと思ったのも会社でOpenSolaris 2008.11を入れたあたりから。それまではなんだかGUIのCDEがバタ臭いコマンドも使いづらく、ドライバも無いOSというイメージだったのですが、最近ではかなりLinuxの空気を取り入れて、これなら使っても良いかも?なんて思ってしまうほど改善されてきています。

ちなみに気に入った点はこんなところ
(Solarisの独断と偏見に満ちた利点)
1.サービスの導入・管理のしやすさ
2.安定性(性能面、GUI)
3.Windows/Mac OS Xとの親和性

1.について
Ubuntuとかも見た目には初心者に優しいんですが、インストール容量の割に意外と最初から入ってるサービスが浅いというか・・・あまり実用性が高くないんですよね。そのためサービス導入でつまづきやすいです。
その点、SSHやVNCが最初から入ってるっていうのはありがたいです。Sambaはさすがに最初から入っていたりしませんが、yumやaptに似たシステムで簡単にインストールできるので便利です。
パッケージ管理はLinuxやFreeBSDに劣っていた点を、見劣りしない程度までリカバリした感がありますが、サービス管理はLinuxのディストリやFreeBSDといった他のUNIX互換OSにない強みだと思います。
システム→システム管理→サービスの管理を実行すればなにがサービスとして稼働しているかが一目瞭然だし、チェックを入れて設定ファイルを少しいじればサービスを利用可能になる気軽さは非常にありがたい。まさにMac OS X感覚です。Fedoraとかにもserviceとかchkconfig等サービス管理のためのコマンドがありますが、GUIの被せ方が下手に思えます。

c0064553_20521748.jpg
サービスの管理

2.について
限られたCPU性能、限られたメモリ容量においてLinuxより動作が軽いように感じます。ベンチをとった訳じゃないから不用意なことはいえませんが、複数のサービスが動作し、大容量のアーカイブの展開しているような時にもGUIのレスポンスがキビキビとしている辺りはLinuxよりデキがいいのではと感じてしまう。
2008.11のころはGUIがしょっちゅう固まったりして、やはり後付けのおまけみたいなものかと思っていましたが、見違えるようです。
そもそも、先日Solaris移行に踏み切るきっかけはGUIの安定性にありました。Ubuntu 9.10(Karmic Koala)にてちょっとした設定変更をするにしても、次回起動時にログインできなくなる症状が現れました。Fail Safe Gnomeログインを選択すればログインはできますが、ちょっとバギー過ぎるのではというのが私の印象です。

3.について
この前のエントリで取り上げたように、Mac OS XのSambaはいろいろクセが強いようで、トラブルシューティングするだけでもかなりの労力をとられる。
Linux、FreeBSDがダメなら、いっそSolarisでも試してみようかとSamba接続をMacから試みたところ、問題1、2ともに解決してしまいました。
さらに今のOpenSolarisには使える目玉機能としてZFSとiSCSIがありますが、こちらもMac OS XのTimeMachineのバックアップ先として活用できれば利便性が上がります。正直ZFSは使い始めた頃勝手が分からず困ったのですが、徐々に使い方に慣れてきました。Sambaが簡単に導入できるということでもちろんWindowsとの親和性も高いです。

c0064553_20562881.jpg
シンボリックリンク先を参照している様子

残念なところ
良いところがあれば悪いところがあるもの。Solarisの欠点と思われるものを列挙してみました。
1.ext2/ext3/ext4/NTFSのサポートが無い。
2.VMwareが動かない。
3.Solaris独特のコマンドに慣れる必要がある。

1.について
広く使われているファイルシステムのサポートが無いのは痛いです。
草の根では、これらファイルシステムのサポートもされているようです。
試しましたが、動きませんでした。

2.について
VMwareの代わりにVirtualBoxがあるので何とかなりはしますが、VMwareのノウハウが活かせないので残念感が...

3.について
Solaris独自コマンドも多いですが、tarのように同じコマンドなのに違うオプション...みたいなのもあります。tarに限ってはgtarもあるので問題ないのですが。

設定メモ
[SSH]
最初から入っており、機能がオンになっている。特に何も考えることも無くログインできる。

[VNC]
最初から入っている。機能はオンになっていない。Vinoのようなログインしないと機能しないVNCではなく、inetdのサービスとしてXnvcを利用できる。
VNCは「サービスの管理」からxvnc-inetdを有効にする。また、/etc/X11/gdm/custom.confを有効にして、以下の内容を編集する。

c0064553_2058066.jpg
Xvnc有効化

[security]
DisallowTCP = false
AllowRoot = true
AllowRemoteRoot = true
[xdmcp]
Enable = true

これにより、VNCはサービスとして動作し、VNCクライアントからの接続時にログイン画面を出すようになる。
通常のログインと同じようにユーザ名・パスワードを入力すればデスクトップが表示できる。
#なお、xdmcpはMac OS X標準のVNCクライアント機能「画面共有」では利用できないようだ。
#私の場合はMacPortsで入れたvncviewerを使ってxdmcpによるログインを行った。

[Samba]
最初から入ってはいない。パッケージマネージャーを使ってSambaをインストールし、機能をオンにする必要がある。
インストール方法は「パッケージマネージャ」からsmbで検索し、SUNWsmbaをインストールする。この際、SWATも同時にインストールされる。

c0064553_20584787.jpg
Sambaインストール

「サービスの管理」でwinbinddとsmbdを有効にする。SWATもオンにしたい場合はswatにもチェックを入れる。
smb.confが無いので、/etc/sfw/smb.conf-exampleをリネームコピーして作成。ホームディレクトリ共有だけならばこれだけでOK。
smbpasswdの実行を忘れてハマったw。案外忘れやすいので注意。これを忘れるとログインができない。
ちなみにsmbpasswdは

% smbpasswd -a <ユーザ名>
で設定したいパスワードを2回打てばOK。

なお、SWATの設定にはroot権限が必要。
root権限はインストール直後の状態では有効ではない。sudoはないのでsuでrootログインして以下のコマンド。
% rolemod -K type=normal root

[ZFS]
デフォルトのフォーマットがZFS。意識せずとも使用していることがインストールしてから分かる。もっとも分かるためにはdf、zpool、zfsの各コマンドの知識が最低限必要。

c0064553_2183728.jpg
dfでzfsであることを確認している様子。

サーバをやる以上、バックアップ and RAIDは意識したいところ。ZFSは簡単にそれらを実現できる。
バックアップ
「タイムスライダ」を利用する。定期的にスナップショットを記録するため、最悪でも1日前の状態に戻すことができる。
RAID
RAID1相当を実現するために、ミラー構成にする。起動ディスクまるごとミラーリングのためには同じ容量のHDDを用意し、以下のコマンドを実行する。
・パーティションテーブルのSolaris化
ZFSにするために必須。
formatでディスクを指定。
% format
fdiskでパーティション情報を変更。
> fdisk
まずは既存のパーティション情報の削除
3→パーティション消去
1→消去したいパーティション番号選択
y→OK
次にSOLARIS2パーティション作成
1→パーティション作成
1→SOLARIS2パーティションを作成
100→作成パーティションのディスク占有率
y→OK
exitで実行される。

prtvtocでTOC情報を同期
% prtvtoc /dev/rdsk/c8d0s0 | fmthard -s - /dev/rdsk/c9d0s0
fmthard: New volume table of contents now in place.
#同一容量でないとうまくいかないっぽい。
既存HDDへのアタッチ
% zpool attach -f rpool /dev/dsk/c8d0s0 /dev/dsk/c9d0s0
-fオプションを抜かすと
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c9d0s0 overlaps with /dev/dsk/c9d0s2

といわれてうまくいかない。
成功すると以下のメッセージが出る。
Please be sure to invoke installgrub(1M) to make '/dev/dsk/c9d0s0' bootable.
いわれた通りにgrubをインストールする。grubをインストールしておくことでオリジナルのディスクが死んでも、ミラーHDDから起動できる。
% installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c9d0s0
dskで実行すると、device /dev/dsk/c9d0s2 is not a char special deviceといわれてうまく実行されなかった。
成功すると
stage1 written to partition 0 sector 0 (abs 16065)
stage2 written to partition 0, 271 sectors starting at 50 (abs 16115)

というメッセージが出る。
これで、zpool statusを実行すると、ミラー構成になっていることが分かる。
% zpool status
pool: rpool
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h4m, 6.47% done, 1h4m to go
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c8d0s0 ONLINE 0 0 0
c9d0s0 ONLINE 0 0 0 15.5G resilvered

errors: No known data errors

ここに表示されているresilveredという情報がミラーリングされたデータ量を示している。15.5GB分が6.47%の進捗であと1時間4分でミラーが完了するということを示している。
[PR]
by cappuccino_mac | 2010-01-02 07:39 | 設定覚え書き

さいきん

Open Solarisを趣味でいじってるけど,IRIX触りたくなった.

けれどもうIndyなんて落ちてもいないし,だれもIRISのUIって移植しねーんだろうか.
[PR]
by cappuccino_mac | 2008-07-26 21:37 | 雑感