2012-10-29 Mon

ikachan on Solaris はてぶ

ということで,ikachan を動かすのに必要なパッケージを作った.
まだ #osoljp にはつっこんでいない.

あとは SMF マニフェストとスクリプトを書けば,
いい感じで使えるようになるはず.

YappoLogs: App::Ikachan - 様々なサーバのバッチ処理の結果等を IRC のチャンネルに通知するサーバ
http://blog.yappo.jp/yappo/archives/000760.html

2012-10-28 Sun

稼動中の zone のリソース割り当てを変更する はてぶ

ということで,prctl を使って稼動中の zone のリソースを変更する方法.

変更する前に現状の確認.

testserver という zone の確認をする場合は以下.

# prctl -i zone testserver
zone: 4: testserver
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
zone.max-lofi
        usage               0
        system          18.4E     max   deny                                 -
zone.max-swap
        usage           58.1MB
        system          16.0EB    max   deny                                 -
zone.max-locked-memory
        usage               0B
        system          16.0EB    max   deny                                 -
zone.max-shm-memory
        system          16.0EB    max   deny                                 -
zone.max-shm-ids
        system          16.8M     max   deny                                 -
zone.max-sem-ids
        system          16.8M     max   deny                                 -
zone.max-msg-ids
        system          16.8M     max   deny                                 -
zone.max-processes
        usage              26
        system          2.15G     max   deny                                 -
zone.max-lwps
        usage             124
        system          2.15G     max   deny                                 -
zone.cpu-cap
        usage               0
        privileged        100       -   deny                                 -
        system          4.29G     inf   deny                                 -
zone.cpu-shares
        usage               1
        privileged          1       -   none                                 -
        system          65.5K     max   none                                 -


zone.cpu-cap だけ表示したい場合は
"-n" オプションに zone.cpu-cap を渡す.

# prctl -n zone.cpu-cap -i zone testserver
zone: 4: testserver
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
zone.cpu-cap
        usage               0
        privileged        100       -   deny                                 -
        system          4.29G     inf   deny                                 -


この表示は zonecfg -z testserver info で表示される以下の部分に相当.

rctl:
        name: zone.cpu-cap
        value: (priv=privileged,limit=100,action=deny)


prctl の

	        privileged        100       -   deny                                 -


と zonecfg の

	        value: (priv=privileged,limit=100,action=deny)


が対応している.

今,100 に設定されている cpu-cap を 200 に変更してみる.

# prctl -r -t privileged -n zone.cpu-cap -v 200 -i zone testserver


これで以下のように cpu-cap が 200 に変更される.

# prctl -n zone.cpu-cap -i zone testserverzone: 4: testserver
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
zone.cpu-cap
        usage               0
        privileged        200       -   deny                                 -
        system          4.29G     inf   deny                                 -


稼動中の testserver の cpu-cap は変更できたが,
zonecfg の方は変更されないので,再起動後も cpu-cap を 200 にしたければ,
zonecfg で変更しておく必要がある.

2012-10-26 Fri

Solaris 11.1 はてぶ

Solaris 11.1 が出たので,いくつかメモ.

Taking Your First Steps with Oracle Solaris 11
http://www.oracle.com/technetwork/articles/servers-storage-admin/o11-112-s11-first-steps-524819.html

Updating Your System From Oracle Solaris 11 to Oracle Solaris 11.1
http://docs.oracle.com/cd/E26502_01/html/E28978/glpgv.html#gmgim

Issues When Updating to Oracle Solaris 11.1 - Oracle Solaris 11.1 Release Notes
http://docs.oracle.com/cd/E26502_01/html/E28978/glmqm.html#gmnby

2012-10-03 Wed

php pear のパッケージを作る はてぶ

Solaris 用に pear のパッケージを作るため,
pear のオプションを眺めていたら,
makerpm という rpm 用の spec ファイルを作ってくれるオプションがあった.

#jposug のパッケージは rpm と同様の spec ファイルを使うので,
これが使えれば便利ということで,試してみたところ,
makerpm は deprecated なようで,
PEAR_Command_Packaging をインストールして make-rpm-spec を使え
というようなことを言われてしまった.

ということで,PEAR_Command_Packaging をインストール

