Tag: Nfs

PXE GentooでNFS rootにtmpfs overlayを重ねる設計

PXE GentooでNFS rootにtmpfs overlayを重ねる設計

PXE boot の root filesystem を NFS に置くと、rootfs 更新や rollback は楽になる。一方で、各 node が rootfs に直接書き込むと、検証環境ほど状態が散らばりやすい。

そこで、NFS root を read-only lower として扱い、PXE client 側の tmpfs を upper/work にした overlayfs root にする。

この構成では、rootfs の差分は reboot で消える。永続化が必要なものだけを、用途別の volume や明示的な mount に逃がす。

本文中の 192.0.2.0/24 は説明用の documentation range である。OpenWrt 実機で NFS root / TFTP / DHCP を反映する場合は、外部 inventory の openwrt_lan_ipaddropenwrt_dhcp_ntp_serversopenwrt_gentoo_server_host を実値として明示し、documentation range が endpoint に残っていれば止める。

基本構成

flowchart TD
  A[PXE firmware<br/>DHCP + TFTP] --> B[Kernel + initramfs]
  B --> C[dracut<br/>network + nfs]
  C --> D[NFS root<br/>read-only lower]
  C --> E[tmpfs<br/>upper + work]
  D --> F[overlayfs merged root]
  E --> F
  F --> G[switch_root]
  G --> H[systemd]

root overlay の目標状態は次のような形になる。

Read more...

common

NFS キャッシュを確認

systemtapでファイルシステムキャッシュのヒット率を見る

ごみファイルができる

.nfs????に関して http://www.drk7.jp/MT/archives/001341.html

NFS の性能を最適化する

NFS の動作に特化した解析をより詳しく行うには、
nfsstat コマンドをつかってNFS トランザクション、クライアント/サーバの統計、ネットワークの統計などを見てください。
"-o net" オプションを用いると、トランザクションの総パケット数に対するパケット落ちの回数が表示されます。
UDP トランザクションで最も重要な統計は再送数で、これはパケット落ち、ソケットのバッファオーバーフロー、一般的なサーバの過負荷、タイムアウトなどによって生じます。
これは NFS の性能に非常に重要な影響を与えるので、注意深く見る必要があります。
現在の nfsstat はカウンタをゼロにリセットする -z オプションを実装しています。
ベンチマークを行う前に -z でリセットしてから計測するのが一般的です。

showmount -e でexports状況を確認する

http://linux.kororo.jp/cont/server/nfs.php

/etc/exports ファイルを編集しなおした場合、exportfs コマンドを使用して、設定の変更を反映させます。このコマンドを実行しない限り設定は反映されないので注意してください。
# exportfs -ra

■設定の確認
 設定を確認するには、showmount コマンドを使用します。
# showmount -e
Export list for ns1.kororo.jp:
/usr/local/src *.kororo.jp
/export/home 198.51.100.0/255.255.255.224
 -a  全てのマウントポイントを表示する
 -d  共有しているディレクトリ名のみ表示する
 -e  ディレクトリを共有可能な相手を表示する

oracleのSolarisのページ

share コマンド (Solaris のシステム管理 (ネットワークサービス)) - Sun Microsystems

Read more...

NFS exports subdir issue

nfs

/etc/exportsの疑問 サブディレクトリは自動的にexportsできないの?

k007:/etc/exportsにて

/usr2/kickstart/docs/rpm        198.51.100.0/255.255.254.0(ro,no_subtree_check,no_root_squash) 198.51.100.0/23(ro,no_subtree_check,no_root_squash)

と記載しているだけだと、サブディレクトリのマウントに失敗する(これはPXEブートじゃ無くても同様)

mount -t nfs k007:/usr2/kickstart/docs/rpm/u1204-32bit /media

みたいな感じでもマウントに失敗する。

/usr2/kickstart/docs/rpm/u1204-32bit    198.51.100.0/255.255.254.0(ro,no_subtree_check,no_root_squash) 198.51.100.0/23(ro,no_subtree_check,no_root_squash)

このようにサブディレクトリまで指定するとマウントに成功する。不思議、というか困るのはNFSサーバには下記の様に成功のログが複数行にわたって出力される点、

Apr 27 18:27:45 k007 mountd[21410]: authenticated mount request from 198.51.100.18:948 for /usr2/kickstart/docs/rpm/u1204-32bit (/usr2/kickstart/docs/rpm)
Apr 27 18:27:44 k007 mountd[21410]: request to export directory /usr2/kickstart/docs/rpm/u1204-32bit below nearest filesystem /usr2/kickstart/docs/rpm

ので問題の特定に時間がかかった。

Read more...

NFS root Ubuntu

Ubuntuのマスターを作成する

NFS-root用のマスターを作る(このマスターのファイルを後でまるごとコピーする)ため,ゲストOSをひとつ作成し、インストールを行う(終了しないこと、initrd.imgを作るため)

この時は最新のアップデートにはしなくて良いと思う。

インストールが終わったら終了しない。

chrootしてinitrdイメージを更新する

vi /etc/initramfs-tools/initramfs.conf

# 下記の2箇所を変更
MODULES=netboot
BOOT=nfs
DEVICE=eth0

DEVICE は initramfs に渡すデバイス名の指定。最近の Ubuntu/Debian は予測可能な IF 名(ensX など)になりやすいので、NFS ルートの IF 指定はカーネル引数 ip=…/BOOTIF を使う方が確実。

ルータをNFSroot化してみた(20090808-154428) « ふがっさむ・WP

initramfs-toolsを使ってinitrd.imgを作る

mkinitramfs -o /root/initrd.img

initramfsコマンドが無かったら下記で更新

update-initramfs -u

/boot配下のinitramfsファイルが更新される

vmlinuzをコピー

cp /boot/vmlinuz-* /root/vmlinuz

scpで他のサーバにコピーしておく。

再起動後、とりあえず使うものをインストール

nfs-common vim lv

マスターイメージからコピーを行う

イメージをマウントする ※ 仮想化ホストでは行わないこと

imgファイルをループバックデバイスとしてマウントする。 開いているループバックデバイスを表示

[root@fs04 qemu]# losetup -f
/dev/loop0

空いているループバックデバイスにimgファイルを紐づける

losetup /dev/loop0 /usr2/vm_image/KVM_Ubuntu_10_10_master.img

fdisk でパーテーションを確認

fdisk -l /dev/loop0

kpartxでデバイスマッパーに登録

kpartx -a /dev/loop0

デバイスマッパーの確認

Read more...