| tags:macos tips&tricks categories:computing

OpenZFS ミラーリング

ZFSを検証中、第2弾です。 今回は複数端末間でのファイル同期を念頭に、 持ち出し用を想定して小規模なミラーリンングを構築します。

ThinkPad(メイン)<-> 32GB USBMemory <-> MBAir11(ちょい外出)

と3点ミラーリンングを考えてます。繋いだり繋がなかったり、ゆるゆる運用します。

最初に手元にあるMacbookAir11とメモリースティックの2つでミラーリングを設定します。

まずは、各々のパーティションをフォーマットします。マックではDisk Utilityにて32GBの新しいパーティションを作成します。 32GBのUSBディスクはMBRになっているのをGPTに、こちらもDisk Utilityを使って変更します。

そしてマックの新しいパーティションとUSBメモリーのパーティションをフォーマットします。 USBメッモリーはノートブックで一つしかSSDを積んでいないのにdisk3でした。

diskutil eraseVolume ZFS VOLUME_NAME DISK#P#のコマンドで行います。エラーが出ますが問題ないようです。ディスク・パーティション番号は要注意です。DiskUtilityで再度確認!をしましょう。

gallo:~ jin$ sudo diskutil eraseVolume ZFS ZMIRA01 disk3s2
gallo:~ jin$ sudo diskutil eraseVolume ZFS ZMIRA02 disk0s6

ミラーリングを構築します。とりあえず2つのパーティションを使います。 コマンドはzpool create -f -o ashift=13 -O casesensitivity=insensitive -O compression=lz4 -O normalization=formD POOL_NAME mirror DISK#1 DISK#2です。後でディスクの追加をすることも可能です。 同時に、ボリュームへの書き込みは権限が必要と出てくるのでパーミションの変更も行います。

gallo:~ jin$ sudo zpool create -f -o ashift=13 -O casesensitivity=insensitive -O compression=lz4 -O normalization=formD Work mirror disk0s6 disk3s2
gallo:~ jin$ zpool status
  pool: Work
 state: ONLINE
  scan: none requested
config:

    NAME         STATE     READ WRITE CKSUM
    Work         ONLINE       0     0     0
      mirror-0   ONLINE       0     0     0
        disk0s6  ONLINE       0     0     0
        disk3s2  ONLINE       0     0     0

errors: No known data errors
gallo:~ jin$ sudo chmod 777 /Volumes/Work

以上でミラーリングの構築は完了です。しばしこの状態で運用していきます。


運用

ストレステストというか、本番機で問題になるのは避けたいので、色々とテストしました。 まず、いきなりUSBメモリーをブチッと抜くと、

gallo:~ jin$ zpool status
  pool: Work
 state: DEGRADED
....
      mirror-0                                      DEGRADED     0     0     0
        media-B6AF4D9A-9930-4079-9D67-E1E6020C0BED  ONLINE       0     0     0
        12934696169980452171                        UNAVAIL      0     0     0  was /private/var/run/disk/by-id/media-871E499C-DE42-4E33-A3B2-1530B7575307

UNAVAILになります。使用上問題はないようですが、シャットダウン時に歯車がぐるぐる、強制終了。ちと怖い。

ディスクをオンラインに戻すには、zpool online POOL_NAME DISK_IDを実行します。 ディスクIDはmedia-B6AF4D9A-xxxxディスクに割当られた番号です。 何事もなかったようにONLINEに戻ります。zpool statusにて経過情報が見ることができます。

gallo:~ jin$ zpool status Work
  pool: Work
 state: ONLINE
…
  scan: resilver in progress since Tue Jul 30 07:09:24 2019
    4.12G scanned at 50.8M/s, 1.40G issued at 17.2M/s, 4.12G total
    1.44G resilvered, 33.88% done, 0 days 00:02:41 to go
…
    NAME                                            STATE     READ WRITE CKSUM
    Work                                            ONLINE       0     0    22
      mirror-0                                      ONLINE       0     0    44
        media-B6AF4D9A-9930-4079-9D67-E1E6020C0BED  ONLINE       0     0    44
        media-871E499C-DE42-4E33-A3B2-1530B7575307  ONLINE       0     0    10

errors: 1 data errors, use '-v' for a list

USBメモリーにはアクセスランプがついていないので、 書き込みのタイミングや具合はちょっと掴めませんが、 アクティビティ・モニターで見てみると控えめに同期しているとみえます。

Disk Activity

おしとやかに、前もってzpool offline POOL_NAME DISK_IDでオフラインをするとOFFLINEになります。少しだけ安心。

gallo:~ jin$ zpool offline Work media-871E499C-DE42-4E33-A3B2-1530B7575307
gallo:~ jin$ zpool status
  pool: Work
 state: DEGRADED
....
      mirror-0                                      DEGRADED     0     0     0
        media-B6AF4D9A-9930-4079-9D67-E1E6020C0BED  ONLINE       0     0     0
        media-871E499C-DE42-4E33-A3B2-1530B7575307  OFFLINE      0     0     0

errors: No known data errors

で、USBを抜いて作業。そして、USBメモリーを再度接続しても自動ではマウントはされませんでした。

ブチっと抜いて、適当にぶっさして、勝手に同期という訳には行きませんでした、無念。

まぁ、オンラインにして同期、そして他の端末に挿したままブートとちょっと考えながら差し替えを行えば良いだけです。 USBも最近の少し早いやつなので、textベースの作業なら引きずられることはないだろうと思います。

取り敢えず、このまま検証続行。

※ USBメモリーが粗悪品なのか分かりませんが、刺しっぱなしだとかなりメモリーが熱くなる。

今のところ端末はひとつですし、同期よりもバックアップに近い使い方になっているので、 再起動時にUSBメモリーを刺して、 起動後に同期が終了してるだろうタイミングでオフラインにし抜いて使ってます。 (rsyncなどでバックアップを取ったりするよりは楽かも。。)

エラー対応

色々抜き差ししたり使っているとエラーが上がってきます。 すぐに消えてるかなと思いきや、結構居座っています。 そんな時はzpool scrubで修復します。 コマンドはすぐに復帰しますが、 バックグランドで動いています。

jin@gallo:~ $ sudo zpool scrub Work

3点ミラーリング(未検証)

現在手元にもう一方の端末がないので行なっていませんが、 同期先の追加はzpool atatch disk

jin@guiness:~ $ sudo zpool atatch disk media-B6AF4D9A-9930-xxx newdisk

で3点ミラーの構築が完了。(夢の中)

帰国後の9月半ばに追記します。

参考:https://postd.cc/who-needs-git-when-you-got-zfs/

See Also

comments powered by Disqus