NFS

ZFSで作成したディレクトリをNFSで別のホストに公開する

/etc/exports

/zpool0    -network 127.0.0.1 -maproot=root
/zpool0    -network 192.168.1 -mask 255.255.255.0 -maproot=root

を記述。

  • maproot=rootという記述はアクセスしてくるホストのrootにroot権限を渡してしまうのでセキュリティはゼロに近い。(外につながない自分ひとり用の環境だから自由度優先。)

あとは
/etc/rc.conf

mountd_enable="YES"             # Run mountd (or NO).
nfs_server_enable="YES"         # This host is an NFS server (or NO).
nfs_reserved_port_only="YES"    # Provide NFS only on secure port (or NO).
rpc_lockd_enable="YES"          # Run NFS rpc.lockd needed for client/server.
rpc_statd_enable="YES"          # Run NFS rpc.statd needed for client/server.
rpcbind_enable="YES"            # Run the portmapper service (YES/NO).

と書いて、リブートしてみる。

ZFS

http://www.seichan.org/wiki/index.php?FreeBSD-ZFS
http://docs.sun.com/app/docs/doc/819-6260/setup-1?a=view
などを参考にしながら。

古いマシンにFreeBSD8.0をインストールし、WesternDigitalの1TBのSATA HDDを2台追加。

dmesg
すると

ad4: 953869MB  at ata2-master SATA150
ad6: 953869MB  at ata3-master SATA150

と、無事に認識しているようだ。

起動。

bsdfs# /etc/rc.d/zfs start
bsdfs# ps aux | grep zfs
root    1027  0.0  0.0     0    16  ??  DL    2:09PM   0:00.00 [zfskern]
bsdfs# kldstat
Id Refs Address    Size     Name
 1    9 0xc0400000 b6dfe0   kernel
 2    1 0xc4827000 123000   zfs.ko
 3    1 0xc494a000 3000     opensolaris.ko

当然まだ空っぽ。

bsdfs# zpool status
no pools available

2台追加したのはRAID1にするため。ZFSではmirrorにより作成できる。

bsdfs# zpool create zpool0 mirror ad4 ad6
bsdfs# zpool status
  pool: zpool0
 state: ONLINE
 scrub: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	zpool0      ONLINE       0     0     0
	  mirror    ONLINE       0     0     0
	    ad4     ONLINE       0     0     0
	    ad6     ONLINE       0     0     0

errors: No known data errors

たったこれだけで、もうファイルシステムとして使えるようになっている。

bsdfs# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
zpool0 on /zpool0 (zfs, local)
bsdfs# ls -l /zpool0
total 0
bsdfs# ls -l /
total 58
(略)
drwxr-xr-x   2 root  wheel        2 Dec 15 15:23 zpool0
bsdfs# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    989M    174M    736M    19%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e    1.9G     12K    1.8G     0%    /tmp
/dev/ad0s1f     66G    1.3G     60G     2%    /usr
/dev/ad0s1d    1.9G     77M    1.7G     4%    /var
zpool0         916G      0B    916G     0%    /zpool0
bsdfs# touch /zpool0/test.file
bsdfs# ls -l /zpool0/
total 1
  • rw-r--r-- 1 root wheel 0 Dec 15 15:53 test.file

すごい。

ポート番号

[postgresql]ポート番号のつかいかた

恥ずかしながら知らなかったのでメモ。
pgsqlの MLを読んでいたらpostgresqlが動かないというポストがあって、結局他のソフトがポート5432を先に使用していたせいだという話になった。そのなかで、

> バックアップソフトとして、"BrightStor ARCserve Backup" を使用して
> いますが、このプログラムがポート5432 を割り当てていました。
> PostgreSQL側のポートを変更することになりますが、
> 他とは重複の心配のない番号にしたいと考えています。
> 適当に決めてもよいが、何か良い決め方があるでしょうか?

ポート番号については、三種類に大別できます。

まず、0 〜 1023 は WELL KNOWN PORT NUMBERS と呼ばれ、IANA によって
管理され用途が決まっています。

次に、1024 〜 49151 は REGISTERD PORT NUMBERS と呼ばれ、IANA によって
管理されていませんが、IANA が登録を受け付け、公開しています。

そして、49152 〜 65535 は DYNAMIC AND/OR PRIVATE PORTS と呼ばれ
ユーザが自由に使用できるポート番号となっています。

