FreeBSD > Install FreeBSD 10.2-Release on pure ZFS

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Top > FreeBSD > Install FreeBSD 10.2-Release on pure ZFS

Install FreeBSD 10.2 Release on pure ZFS(amd64+16gb)



サーバの構成をサーバー構成 20150922へ変更後、改めてインストールした時のまとめです

Install FreeBSD 8.2-RC3 on pure ZFSを参考にして、BSDInstallを使用してインストールします



インストール準備


The FreeBSD Projectから必要なイメージをダウンロードします
celeron N3150 なのでamd64を選択

USBメモリインストール

USBメモリからインストールするので、FreeBSD-10.2-RELEASE-amd64-memstick.imgをダウンロードし"dd"や"DDforWindows"を使って書き込みます

インストール


USBメモリから起動すると通常のインストール画面になりますので環境に合わせて設定します

  • Keymap Selection
    "Japanese 106" を選択
    
  • Set Hostname
    "hogehoge.com" など任意のホスト名を入力
    
  • Distribution Select
    "lib32" と "src"を選択
    
  • Mirror Selection
    "IPv6 Japan" を選択
    
  • Partitioning
    "Shell" を選択
    

ディスク・gptブート領域 [gpart]

  • インストールするディスクを検索します
    # dmesg | grep da[0-9]
    ...
    da0: <ADATA USB Flash Drive 1100> Removable Direct Access SPC-4 SCSI device
    ...
    ...
    da1: <ADATA USB Flash Drive 1100> Removable Direct Access SPC-4 SCSI device
    ...
    

    インストール先はUSB FlashのADATA UV150 32Gですので、da0da1になります

  • パーティションテーブルを初期化します
    # dd if=/dev/zero of=/dev/da0 count=1 bs=1m
    # dd if=/dev/zero of=/dev/da1 count=1 bs=1m
    
  • gptパーティションを作成します
    # gpart create -s gpt /dev/da0
    # gpart create -s gpt /dev/da1
    
  • ブート用パーティションを作成します
    # gpart add -a 4k -s 512k -t freebsd-boot da0
    # gpart add -a 4k -s 512k -t freebsd-boot da1
    
  • ZFSパーティションを作成します
    確保容量を確認します
    # gpart show da0
    =>      34  60620733  da0  GPT  (29G)
            34         6       - free -  (3.0K)
            40      1024    1  freebsd-boot  (512K)
          1064  60620767       - free -  (29G)
    
  • ZFSパーティション領域は 28G で作成します
    # gpart add -s 28g -t freebsd-zfs -l usb0 da0
    # gpart add -s 28g -t freebsd-zfs -l usb1 da1
    
  • Protected MBR と gpt用ZFSブートローダを書き込みます
    # gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 da0
    # gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 da1
    
  • gptパーティションを確認します
    # gpart show da0
    =>      34  60620733  da0  GPT  (29G)
            34         6       - free -  (3.0K)
            40      1024    1  freebsd-boot  (512K)
          1064  58720256    2  freebsd-zfs  (28G)
      58721320   1899447       - free -  (927M)
    # gpart show da1
    =>      34  60620733  da0  GPT  (29G)
            34         6       - free -  (3.0K)
            40      1024    1  freebsd-boot  (512K)
          1064  58720256    2  freebsd-zfs  (28G)
      58721320   1899447       - free -  (927M)
    

ディスク・ZFSプール [zpool]

  • 起動時に参照するzpool.cacheの為、/boot/zfsを書き込めるようにします
    # mount -t tmpfs tmpfs /boot/zfs
    
  • ZFSストレージプール(mirror)を作成します
    # zpool create tank0 mirror gpt/usb0 gpt/usb1
    