sudo /usr/php/5.2/bin/pear install channel://pear.php.net/PEAR_Command_Packaging-0.3.0


ダウンロード済みのソースがある場合は以下のように実行.

/usr/php/5.2/bin/pear make-rpm-spec ~/packages/SOURCES/Mail-1.2.0.tgz


PEAR::Mail-1.2.0.spec が書き出されるので,
これを適当に修正して specbuild にかければパッケージのできあがり.

2012-10-03 Wed

Solaris 11 でのキーボード設定 はてぶ

キーボードレイアウトは
svc:/system/keymap:default の
keymap/layout プロパティで設定されている.

設定を確認

$ svccfg -s svc:/system/keymap:default listprop keymap/layout
keymap/layout astring     US-English


日本語キーボードに変更

$ svccfg -s svc:/system/keymap:default setprop keymap/layout = Japanese
svccfg: Permission denied.
$ sudo svccfg -s svc:/system/keymap:default setprop keymap/layout = Japanese
$ sudo svcadm refresh keymap
$ sudo svcadm restart keymap
$ svccfg -s svc:/system/keymap:default listprop keymap/layout
    keymap/layout astring     Japanese


2012-10-03 Wed

Solaris 11 での /etc/resolv.conf 設定 はてぶ

Solaris 11 から /etc/resolv.conf を見ると
以下のように書かれている.

# _AUTOGENERATED_FROM_SMF_V1_
#
# WARNING: THIS FILE GENERATED FROM SMF DATA.
#   DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
# See resolv.conf(4) for details.


SMF のデータから生成されていると書かれていて,
それは以下のように確認できる.

svccfg -s svc:/network/dns/client listprop config


- config/search
- config/nameserver

の 2 つを setprop で設定すればよい.

nameserver を複数指定するには
以下のように括弧で囲んで渡す.

svccfg -s dns/client setprop \
    config/nameserver = '(192.168.1.1 192.168.1.2)'


nscfg を使うと,編集した /etc/resolv.conf をインポートすることもできる.

nscfg import svc:/network/dns/client:default


2012-10-03 Wed

Solaris 11 で nodename の設定 はてぶ

/etc/nodename がなくなり,以下のように
svc:/system/identity:node の property として設定.

sudo svccfg -s svc:/system/identity:node setprop config/nodename = nodename
sudo svcadm refresh svc:/system/identity:node
sudo svcadm restart svc:/system/identity:node


Referrer (Inside):
[2012-11-14-2] nodename を Puppet で設定する

2012-09-30 Sun

Puppet の Solaris 用パッケージ はてぶ

ここに .p5p のパッケージが置かれている.
http://downloads.puppetlabs.com/solaris/

2012-09-29 Sat

munin-async を Solaris 11 上で動かしたい 3 はてぶ

結局,以下のようなパッチでごまかすことにして,
#jposug にコミットした.