いずれも強制力はありませんが、REGISTERD PORT NUMBERS は公開されていて、
5432 は PostgreSQL 用だとなっているはずです。

したがって、そのソフトウェアが 5432 を使うのは、本来「おかしい」と
思うんですけどね…

先の指針に従えば、PostgreSQL 側のポート番号を変更するのであれば、
49152 以降が適当であろうということになります。

覚えておこう。

画面のサイズとxorg.conf

9.10にアップしてから、起動時に画面のサイズ(解像度)が小さく640x480ぐらいになってしまっていた。
9.04のころもよくあったのだが、その場でCtrl-Alt-BSでXを再起動すれば自分の望む1280x1024になってくれていたので、面倒と思いながらも原因追及や解決はさらに面倒に思えて放っておいた。
しかし、9.10になってCtrl-Alt-BSでXを再起動するための仕組みが変わったらしく(ユーザごとのキーボード操作のオプションになったみたい)、ログインしないと有効にならない。
なので、今まで同様のやりかたでは、大きい解像度にするために一度小さい解像度のままログインしてXを再起動してなくてはいけなくなった。さすがにそれは面倒過ぎる。
いったい、起動時だけそうなって、Xだけ再起動すれば大きくなるとはなにごとか。Ubuntuって起動時になにやってるのかよくわからない。
googleで適当に「ubuntu 起動時 X window サイズ 画面 設定 自動」というキーワードで検索してみたらさすがに適当過ぎるのかめぼしい情報にいきつかない。
もうちょっとしぼるべく、
/var/log/Xorg.0.log
にあった
> (II) VESA(0): Not using built-in mode "1280x1024" (hsync out of range)
という行で検索してみると一発でほしい情報にいきついた。
http://superuser.com/questions/59989/setting-vesa-display-mode-800x600-in-ubuntu-9-04
というところで、vesaで高解像はどうやって出せばよいの?と聞いていて、その答えで
xorg.conf

Section "Monitor"
        Identifier      "Configured Monitor"
        HorizSync       28-73
EndSection

と追加すればよいよとある。
やってみたらうまくいった。それまではHorizSyncを指定していなかったのだ。
どうもUbuntuは起動時に接続されたディスプレイの設定を読み取ってHorizSyncなどを決めるのだが、それが読み取れないと安全側に倒して?小さい値にしてしまい、結果として小さい解像度の表示しかできなくなるらしい。
私のディスプレイは古いのか、KVM経由なせいか、読み取りに失敗しているみたい。
で、xorg.confにそれを指定してあげれば大きい値で大丈夫ということで望みの解像度になってくれるらしい。
「みたい、らしい」、と実に不精な解決(というか解決になってない)だが、ま、動けばいいやというのがUbuntuを使ってる理由なのでしかたない。

Xが綺麗に起動するようになったせいか、マウスの動作がおかしかったのも改善された。
これは、flashなど一部のアプリでマウスがきかなくなるという不可解なものだった。
原因等は不明。ネットで見ると似たような症状の人はいるみたいだが、原因と解決方法の記述はみつからなかった。

今のところ、「Xorg.0.logを見てWWやEEを探し、ともかくそれを潰してみよ」、というのが解決への道か。

ubuntu 9.10

[linux][ubuntu]9.10にアップグレード
したら、画面が真っ黒でアクセスできなくなってしまった。とりあえず再起動し、grubでrecovery-modeで立ち上げ、rootコンソールにはいる。
OSは起動しているが、XWindowが動いていないことがわかった。
コンソールでstartxコマンドを打つと
(EE) Failed to load module "xgi" (module does not exist, 0)
というエラーがでる。
このマシンのVGAバイスはSiSのもので、9.04まではそれを認識したXにより、vesaドライバが選択され、使えていた。
9.10にしたら、Xがxgiを要求するようになったが、xgiドライバはこのマシンにはないので見つからず、エラーとして終了してしまう。
aptitude search で探してもxgiドライバのパッケージはなさそう。XGIのサイトからソースを落としてインストールするのが本来の解決策かもしれないが、手抜きでvesaドライバを指定してXに使わせることにした。
/etc/X11/xorg.conf

Section "Device"
Identifier "mydevice"
Driver "vesa"
BusId "PCI:17:3:0"
EndSection

を追加したらうまくいった。
PCIバスのアドレスは/var/log/Xorg.0.logに載っていた。