ファイルシステム構成 [zfs]

  • チェックサムの設定
    "fletcher4"にします
    # zfs set checksum=fletcher4 tank0
    
  • atime(access time)の設定
    # zfs set atime=off tank0
    
  • mountpointの設定
    ZFSの自動マウントは便利ですが、融通が利かないので無効化します
    # zfs set mountpoint=legacy tank0
    
  • ファイルシステム生成
    起動後、umountできないボリュームは"tank0/system"上に生成し、それ以外を"tank0"直下に生成します
    # zfs create tank0/system
    # zfs create tank0/system/sysroot
    # zfs create tank0/system/usr
    # zfs create tank0/system/var
    # zfs create tank0/system/var/crash
    # zfs create tank0/system/var/db
    # zfs create tank0/system/var/db/pkg
    # zfs create tank0/system/var/empty
    # zfs create tank0/system/var/log
    # zfs create tank0/system/var/mail
    # zfs create tank0/system/var/run
    # zfs create tank0/system/var/tmp
    # zfs create tank0/src
    # zfs create tank0/ports
    # zfs create tank0/home
    # zfs create tank0/jail
    
  • 圧縮設定
    圧縮率の上がりやすいボリュームに圧縮設定をします
    gzip-9を指定します
    # zfs set compression=gzip-9 tank0/system/var/crash
    # zfs set compression=gzip-9 tank0/system/var/db/pkg
    # zfs set compression=gzip-9 tank0/system/var/log
    # zfs set compression=gzip-9 tank0/system/var/mail
    # zfs set compression=gzip-9 tank0/system/var/tmp
    # zfs set compression=gzip-9 tank0/src
    # zfs set compression=gzip-9 tank0/ports
    # zfs set compression=gzip-9 tank0/jail
    
  • プロセス実行制御設定
    ボリューム内でプロセスを実行できないように設定します
    # zfs set exec=off tank0/system/var/crash
    # zfs set exec=off tank0/system/var/db
    # zfs set exec=off tank0/system/var/empty
    # zfs set exec=off tank0/system/var/log
    # zfs set exec=off tank0/system/var/mail
    
  • "setuid"利用設定
    ボリューム内でのsetuidビットを無視するよう設定します
    # zfs set setuid=off tank0/system/var/crash
    # zfs set setuid=off tank0/system/var/db
    # zfs set setuid=off tank0/system/var/db/pkg
    # zfs set setuid=off tank0/system/var/empty
    # zfs set setuid=off tank0/system/var/log
    # zfs set setuid=off tank0/system/var/mail
    # zfs set setuid=off tank0/system/var/tmp
    # zfs set setuid=off tank0/src
    # zfs set setuid=off tank0/ports
    
  • dedup設定
    # zfs set dedup=on tank0/jail
    
  • zfsブートでのルート(/root)を設定します
    # zpool set bootfs=tank0/system/sysroot tank0
    

インストール用ファイルシステムの構築とfstabの作成

  • インストールする為のファイルシステムを構築します
    "Shell"を選択したときに書かれていたメッセージ通り"/mnt"をインストール用ファイルシステムのルートとします
    # mount -t zfs tank0/system/sysroot /mnt
    # mkdir /mnt/tmp
    # chmod 1777 /mnt/tmp
    # mkdir /mnt/usr
    # mount -t zfs tank0/system/usr /mnt/usr
    # mkdir /mnt/usr/home
    # mount -t zfs tank0/home /mnt/usr/home
    # ln -s /usr/home /mnt/home
    # mkdir /mnt/usr/ports
    # mkdir /mnt/usr/src
    # mount -t zfs tank0/src /mnt/usr/src
    # mkdir /mnt/var
    # mount -t zfs tank0/system/var /mnt/var
    # mkdir /mnt/var/crash
    # mount -t zfs tank0/system/var/crash /mnt/var/crash
    # mkdir /mnt/var/db
    # mount -t zfs tank0/system/var/db /mnt/var/db
    # mkdir /mnt/var/db/pkg
    # mount -t zfs tank0/system/var/db/pkg /mnt/var/db/pkg
    # mkdir /mnt/var/empty
    # mount -t zfs tank0/system/var/empty /mnt/var/empty
    # mkdir /mnt/var/log
    # mount -t zfs tank0/system/var/log /mnt/var/log
    # mkdir /mnt/var/mail
    # mount -t zfs tank0/system/var/mail /mnt/var/mail
    # mkdir /mnt/var/run
    # mount -t zfs tank0/system/var/run /mnt/var/run
    # mkdir /mnt/var/tmp
    # mount -t zfs tank0/system/var/tmp /mnt/var/tmp
    # chmod 1777 /mnt/var/tmp
    
  • "Shell"を選択したときに書かれていたメッセージ通り"/tmp/bsdinstall_etc/fstab"を作成します
    # Device		Mountpoint	FStype	Options				Dump	Pass #
    tank0/system/usr	/usr		zfs	rw				0	0
    tank0/system/var	/var		zfs	rw				0	0
    tank0/system/var/crash	/var/crash	zfs	rw				0	0
    tank0/system/var/db	/var/db		zfs	rw				0	0
    tank0/system/var/db/pkg	/var/db/pkg	zfs	rw				0	0
    tank0/system/var/empty	/var/empty	zfs	ro				0	0
    tank0/system/var/log	/var/log	zfs	rw				0	0
    tank0/system/var/mail	/var/mail	zfs	rw				0	0
    tank0/system/var/run	/var/run	zfs	rw				0	0
    tank0/system/var/tmp	/var/tmp	zfs	rw				0	0
    tank0/src		/usr/src	zfs	rw				0	0
    tmpfs			/tmp		tmpfs	rw,mode=1777,size=4294967296	0	0
    

