前に、さくらのVPSでFreeBSD ZFS rootで書いたように、最近、自分のサイトは、VPSでZFSで運用しています。

ZFSにしていたのは、バックアップと乗り換えの時に楽なことと、圧縮できること、などの運用上のメリットからです。

さて、先だって、さくらインターネットのVPSが、全体的にオトクになったのと、乗り換えキャンペーンやってるので、乗り換えました。まだ完了してないけど。

想定通り、乗り換えは、とても楽でした。前使っていたプランは、運用用のディスクで100G欲しかったので、メモリ4G、CPU 4コア、ディスク120G(100G+20G)のプランを選んでいました。新プランでは、2Gプランでメモリ2G、CPU 3コア、ディスク200Gです。月額利用料金も半額以下になるので、乗り換えない手はないぞ、ということで様子見をしていたら、乗り換えキャンペーンだというので、決断。

200Gが、単一なのか複数ディスクなのかが心配でしたが、結果的には200G一発だったので、メンテ用の10G+ZFSに186G、4G swapという構成をとることに。

前の構成では、一台目のディスクをUFSにし、二台目を全ZFS poolに割り当てていましたが、今回は一台なので、多少実験してから導入。

Installing FreeBSD Root on ZFS using FreeBSD-ZFS partition in a FreeBSD MBR Sliceに記載のように、FreeBSD MBRスライス一枚に入れるようにしました。gpart で見ると、こんな感じ。

% gpart show
=>       63  419430337  ada0  MBR  (200G)
         63   20971377     1  freebsd  (10G)
   20971440  398458935     2  freebsd  [active]  (190G)
  419430375         25        - free -  (12k)

=>       0  20971377  ada0s1  BSD  (10G)
         0  20971377       1  freebsd-ufs  (10G)

=>        0  398458935  ada0s2  BSD  (190G)
          0  390070272       1  freebsd-zfs  (186G)
  390070272    8388663       2  freebsd-swap  (4.0G)

=>       0  20971377  ufsid/ほげほげ  BSD  (10G)
         0  20971377                       1  freebsd-ufs  (10G)

手順としては、

  1. OS再インストールでFreeBSD 8.1-RELEASEを入れる。MBR、ブートセレクタを入れるのを忘れずに。
  2. 8.1-RELEASE -> 8.2-RELEASEへアップデート
  3. 8.2-RELEASE -> 9.0-RELEASEへアップデート(なぜか、8.1=>9.0とやると、うまくいかなかったから)
  4. 困らない程度に、ホドホドにportsを設定する。ログイン作業環境を作る
  5. ZFS pool 作る (仮にrpoolと呼びます)。
  6. 先の手順 の手順に従って、ブート可能な状態を作り、テスト
  7. テスト終わったら、作ったファイルシステムをdestroy。
  8. 元ファイルシステムのスナップショットをとる
  9. zfs create rpool/backup したのち、そこに ssh zfs send -R 等を使い、スナップショットまでの、ストリームを持ってくる
  10. zfs recv rpool/root < ストリーム
  11. zpool export rpool; zfs import rpool したのち、zfs.cacheをコピー(重要)
  12. zpool set rootfs=rpool/root する
  13. ブート確認できたら、念のため、scrub実行後に起動できるか確認
  14. swapを設定。swap食うまでメモリを使ってみたあと、再度scrub実行(オーバラップはないはずだけど)

といった手順です。コピーの類の所要時間は、ファイルシステムが70G使われている状態で、bzip2 して送る前提で、

  • zfs send/recv: 8:47:05.69
  • レストア: 3:28:58.15
  • ストリームのサイズ: 35.7G (bzip2圧縮後)

でした。システムは、IPアドレスとホスト名が変更になっているので、移行後に変更したのは、

  • /etc/rc.conf: IPアドレス等とホスト名
  • postfix で決めうちしているホスト名
  • /etc/fstab の swap 設定
  • name serverの設定
  • ssh のホスト鍵の変更
  • バックアップ周りの設定変更

このホストについては、これだけです。無論、DNSの設定もあるんですが、まだ移設していない。あとは、何もせずに終了。元の環境の、rootも含めて全てが移動できるので、超楽ちん。この点ではZFSは、とってもイイです。

唯一ちょっとはまったのは、saslauth にドメイン名が含まれるのですが、これにホスト名が含まれてしまっていたので、最初認証通らなくて焦りました。

その他、Tipsとか留意点としては、

  1. 楽に運用するには、ZFS pool の根元(上の例ではrpool)を rootfs にしない。僕の場合は rpool/root にしました。メリットは、snapshotを取りやすい、レストアするときに、rpool/restore などというパーティション等を作りやすい、swap を root と分けられる (swap の zfs snapshotとると悲惨)など、いろいろ。

  2. 正式契約するまで、2Mbps 制限、OP25制限があるので、注意。さくらの内部では制限はかかっていない模様(そうでないと、zfs send/recv は8時間で終わらない。。)

こんな感じでした。

で、さくらのVPSの新システム、tweetもしたんですが、まぁ、fake されてるとしても、

旧:

CPU: Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz (2133.41-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x6fb  Family = 6  Model = f  Stepping = 11
  Features=0x783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x80000201<SSE3,SSSE3,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>

新:

CPU: Intel(R) Xeon(R) CPU           E5645 (2400.13-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x206c1  Family = 6  Model = 2c  Stepping = 1
  Features=0x178bf3fd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x82b82201<SSE3,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,POPCNT,AESNI,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  TSC: P-state invariant

という感じで見えてます。ま、fakeしてるかもしれませんが、体感的には、T7700とE5645の差みないなものは感じます(キャッシュの効き具合)

あとは、ノートラブルで動くことを祈る感じで。

追記 (2012/4/30)

都合で、別に一つ新規にたてるのに、セットアップのためのスクリプトを書いたので、置いときます。面倒くさいから。。

pool ができた後のfile systemセットアップ:

400: Invalid request

マウントポイントの設定:

400: Invalid request


blog comments powered by Disqus