MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

美田 晃伸
みた あきのぶ

コアテクノロジー部所属。

Asianuxの開発で北京に来ています。

kernelパッケージのメンテナンスをしています。

ミラクル関連リンク

採用情報

サイト検索

最近のコメント

2008年1月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

« 2006年7月 | メイン | 2006年10月 »

NFS v4 の SSH トンネル

ファイヤーウォールやプライベートネットワークのなかのマシンを NFS マウントしたいときもあると思います。SSH ポートフォワーディングができて NFS v4 が利用できるなら、以下のように三つのことだけやればできると思います。想定しているネットワークは下の方の図を参照してください。

1. insecure エキスポートオプション

NFS v4 サーバーでファイルシステムを insecure オプションをつけてエキスポートします。

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
/opt    *(rw,fsid=0,insecure)

2. SSH ポートフォワーディング

NFS サーバのポート番号 2049 と NFS クライアントのローカルの適当なポート番号 (例えば 12049) を SSH サーバ経由でポートフォワーディングします。

root@nfsv4client # ssh -f -N -C mita@sshd.example.com -L 12049:nfs4d.example.com:2049

3. port= マウントオプション

ローカルホストのポートフォワーディングしたポート (ここでは 12049) に対して port= マウントオプションを指定してマウントします。

root@nfsv4client # mount -t nfs4 -o port=12049 localhost:/ /mnt/nfs

また /etc/fstab に以下のようなエントリを追加しておいてもいいと思います。

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
...
localhost:/     /mnt/nfs        nfs4    noauto,port=12049       1 0

簡単にするため NFS v4 の基本的な設定については省略してしまいましたが Projects: NFS Version 4 Open Source Reference Implementation: などが参考になると思います。

Nfsv4tunnel_1

メモリが一部分壊れたときのしのぎかた

256MB のメモリをはずしてもやはりへんな動作をすることがあったので、もう一度 memtest86+ を実行してみたところ、512MB のメモリのほうも一箇所壊れていました。

Tst Pass  Failing Address       Good      Bad    Err-Bits  Count Chan
--- ---- --------------------- -------- -------- --------- ----- ----
  4   0  00016caf4f0 - 364.9MB 5611fbfd 5611fb7d 000000080   431

一時間ほど流して 364.9MB の辺りの一箇所で 431 回もエラーを検出していました。このまま使いつづけるとファイルシステムまで壊してしまう恐れがあるので、メモリを取り換えるまで起動するのはよくないのですが、つぎのようなブートオプションを指定すれば、しばらくしのぐことができるかもしれません。

1. mem=360M

mem= ブートオプションを与えてメモリエラーのある箇所を使わないようにします。ただし、 360MB 以上のアドレスは全部つかえないのはもったいないかもしれません。また、もしメモリエラーがもっと低位のアドレスに起こっていたら、もっと少ないメモリしか使えません。

2. crashkernel=10M@360M

CONFIG_KEXEC を有効にしてカーネルをビルドすると crashkernel= ブートオプションが使えます。本来はクラッシュがおこったときに起動するカーネルを配置するアドレスを指定するためのものなのですが、このようにして 360MB-370MB の部分を予約して使われないようにします。

3. memmap=exactmap memmap=359M@1M memmap=141M@370M

memmap ブートオプションで利用するメモリマップを明示的に指定して 360MB-370MB を使わないようにします。ちょっとうまく説明できないので説明を省略しますが、 grub に次のようなオプションを追加しておかないと initrd の読み込みに失敗しました。

uppermem        500000

メモリが壊れる

最近、北京では夕方から夜にかけて大雨になるという日が続くというへんな天気になっています。それと関係あるのかどうか分かりませんが、アパートのオートロックが壊れたり、洗面所の排水口が壊れたり、いろいろものが壊れていたのですが、自分のノートパソコンのメモリも壊れてしまいました。

いつも起動していたカーネルなのに、いろいろなプログラムが起動しなくなって、しばらくするとフリーズしました。とりあえず必要なデータのバックアップだけしようと再度起動しようとしても起動の途中のランダムなタイミングでパニックするようになりました。 そのうち起動時の BIOS のスプラッシュ画面すら出てこなくなってしまいました。

何十回に一回か起動することがあるのでそのタイミングで memtest86+ を実行したらいっぱいエラーがでてしまいました。
エラーのパターンを見ると、 single bit flip detector. に書かれているように 1bit だけ間違っているというものが多かったです。

とりあえず、このノートパソコンには 256MB と 512MB のメモリモジュールがついていたので 256MB の方をはずしたところ、うまく起動するようになりました。

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.