--- common/lib/Munin/Common/SyncDictFile.pm~    2012-09-01 00:22:50.000000000 +0900
+++ common/lib/Munin/Common/SyncDictFile.pm     2012-09-29 12:40:13.342258023 +0900
@@ -170,6 +170,7 @@

 sub _lock_write {
        my ($filename, $mode) = @_;
+       $mode = "w+" if $filename =~ /SPOOL-META/;
        $mode ||= "a+";

        use Fcntl qw(:flock);


次は munin-async の SMF マニフェスト作り.
munin-node のマニフェストは含まれているのに,
munin-async のマニフェストは含まれていないので.

その後,plugin ごとパッケージを分割して,
それぞれに Requires を設定すれば,
ちゃんとしたパッケージっぽくなる.

- munin-async を Solaris 11 上で動かしたい [2012-09-27-1]
- munin-async を Solaris 11 上で動かしたい 2 [2012-09-28-3]

Referrer (Inside):
[2013-08-17-1] Solaris 11 で Munin asyncd を使う

2012-09-28 Fri

perl が読み込むモジュールを確認する はてぶ

munin の apache 系 plugin がビルド環境のサーバでは動いて,
パッケージを持っていった環境では動かなかったので,
モジュールが足りないんだろうということで,
以下のように読み込まれるモジュールを確認してみた.

truss /usr/share/munin/plugins/apache_volume 2>&1 | \
egrep 'open.*\("/usr/perl5/' |cut -d " " -f 1 | \
sed -e 's/open.*(//' | sort -u


これで

"/usr/perl5/5.12/lib/AutoLoader.pm",
"/usr/perl5/5.12/lib/English.pm",
"/usr/perl5/5.12/lib/Exporter.pm",
"/usr/perl5/5.12/lib/Exporter/Heavy.pm",
"/usr/perl5/5.12/lib/File/Basename.pm",
"/usr/perl5/5.12/lib/SelectSaver.pm",
"/usr/perl5/5.12/lib/Symbol.pm",
"/usr/perl5/5.12/lib/Tie/Hash/NamedCapture.pm",
"/usr/perl5/5.12/lib/Time/Local.pm",
(snip)


のようにとれる.

"open.*" としているのは,"open" と "open64" があるため.

apache 系 plugin に足りなかったのは,
library/perl-5/net-http-512

2012-09-28 Fri

munin-async を Solaris 11 上で動かしたい 2 はてぶ

昨日 [2012-09-27-1] の続き.

以下のように print をいれて,どこのファイルでひっかかるのか確認

sub _lock_write {
    my ($filename, $mode) = @_;
    print "$filename: $mode\n";


これで実行すると,以下のように
/var/lib/munin/spool/SPOOL-META を "r" で開いたときに
flock($fh, LOCK_EX) が失敗している.

$ sudo -u munin /usr/share/munin/munin-asyncd -v
/var/lib/munin/spool/SPOOL-META: r
Cannot lock tied file '/var/lib/munin/spool/SPOOL-META' - Bad file number at /usr/perl5/vendor_perl/5.12/Munin/Common/SyncDictFile.pm line 182.


なので,以下のようにして,SPOOL-META を開くときの mode を
"w+" に変えてしまう.

sub _lock_write {
    my ($filename, $mode) = @_;
    $mode = "w+" if $filename =~ /SPOOL-META/;
    print "$filename: $mode\n";


すると,以下のように,flock でひっかからなくなる.

$ sudo -u munin /usr/share/munin/munin-asyncd -v
/var/lib/munin/spool/SPOOL-META: w+
/var/lib/munin/spool/SPOOL-META.tmp: w+
/var/lib/munin/spool/SPOOL-META: w+
/var/lib/munin/spool/SPOOL-META.tmp: w+
/var/lib/munin/spool/SPOOL-META: w+
/var/lib/munin/spool/SPOOL-META.tmp: w+
[21634][main] Reading config from localhost:4949
[21634][plugin:cpu] asking for config
[21634][plugin:cpu] asking for data
[21634][plugin:df] asking for config


場当り的だけど,これで動くので,
とりあえず,しばらくはこれで使ってみる.

ちなみに,SPOOL-META は以下のようなファイル.

$ cat /var/lib/munin/spool/SPOOL-META
lastruntime:1348803319


Referrer (Inside):
[2013-08-17-1] Solaris 11 で Munin asyncd を使う
[2012-09-29-1] munin-async を Solaris 11 上で動かしたい 3

2012-09-27 Thu

munin-async を Solaris 11 上で動かしたい はてぶ

#osoljp の contrib-spec-files に munin 2.0.6 をコミットしたし,
依存関係もある程度解決したので,そろそろ munin-async を試そうかと.

munin-async の使い方はここを参照.
http://munin.readthedocs.org/en/latest/node/async.html

とりあえず,munin-asyncd を実行してみる.

$ sudo -u munin /usr/share/munin/munin-asyncd -v
    Cannot lock tied file '/var/lib/munin/spool/SPOOL-META' - Bad file number at /usr/perl5/vendor_perl/5.12/Munin/Common/SyncDictFile.pm line 180.


と言われるので,SyncDictFile.pm を見てみる.

sub _lock_write {
        my ($filename, $mode) = @_;
        $mode ||= "a+";

        use Fcntl qw(:flock);
        use IO::File;

        my $fh = IO::File->new($filename, $mode)
                or die "Cannot open tied file '$filename' - $!";
        flock($fh, LOCK_EX) or die "Cannot lock tied file '$filename' - $!";
        return $fh;
}


となっていて,flock のところでこけている.

ググってみると以下のような話がみつかった

OSがSolarisの場合、flockシステムコールの仕様の違いによりpkwk_chown(): flock() failedがでることが分かりました。Solarisのflockでは、LOCK_EX(排他ロック)をするためには書き込み可能な状態でファイルをオープンする必要があります。これに対して、LinuxなどのOSでは読み出しオープンでもLOCK_EX可能です。fopen の 'r' を 'w+' に変更すると改善するのは、OSのflockがSolaris流の場合と考えられます。ただ、pkwk_chown は、書き込みできないファイルのオーナーを変更することにより、書き込み権限を得ることが本来の目的ですので、'w+' でオープンできない場合、目的を果たせなくなります。それから、PHPのposix拡張モジュールの有無も、挙動に影響します。posix拡張モジュールがあれば、ファイルのオーナーをapacheの実行ユーザに変更することで解決できますが、posix拡張モジュールが無い場合、apache実行ユーザIDの取得ができず、毎回chownしようとしますので、pkwk_chown(): flock() failedが出ます。どのように問題解決すべきか考えています(LOCK_EXできないので、ロックファイルを作って対応かな・・・)。目処が立ったら、dev:BugTrack2で改善案を提案します。 -- 三浦克介 2010-10-24 (日) 11:51:16

http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B13%2F260


ということなので,

        my ($filename, $mode) = @_;
        $mode ||= "a+";


で,$mode に "r" が入ることがあってこけてるっぽい.

とりあえず,以下のように LOCK_SH にしてみる.

       flock($fh, LOCK_SH) or die "Cannot lock tied file '$filename' - $!";


すると,以下のように実行できた.

$ sudo -u munin /usr/share/munin/munin-asyncd -v
[6812][main] Reading config from localhost:4949
[6812][plugin:cpu] asking for config
[6812][plugin:cpu] asking for data
(snip)


排他ロックを共有ロックにしてしまっているのでよろしくないのだけど,
どうすればいいんだろう?

Perl と Solaris に詳しい人いませんかね?

Referrer (Inside):
[2013-08-17-1] Solaris 11 で Munin asyncd を使う
[2012-09-29-1] munin-async を Solaris 11 上で動かしたい 3
[2012-09-28-3] munin-async を Solaris 11 上で動かしたい 2

2012-09-23 Sun

mod_xsendfile のパッケージを作った はてぶ

社長が mod_xsendfile 対応をしたというので,
Solaris 11 上でパッケージを作ってみた.

パッケージは作ったけど,動作は未確認.
#jposug に push してありますが,
動作未確認のため,trunk には merge していません.

認証した上で見せたいファイルなど,
document root 以下にファイルを置きたくない時に,
アプリケーションで read するよりは速いし,
CPU 負荷も少なくなるというものらしい.

Referrer (Inside):
[2012-10-03-6] mod_xsendfile を試す

2012-09-21 Fri

non-global zone での share はてぶ

http://docs.oracle.com/cd/E23824_01/html/821-1448/gayne.html#glixn

In previous Solaris releases, you could not create and publish NFS or SMB shares in a Oracle Solaris non-global zone. In this Solaris release, you can create and publish NFS shares by using the zfs set share command and the legacy share command with a non-global zone.

とあり,non-global zone では NFS のみ可.

non-global zone で cifs を使いたければ,
samba を利用.

2012-08-26 Sun

munin 2.0.4 のパッケージを作った はてぶ

munin 1 系のパッケージをベースに 2 系のパッケージを作成.
とりあえず,動くことは確認.

いろいろと汚なかったりするので,
そのあたりの調整をしておくべき.

munin 2 系のパッケージを作るにあたり,
以下の perl モジュールのパッケージも作成.
- Date::Manip
- Test::Intr

2012-06-24 Sun

GrowthForecast の Solararis 用パッケージ作った はてぶ

やったー GrowthForecast のページできたよー\(^o^)/ ということなので
Solaris 用のパッケージを作って jposug にコミットしておいた.

依存関係をほとんど書いていなかったり,
いろいろとあれだけど.

- GrowthForecast - Lightning fast Graphing / Visualization
- GrowthForecast に必要な perl のモジュールの IPS パッケージを作った [2012-06-17-1]

2012-06-17 Sun

GrowthForecast に必要な perl のモジュールの IPS パッケージを作った はてぶ

ということで,なにかと捗るらしい GrowthForecast を
Solaris 上で使うため,IPS パッケージを作りまくった.

jposug のリポジトリにブランチを切った形でコミット済み.
まだ defualt branch には merge してない.

cpanm で

perl cpanm -v -L extlib --installdeps .


とかしてもいいけど,パッケージにしておいた方が
ビルド環境を用意していないホストにも持っていきやすいし.

ただ,びみょうな点があって,
Solaris11 が提供する dbi は library/perl-5/database-512 で
バージョンは 1.58.
これだと,いくつかのモジュールで dbi が古いと言われてしまうので,
library/perl-5/dbi-512 というパッケージをつくり,
/usr/perl5/site_perl/5.12 以下にインストールしている
(library/perl-5/database-512 は /usr/perl5/vendor_perl/5.12 以下).

@INC が以下のようになっているので,
site_perl/5.12 が vendor_perl/5.12 より先に読み込まれるので,
一応,動くことは動く.

$ perl -e '(print join("\n",@INC));'
/usr/perl5/site_perl/5.12/i86pc-solaris-64int
/usr/perl5/site_perl/5.12
/usr/perl5/vendor_perl/5.12/i86pc-solaris-64int
/usr/perl5/vendor_perl/5.12
/usr/perl5/5.12/lib/i86pc-solaris-64int
/usr/perl5/5.12/lib


GrowthForecast 自体はパッケージにするか未定.
Puppet で github から clone するのがいいのかな?とか考え中.
とりあえず,SMF マニフェストは書いてあげないとダメだけど.

- GrowthForecastというグラフ表示ツールで捗る話 - blog.nomadscafe.jp
  http://blog.nomadscafe.jp/2011/12/growthforecast.html

Referrer (Inside):
[2012-06-24-1] GrowthForecast の Solararis 用パッケージ作った

2012-03-16 Fri

RHEL と Oracle Solaris 11 の比較表 はてぶ

いろいろな機能について,
それを実現するコマンドの比較表(?).

- Red Hat Enterprise Linux to Solaris 11 Evaluation
  http://www.oracle.com/technetwork/server-storage/solaris11/overview/redhat-mapping-guide-1555721.html

2012-03-16 Fri

ilb (Integrated Load Balancer) はてぶ

Oracle Solaris 11 には ilb というロードバランサがあって,
一通りのことはできるよう.

これに vrrpadm で VRRP (Virtual Router Redundancy Protocol) を設定すれば,
冗長構成のロードバランサができそうなので,あとで試す

- Oracle Blogs 日本語のまとめ: [Solaris] Integrated Load Balancer
  http://orablogs-jp.blogspot.com/2011/07/integrated-load-balancer.html
- network load balancing with Solaris » Antony Pavlenko's blog
  http://pavlenko.net/antony/2012/03/12/network-load-balancing-with-solaris/
- http://docs.oracle.com/cd/E26924_01/html/E25872/gijjm.html

2011-05-12 Thu

Trusted Solaris はてぶ

/lib/svc/share/smf_include.sh の smf_is_system_labeled() で
/bin/plabel というコマンドが使われていて,
調べてたら辿りついたのでメモ.

- http://www.ipa.go.jp/security/fy14/contents/trusted-os/1-trustedsolaris.pdf
- Trusted Solaris 管理の概要
  http://download.oracle.com/docs/cd/E19109-01/tsolaris7/805-8092/index.html
- Trusted Solaris ユーザーズガイド
  http://download.oracle.com/docs/cd/E19109-01/tsolaris7/805-8088/index.html
- [ThinkIT] 第4回:セキュアOS紹介(2) 〜 Trusted SolarisとPitBull (1/4)
  http://thinkit.co.jp/free/compare/7/4/1.html

ChangeLog 最新ページ / カテゴリ最新ページ / 前ページ 1 2 3 4 5 6 / page 5 (6)