ZFSでのFreeBSD 8.2-RELEASEの無人インストール

私たちは皆、時々それが非常にまれで、ほとんど決してないこと知っていますが、FreeBSDサーバーの予定外のリセットや停電が原因でfsckを手動で実行するという厳しい要件でダウンロードが停止する状況が発生します。 サーバーが退屈している、管理者が長い間彼を訪問していない、たぶん満月があるかもしれませんが、この現象は自然に発生します。 ZFSに移行する時が来たと思います-ベータテスト段階が長い時間経過していること、ディスクスペースが無駄にならないこと、そして... ZFSではfsckユーティリティがファイルシステムの整合性をチェックする必要がないことを人々は推奨します(!) マナ、ウィキ、キツネを学んだ後、私はいくつかの場所で粉砕し、櫛で塗り、ラッカーを塗って大衆に行く必要があるという結論に達しました。 実際、標準のsysinstallと比較して、プロセスはやや複雑ですが、これまでよりも高速です-2分で、ZFSにルートパーティションを備えたサーバーの準備が整いました。



はい、もちろん、実行することをお勧めする一連のコマンドをすべて手で実行することはありません。また、sysinstallを台無しにしませんが、 Fixitモードから起動される無人インストールスクリプトを作成します。 これを行うには、DVDまたはUSBstickインストールオプション、スクリプトが保存されているサーバー(ssh経由でアクセス可能)が必要です。

インストールプロセスは次のようになります。ブートし、 Fixitモードを選択します-CD / DVD 、ネットワークカードのIPを切断し、スクリプトを実行します。

Fixit# ifconfig em0 192.168.1.100/24

Fixit ssh user@192.168.1.1 'cat / opt / script / zfs-init' | sh



次に、スクリプトの内容を見てみましょう。次のようになります。

1.ディスクのパーティションを作成します(GPT-ブート、スワップ0、ディスク0)

2. ZFSプールを作成します(/ルート、/ tmp、/ usr、/ var、/ opt)-/ルートパーティションは個別に作成され、サイズも制限されます

3.最小限の設定でZFSにフラスコを投げて開始します



シェル上のスクリプト、特定のシーケンスのコマンドのリスト。 スクリプトの冒頭で、変数dev(ディスク)、iface(ネットワークカード)、tank(ZFSプールの名前)、ホスト名(ホスト名)、tz(タイムゾーン)を変更します。 ここに彼は:

  1. #!/ bin / sh
  2. #バール
  3. dev = da0
  4. タンク =タンク
  5. iface = em0
  6. ホスト名 = core.domain.com
  7. tz = "ヨーロッパ/キエフ"
  8. #gpart
  9. gpart create -s GPT $ dev
  10. gpart add -s 64K -t freebsd-boot $ dev
  11. gpart add -s 2G -t freebsd-swap -l swap0 $ dev
  12. gpart add -t freebsd-zfs -l disk0 $ dev
  13. gpart bootcode -b / mnt2 / boot / pmbr -p / mnt2 / boot / gptzfsboot -i 1 $ dev
  14. sysctl kern.geom.debugflags = 0x10
  15. #ZFSをインストール
  16. kldload / mnt2 /ブート/カーネル/ opensolaris.ko
  17. kldload / mnt2 / boot / kernel / zfs.ko
  18. mkdir / boot / zfs
  19. #ZFSプールを作成する
  20. zpool create -f $ tank / dev / gpt / disk0
  21. zfs set mountpoint = none $ tank
  22. zfs set atime = off $ tank
  23. zfs set checksum = fletcher4 $ tank
  24. zfs create -o compression = off -o exec = on $ tank / root
  25. zfs set mountpoint = / $ tank $ tank / root
  26. zpool set bootfs = $ tank / root $ tank
  27. zfs create -o compression = on -o exec = on -o setuid = off $ tank / tmp
  28. zfs set mountpoint = / $ tank / tmp $ tank / tmp
  29. zfs create $ tank / usr
  30. zfs set mountpoint = / $ tank / usr $ tank / usr
  31. zfs create $ tank / var
  32. zfs set mountpoint = / $ tank / var $ tank / var
  33. zfs create -o compression = off -o setuid = off $ tank / opt
  34. zfs set mountpoint = / $ tank / opt $ tank / opt
  35. cd / $ tank ; ln -s / usr / home home && cd-
  36. mkdir / $ tank / var / tmp
  37. chmod 1777 / $ tank / var / tmp / $ tank / tmp
  38. #基本システムをインストール
  39. cd / dist / 8.2- *
  40. エクスポート DESTDIR = / $ tank
  41. ベースcatpages dict doc info lib32 manpagesのディレクトリ。 do cd $ dir ; echo "y" | ./ install.sh ; やった
  42. cd src; 。 / install.sh all
  43. cd .. / kernels; 。 / install.shジェネリック
  44. cd / $ tank / boot; cp -Rlp GENERIC / * / $ tank / boot / kernel /
  45. #基本設定をインストール
  46. << EOF > / $ tank / etc / rc.conf
  47. zfs_enable = "YES"
  48. ホスト名 = " $ホスト名 "
  49. ifconfig_ $ iface = "DHCP"
  50. sshd_enable = "YES"
  51. ntpd_enable = "YES"
  52. ntpd_program = "/ usr / sbin / ntpd"
  53. ntpd_flags = "-p /var/run/ntpd.pid -f /var/db/ntpd.drift"
  54. Eof
  55. << EOF > / $ tank / etc / ntp.conf
  56. サーバー82.207.71.6 iburst maxpoll 9
  57. サーバー91.198.10.4 iburst maxpoll 9
  58. サーバー79.142.192.4 iburst maxpoll 9
  59. サーバー193.193.193.107 iburst maxpoll 9
  60. Eof
  61. echo 'zfs_load = "YES"' > / $ tank / boot / loader.conf
  62. echo "vfs.root.mountfrom = \" zfs: $ tank / root \ " " >> / $ tank / boot / loader.conf
  63. cp / mnt2 / usr / share / zoneinfo / $ tz / $ tank / etc / localtime
  64. cp / boot / zfs / zpool.cache / $ tank / boot / zfs / zpool.cache
  65. << EOF > / $ tank / etc / fstab
  66. #デバイスマウントポイントFStypeオプションダンプパス#
  67. / dev / gpt / swap0 none swap sw 0 0
  68. procfs / proc procfs rw 0 0
  69. Eof
  70. export LD_LIBRARY_PATH = / mnt2 / lib
  71. cd /
  72. #正しいZFSマウントポイントとクォータ
  73. zfsアンマウント-a
  74. zfs set mountpoint = / opt $ tank / opt
  75. zfs set quota = 1G $ tank / tmp && zfs set mountpoint = / tmp $ tank / tmp
  76. zfs set quota = 5G $ tank / usr && zfs set mountpoint = / usr $ tank / usr
  77. zfs set quota = 10G $ tank / var && zfs set mountpoint = / var $ tank / var
  78. zfs set quota = 512m $ tank / root && zfs set mountpoint = legacy $ tank / root


スクリプトの実行中、サーバーを再起動するだけでキーボードに触れる必要はありません。パスワードなしでルートとしてログインします。



関連資料: RootOnZFS / GPTZFSBootZFSをメインとして使用したFreeBSDのインストール



頑張って



All Articles