FreeBSDをインストール

  • Shell 環境からインストーラに戻ります
    # exit
    
  • インストールの最終確認
    設定変更するのであれば "Back" を選択します
    インストール開始しますので "Commit"を選択します

FreeBSD各種設定

この後、インストーラ上で設定を行います(下記以外のものもありますが適宜設定します)

  • ネットワークインターフェイスの設定
    "re0" を選択
    IPv4:"DHCP" を選択
    IPv6:"No" を選択
    
  • タイムゾーンの設定
    "Asia" を選択
    "Japan" を選択
    
  • サービスの設定
    "sshd" と "powerd" を有効にします
    

後処理

インストーラ終了確認時に"Live CD"を選択します

  • /var/emptyをreadonlyにします
    # zfs set readonly=on tank0/system/var/empty
    
  • インストール先に"chroot"します
    # chroot /mnt
    
  • /etc/rc.confを設定します
    "zfs"を追加します
    echo 'zfs_enable="YES"' >> /etc/rc.conf
    
  • /boot/loader.conf での zfs設定をします
    echo 'zfs_load="YES" >> /boot/loader.conf
    echo 'vfs.root.mountfrom="zfs:tank0/system/sysroot"' >> /boot/loader.conf
    echo 'vm.kmem_size="8192M"' >> /boot/loader.conf
    echo 'vm.kmem_size_max="8192M"' >> /boot/loader.conf
    echo 'vfs.zfs.arc_min="1024M"' >> /boot/loader.conf
    echo 'vfs.zfs.arc_max="4096M"' >> /boot/loader.conf
    echo 'vfs.zfs.vdev.cache.size="1024M"' >> /boot/loader.conf
    echo 'vfs.zfs.write_limit_override=1073741824' >> /boot/loader.conf
    echo 'kern.maxvnodes=400000' >> /boot/loader.conf
    
  • /boot/loader.conf USBデバイス起動設定
    USBデバイスからzfsで起動した場合、下記の設定がないとリブート・電源オフができません
    echo 'hw.usb.no_shutdown_wait=1' >> /boot/loader.conf
    
  • aliases を再作成
    # cd /etc/mail
    # make aliases
    
  • chroot環境から元の環境に戻ります
    # exit
    
  • ZFS の情報をブートローダ用にコピーします
    /boot/zfsを作成していないとコピーできない為、その場合は改めて作成します
    再作成
    # mkdir /boot/zfs; zfs export tank0; zfs import tank0
    コピー
    # cp /boot/zfs/zpool.cache /mnt/boot/zfs/zpool.cache
    
  • LiveCD 環境からインストーラに戻ります
    # exit
    
  • インストーラを終了し再起動します

再起動後の処理

  • シングルユーザーでログインし、/usr/homeへZFS自動マウントを設定します
    # zfs set mountpoint=/usr/home tank0/home
    

資料


アーカイブ

関連ページ


名前:
コメント: