0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UbuntuStudio Tips: ZFS をネットワーク越しにcloneするときssh使えっていうけどさ

Last updated at Posted at 2019-08-18

はじめに

みなさん、ZFS使ってますか?

「そんなカッタルイもんつかってられるかいな、これからはbtrfsやろ」

そう思っていた時期が、僕にもありました、っていうかそのとおりだとは思います。

ただ、諸般の事情でzfs-fuseでファイルサーバを既に立てちゃってた場合、「あー今のHDDももう4年つかったし、そろそろ新しいサーバに移し替えたいナー」という、運用上なんともしがたい作業があるわけです!

ローカルでディスクつないでcloneすればいいんですが、たとえばraidzでHDD3本使ってたりすると、移行元と先でトータル6台もHDDをつながないといけないので、やっぱネットワーク越しにcloneするのが無難と思われます(あと、移行元のマシンは大分古いので、あんまり触りたくないですしね.....)。

で、このネットワーク越しのclone時に、Ubuntu(Studio)の場合はひと工夫必要が必要だったので、そのときの備忘録です

何が問題か

Oracleのマニュアル見ると「そんなん簡単でっせ、ssh使いなはれ」、と書いてあります。

https://docs.oracle.com/cd/E19253-01/819-6260/gbinw/index.html
より

host1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh host2 zfs recv newtank/dana

えええええええええええ!!!!!、正気ですか!?(ケンドーコバヤシ風に)
問題だらけじゃないッスか!!

  • デフォルトではrootにsshは許可されてない
  • っていうか設定か変更すればできるけど、rootにssh許可とかセキュリティ上したくないし、そもそもsshdの設定変更して移行終わったら元に戻すのなんか嫌
  • ubuntuだとrootはアカウントとして無効になってる(あくまでもロールとして提供)
  • 一般ユーザでログオンしてからsudoする方法もあるけど、/etc/sudoers.dにわざわざコンフィグ書きたくない

うーん、色々設定できればできそうなんですけど、セキュリティホールになりそうだし、移行のためだけにわざわざ設定変えたくないッス

こまりました。

ncとかいう神コマンド

そこで登場するのがtcpのパイプを作ってくれるnc(network cat)コマンドです。
必要に応じてapt install netcat でインストールしときます。
(もしかしたらデフォルトで入ってるかも)

まず最初に移行先でtcpをlistenするサーバを立ち上げます。
-Fは送られてきたデータで上書きです。初回だけつけます

nc -l 0 13000 | zfs recv -v -F pool/backup

これでポートtcp/13000に投げ込まれたストリームがzfs recvにリダイレクトされます。

そしてこんどは移行元から移行先サーバに対してストリームを投げ込みます

zfs send pool-old/backup@snap-20140101 | nc <移行先サーバのIP> 13000

コピーが完了するとサーバ側のzfs recvが完了してプロンプトが帰ってきます。
次のスナップショットを送るときはサーバ側は-Fは不要、クライアントは-iつきで差分を投げます

(2019/08/18追記)
なんか「cannot receive incremental stream: destination XXXXXXX has been modified since most recent snapshot」ってエラーで怒られることがある(たぶんatimeの都合)ので、サーバ側は2回目以降も-Fつけたほうがよさそう

サーバ側

nc -l 0 13000 | zfs recv -v  pool/backup

クライアント側

zfs send -i pool-old/backup@snap-20140101 pool-old/backup@snap-20140201 | nc <移行先サーバのIP> 13000

おわりに

しっかし、zfsの書き込み遅いっすね。

SATA HDDx3 のraidz につくられたファイルシステム500GBぐらい移行してみたら、スループットとして5〜10MB/secぐらいしか出てない......結局全部クローンするのに20hぐらいかかりました....orz.
(わざわざ1Gbpsのハブ買ったのに!!)

リモートから入って作業しててうっかりコネクション切れちゃうと最初からやりなおしなので、作業するときはscreenコマンド必須と思います。

昔SSDで組んだZFSのアプライアンスとか出してたメーカーがありましたが、SSDだとマトモな速度(せめて30〜100MB/secぐらい出てほしいナー)で動くんですかねぇ

まぁ最近はSSDも安くなっってきたので、そのうちZFS+SSDに挑戦してみたいですねー。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?