2026年5月1日金曜日

Proxmox VEホストのZFSデータセットにTimeMachineバックアップ

MacBook Proを新しく購入したので、Proxmox VE上のZFSストレージをバックアップ用途として見直し、TimeMachineの保存先として利用することにしました。

■ バックアップの圧縮と暗号化のポリシー: ZFSの機能を利用する

万が一どころか億が一、ハードディスクの持ち去り対策としてデータの暗号化を検討します。まぁ個人の Mac で、プール全体を暗号化していないので片手落ちなのですが...

データの圧縮や暗号化をどのレイヤーで行うか考え、最終的にどちらも ZFS のレイヤで行うことにしました。

結論としては、TimeMachine自体は暗号化することはあっても積極的には圧縮しないようで、ZFSのレイヤで圧縮をかけるとしても、TimeMachineの暗号化を有効にすると、ZFS側での圧縮はほぼ効かなくなります。圧縮したければTimeMachineの暗号化機能は利用しないほうがよい、ということになります。


■ Proxmox VE側の設定

まずは zpool、データセットの準備を行います。

array5 zpool

今回は既存の zpool プールを使用しますので、 zpool の作成方法などについては割愛します。 10TB HDD x5, RAIDZ2 で構成したプールです。

hasegaw@pve:~$ zpool list
NAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
array5  45.5T  11.2T  34.3T        -         -     0%    24%  1.00x    ONLINE  -

array5/backup
array5/backup/timemachine

ここにはarray5/backup, array5/backup/timemachine データセットを作成します。まぁ、データセットも作成済みなのですが、

hasegaw@pve:~$ zfs list array5/backup
NAME            USED  AVAIL  REFER  MOUNTPOINT
array5/backup 1.31T 20.2T 211G /export/backup
array5/backup/timemachine 959G 20.2T 185K /export/backup/timemachine

新たに作成するのであれば以下のようなコマンドラインになりますね。

sudo zfs create array5/backup
sudo zfs create -o compression=lz4 array5/backup/timemachine

compression=lz4 を指定していますが、とても積極的な圧縮とまでいかなくても、ゼロが続くような領域についてはランレングス圧縮がかかれば良いな、というぐらいの期待値です。ここで gzip などを指定すれば多少圧縮率もあがるかもしれませんが、CPUサイクルとのバランス感は微妙だと思っています。

また、このホストではデータセットのマウント先を /export/backup にしています。(-o mountpoint=/export/backup)


array5/backup/Arseille

続いて TimeMachine 用の array5/backup/Arseille を作成します。 TimeMachine はマウントされたファイルシステムをまるごとバックアップ先として使用する仕様なので、TimeMachineの単位でSMB共有を作成することになります。

折角なので、ZFSのレイヤでも、ZFSデータセットとしても分けておきます。スナップショット単位の操作(zfs send/recv や destroy)を考えると、分けない理由があまり思いつきません。

  • MacBook Pro の内蔵SSDが 4TB なので、 TimeMachine バックアップと、ストレージが溢れた状態でもある程度の世代が残るように、 5TB でクオータを設定します。
  • 暗号化用の鍵をプロンプトにて指定します。鍵は別途管理します。

root@pve:~# zfs create -o quota=5T -o encryption=aes-256-gcm -o keyformat=passphrase \
-o keylocation=prompt array5/backup/timemachine/Arseille Enter new passphrase: Re-enter new passphrase:

TimeMachineで使用するユーザで、データセットのディレクトリに書き込めるようにしておきます。

# chown hasegaw:hasegaw /export/backup/timemachine/Arseille
hasegaw% touch /export/backup/timemachine/Arseille/hoge
hasegaw% unlink /export/backup/timemachine/Arseille/hoge

Samba のインストール

# apt upgrade
# apt install samba

smbpasswd

まだ Samba 用のパスワードを設定していなければ smbpasswd で設定しておきます。

今回はパスワード登録済みですが、新たに登録する場合は以下のイメージになります。

# smbpasswd -a hasegaw
※ -a は新規ユーザ登録。事前の /etc/passwd にそのユーザを作っておくこと

この SMB サーバに対しては私自身が普段使いのユーザアカウントで SMB マウントするため、今回はメインのユーザアカウントで TimeMachine 接続を想定します。

/etc/samba/smb.conf

もらってきた設定を貼り付けて少し弄っただけですが、以下の要領になります。

  • fruit:time machine=yes
  • fruit:time machine max size = 5000G: 設定は可能なのですが ZFSの quota で最大容量は伝わっているかなと思うので、いったん様子見で外しています。どのように振る舞うのかが判っていませんが、 ZFS 側の制限がハードクオータ、こちらの設定が TimeMachine に対する容量のヒントとして振る舞うように見えるので、 ZFS データセットよりもすこし小さい値に設定してほうがよいかもしれません。
  • ea support = yes となっていますが実際には ZFS レベルで EA を有効化していません。現状、手許では問題なく動いているように見えていますが、将来的に見直すかもしれません。
[timemachine_Arseille]
path = /export/backup/timemachine/Arseille
browseable = yes
read only = no
guest ok = no
writable = yes
valid users = hasegaw
fruit:time machine = yes
; fruit:time machine max size = 5000G
ea support = yes

Samba プロセスを再起動しておきます。

root# systemctl restart smbd


■ Mac 側の設定

MacBook Proからのマウント確認

Finderから Cmd-K 、接続先に smb://hostname_or_ip_address/ を入力し接続します。

ユーザ名、パスワードを聞かれたら PVE ホスト側のユーザ名および先に smbpasswd で指定したパスワードを入力します。

TimeMachine バックアップ先となる timemachine_Arseille 共有が見えたら、それをマウントします。中にフォルダを作成できることを確認し、書き込みが正しくできることを確認できたらテストで作成したフォルダを削除し、共有を改めて空の状態にしておきます。

Finder の左側ペインから、該当する共有のマウントを解除します。

TimeMachine 設定

バックアップ対象の MacBook Pro 側で、以下の要領で TimeMachine 先を設定します。

root# tmutil setdestination smb://user:passwd@hostname/timemachine_Arseille
root# tmutil startbackup

設定で TimeMachine を検索し、バックアップが開始されたことを確認します。



バックアップ終了後に ZFS データセットの割り当て量が増えていることが確認できます。

root@pve:~# zfs list array5/backup/timemachine/Arsielle
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
array5/backup/timemachine/Arsielle  9.17G  4.99T  9.17G  /export/backup/timemachine/Arsielle


■ 再起動後の暗号化解除

Proxmox VEで動作するZFSのプールのうち、該当する timemachine 領域をマウントするには鍵を提供する必要があります。このためホストの再起動後はプールが見えなくなり、バックアップや TimeMachine の内容確認などの操作ができなくなります。

 zfs load-key コマンドにてプロンプトから鍵を入力しアンロックします。

root# zfs load-key array5/backup/timemachine/Arseille
root# systemctl restart smbd

プールが見えない状態では TimeMachine が sparse bundle を見つけられないため、バックアップは(安全に)失敗します。次回以降のバックアップで再マウントいs sparse bundle が見つかれば、バックアップは再開します。


■ ToDo: Mac持ち出し時の他ネットワークでのバックアップ防止

Mac の TimeMachine 機能はスケジュール通りにバックアップを繰り返すため、自宅から Mac を持ち出している間も、 tmutil setdestination で指定した hostname に対して user:passwd でログインしようとする挙動がつづきます。

セキュリティ的には気持ちが悪い挙動なので、ネットワーク条件に応じてTimeMachineを有効/無効に切り替える仕組みを今後検討したいと思います。

クラスCアドレスなので仮にインターネットに繋がっていても経路がなくSMB共有は繋がらないはずですが、接続先のWiFiが(以下自主規制)

かといって、この状況で IPsec などを使うのもどうかと思うし :S 自宅LANに接続していなければ自動バックアップ無効までやりたいと思いますが... これは後日としたいと思います。

2026年4月29日水曜日

Proxmox VEを7.xから9.xへアップデート

 インストール後に割と放置していた Proxmox をアップデートしました。


作業ログをとらずにまとめてやってしまったので具体的なコマンドラインや出力は記載しませんが、おおよその手順としては、下記の手順になります。

  • Proxmove VE 7.x を最新バージョンまでアップデート
    • apt update
    • apt dist-upgrade
  • PVE 7 -> 8 のアップデート検証、アップデート
    • pve7to8 コマンドを実行しアップデート事前検証
      • すでに zfs destroy したプールが見つからない警告が出たので、ここで削除しておく
      • DKMS でインストール済みだった iomemory-vsl について警告が出ていたので、 DKMS を外しておく
      • 推奨に従い VM を停止
    • sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
    • apt update
    • apt dist-upgrade
    • 新しい kernel もあるため一度再起動、 VMが起動することまで確認しておく
  • PVE 8->9 のアップデート検証
    • pve8to9 コマンドを実行しアップデート事前検証
      • ブートディスク容量不足の警告が出たため ISO イメージを整理
      • 推奨に従い VM を停止
    • sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
    • apt update
    • apt dist-upgrade
    • 再起動、 VMが起動することまで確認

その他考慮したポイントなど
  •  PVE 9.x へのアップデートにあたり多少 grub.cfg が変化しているようで。iommu 関連で GRUB の設定を書き換えていましたが、メンテナ版を受け入れ、個別の修正は改めて適用。
  • smb.conf は現行バージョンを採用。
  • AMD 向けマイクロコードのパッケージなどが表示された案内通りにはインストールできていないが、とりあえずそのままで。
  • GRUB の際インストールを促されたが、案内通りにはうまく進まなかったので、とりあえずそのままで。 boot してるから、まあいいでしょう
  • 当初はクリーンインストールになるのかなと思いながら、手順どおり /etc 以下や /var/lib/ の下などをバックアップしてまわろうと思い作業してましたが、 apt dist-upgrade の手順が出てきた段階で「まあなんとかなるだろう」と思い始めて、そのまま上書きしてしまいました。 Proxmox VE のブートドライブ (SATA 128GB), メインの仮想マシンプール(NVMe 4TB), ストレージアレイ(10TB x5) が別れていたので、失敗してもなんとかなるだろうと思ったのもあります。痛い目に遭いたくなければ、バックアップぐらいは取っておきましょう 

参考にしたURL

  • https://pve.proxmox.com/wiki/Upgrade_from_7_to_8
  • https://pve.proxmox.com/wiki/Upgrade_from_8_to_9


2026年2月14日土曜日

3Dプリンタを併用してSHURE SRH1540用ロングケーブルを製作

SHURE SRH1540

2000年ごろ、大学生のときにATH-A700ヘッドホンを購入してから20年近く使っていたのですが、最終的に樹脂部品が経年劣化で分解してしまい、処分しました。それ以降は解放型の SENHEISER GAME ONE を自宅で使っていたものの、モニタリング用途でどうしても密閉型のヘッドホンが欲しくなり、 SRH1540 を購入。


新品で購入しなくてもよいかなと思い、最終的に3万円台で中古を購入しました。それまでに使っていたヘッドホン類と比べると(新品販売時の価格帯も倍以上と違い)かなり解像度が高く感じ、聞こえ方が別物に感じます。

常用してわかってきた問題点


問題なく聴けているときの利用感は非常に好みです。しかし、常用していると、純正の「左右両だしケーブル」にかなり不便を感じました。

  • ケーブルが 1.5m 程度?で短め
    • 装着状態では身動きをとりづらい
    • ケーブル長から、利用場所の制限を感じる
  • 左右両だし仕様
    • ギターを抱えたり離したりしづらい
    • どちらが右・左か、わからなくなる
  • 3.5ピンコネクタ相性
    • 一般的な3.5ピンコネクタよりも細めなのか、接触不良になりやすい模様。検索すると悩んでいる人がけっこう出てくる

ケーブルの作製を決断、しかしコネクタが手に入らない


先述のトラブル内容でイライラしてしまうので、別のモニタリングヘッドホン購入を検討。しかし定価6万円台のヘッドホンを基準にしてしまうと、次の選択肢もなかなか決まりません。
「最終的に、これ以上ヘッドホン買うよりは SRH1540をなんとか使える状態にしたほうがよいだろう」と思い直し。ケーブルを作製することにしました。

作製にあたり困ったのはコネクタ部分。接点部分は一般的な MMCX ですが、イヤホンのリケーブルなどで使用される MMCX コネクタより細身の独自仕様になっていて、これにあった部品がありません。秋葉原で相談すると「そんなもん売ってねー」と冷たくあしらわれる状況。


既存 MMCX コネクタ + 3Dプリントの自作ハウジング製作にチャレンジ


最終的に NOBUNAGA Labs MMCXプラグ自作キット と、3Dプリントの自作ハウジングで製作にチャレンジすることにしました。







こちらの MMCX コネクタはネジ山が彫ってあるため、ハウジングの内径次第で、よい感じに閉めることができます(オヤイデで取り扱いのあるMMCXコネクタも購入しましたが、こちらにはネジ山がありません)。 Bambu Labs のPLAフィラメントで輪状に出力したハウジングに対して、そのまま締めることができました。

ただ、非常に小さいモノなため、このハウジングは3Dプリントするには 0.4mm ノズルでは難しい印象です。普段はあまり使わない 0.2mm ノズルを利用しました。 0.2mm ノズルで壁ひとつ分の壁厚しかとれないと思います(2壁はチャレンジしていませんが)。変に力をかけると層がはがれて壊れてしまうかもしれませんが。壊れたら、コネクタのはんだ付けからやり直しです(コネクタ部分の再利用はむつかしいと思いますので、修理のタイミングで新しい部品が必要な気がします)。このサイズ感のはんだ付けは得意ではないので、断線・修理が怖いです。

余談ですが、この製作の前に Kaika の P1S 利用可能なノズルを注文していたのですが、他のユーザからのトラブル報告などを経て最終的に入手しませんでした。 0.1mm ノズルが手元にあったら、絶対にプロジェクトでは 使ってみたかったです。

そして、ついに SRH1540 に装着可能な MMCX のハウジングを製作できました。多少不格好ですが、自分で使うには問題ないでしょう。



チャンネルの見分けがつくように片方をマゼンダにしました(CMYKセットとしてもっていたものを利用)


3mの片出しケーブルを作製


SRH1540に対応できるMMCXハウジングを作れてしまえば、もう後は単純なはんだ付け作業です。

今回は 3.5ピン側も NOBUNAGA Labs のものを使いました。正直私には200円未満のプラグとの利用感の違いはわかりませんが……。ピンジャックとSHURE純正プラグの相性問題とも、これでサヨナラです。

ケーブルは、オヤイデの、イヤホン用2芯2ペアのものを使用。作製したのは半年以上前ですが、これがすごく高かった覚えがあります。普通なら3mとかで使うようなものでもない。。。

右チャンネル分は短く、左チャンネル分はヘッドレストを経てコネクタに接続できるように作ったことで、事実上片出し運用ができるようになりました。

作製したケーブルはデスクトップ利用もできますし、ソファでギターを弾いているときにオーディオインターフェイスで音をモニタリングするのにも、不自由なく使えています。


3Dプリンタがあるからこそできた


このケーブルは 2025/7 に作製し、手元の利用ではハウジングが破損することもなく半年以上問題なく利用できています。

この製作のキモは、先述のとおり、特別なMMCXコネクタ用ハウジングの製作でした。もし3Dプリンタが手元になければ、最初から諦めていたと思います。私は手先が器用な方ではないですが、それでも「3Dプリンタで、解決できる課題が広がっている」と感じたプロジェクトでした。

Bambu P1Sアップグレード記録: AMS+Tetras乾燥機, AMSドロア, AMSロングケーブル

 Bambu Labs の P1S を購入してから一年以上がたちました。収益化している人ほどガンガン使ってはいないのですが、けっこう楽しく、便利に利用しています。今回は AMS 関連のアップグレード内容をまとめてみます。




AMS 2段 + EIBOS Series X: Teras 乾燥機

手元ではAMSを2台、P1Sのとなりにおいて運用してきました。合計8スプールを利用可能状態にしておけることで、便利に使っています。

さらに、この半年で、クラウドファンディングで buck していた EIBOS Series X: Tetras が到着。AMSに乾燥機能を追加するシステムです。これを注文したときは AMS2 はまだ出ていませんでしたので、これはAMS無印2台持ちの私にとっては現実的なアップグレードでした。

フィラメントドライヤーとしての Tetras の感想などはあまり書くつもりありませんが、「使用予定をフィラメントをセットして、ボタンを押してドライヤーにかけておくだけ」はとても便利です。PLAは上段メイン、ABSやPETGなどを使うときや、PLAでも乾燥にかけたいときなどは下段のAMS+Tetrasからフィラメント供給しています。

AMSが販売終了になっていることなどを考えると、これから Tetras を入手する人は限られるでしょうし、そもそも入手できる期間も相当限られそうですが、購入してよかったなと思います。


AMSドロア

Tetras 導入前、ダイソーのメタルラック用ポール等で製作したドロアを使用していました。3Dプリンタ購入直後で、モデリングも能力的にもぎりぎり、インサートなどを使うことも考えずに作ったものですが、いくらか問題があったものの便利に運用していました。




第一世代で発生していた問題は以下の部分です。

  • ダイソーのつっぱりミニポール用の棚を棚板として利用していたが、これ自体の強度が足りなかった。
  • 上記にPLAのはりを付けていたが、ありあわせのネジで組み立てた都合で、意図した強度が出ていなかった。
  • P1S - AMS - AMS のケーブルが短かく、ドロアをフル活用できなかった。 -> 後述ケーブルにて解決

この第一世代は、 Tetras 装着後にケーブル長の問題などからメンテ時に負荷がかかり、棚板が崩れてしまったので、第二世代として作り直すことにしました。


第二世代は、 Tetras 装着状態、もしくは未装着状態の AMS を搭載できるように作ってあります。AMSのサイズ感は 256x256 (mm) のベッドでは出力できないため、複数パーツにて構成して、インサートとM3ネジで組み立て、引き出し用のレールに載せています。加重はほとんど左右のレールに固定されたブロックにかかるようになっていて、思ったよりも安定しています。あえて言えば手でひっかける部分を付けておけばよかったか。
本業の始業前などにやっつけでモデリングしたので(言い訳です)あまりかっこよかったりはしませんが、目的達成には十分でした。直したいところがないわけではありませんが、「これでいいや」と使い続けています。
ダイソーポールとアウターレールをとめる部分については過去のプリント品をそのまま再利用しました。


ロングAMSケーブル

これまでの内容のように、AMSを複数台装着していると、AMS本体付属のケーブル(通信&電源)の長さが足りなくなります。ケーブルの長さが足りないことで、以下のような問題が発生します。

  • AMSをプリンタのすぐ隣に配置する必要があり、数センチ離すこともむつかしい。このため P1S 背面へのアクセスがしづらい。
  • 上段AMSと下段AMSのケーブルが短いために、片方のAMSをしっかり前に引き出すことがむつかしい。特に Tetras 装着後は運用上の課題が発生。

このため、付属ケーブルの約2倍の長さで代替のAMS接続ケーブルを作製しました。



AmazonやAliexpressなどで探せば既製品が見つかるかもしれないので、あれば既製品を使ってもいいと思います。私の場合は、このタイプのコネクタの圧着経験などがなかったので、自分で加工してみたかったという理由もあり、自分で製作しました。

ケーブル配線

純正ケーブルは調べたところ以下のシンプルなものでした。この調査結果に基づいてケーブルを製作します。
1-1
2-2
3-3
4-4
5-5
6-6

加工手順

加工は以下の手順で行います。
  • フラットケーブルを必要長さ+αで切断する。
  • 皮むき位置を揃えるため、油性ペンでフラットケーブルで皮むき位置をマークする。
  • 1芯目(赤)~6芯目まで、以下を繰り返す。
    • 皮むき位置で皮をむく。
    • 露出した銅より線が広がってしまう前に、はんだで軽く固めてしまう。
    • MicroFit用ピンソケットに、いちばん奥まで線をつけた状態で被膜もぎりぎり圧着できるところまで導線を切り詰める。
    • ターミナルに線を仮置きした状態で、はんだごての熱で、ケーブル側についたはんだとターミナルを軽くはんだ付け。(はんだを載せすぎると、のちの圧着作業やハウジングへの取り付けができなくなるので、軽めに)
    • 銅線の先側から被膜側まで、圧着工具でかしめていく
    • ケーブル部分からターミナルの先までまっすぐになるようにする。曲がっているとスムーズにターミナルを装着ができない
  • ハウジングを装着
  • テスターにて抵抗値を確認
私はそれ程この手の作業になれておらず、この手順で2本のケーブルを製作するのにおよそ3時間ほどかかりました。
テスターの抵抗値を見る限り問題がなさそうだったので、P1S-AMSの間をこのケーブルで接続してみると、P1S側からAMSのシリアルが正しく取得できていることが確認できました。これを確認の上、2本目に着手、AMS-AMSのデイジーチェーンを自作ケーブルに切り替え。問題なく動作しています。

部材調達メモ

フラットケーブルは、30芯ぐらいのものなら手元にありましたが、ここから6芯で50cm以上もとるには向かなかったので、今回の目的のために購入しました。秋葉原のマルツや千石などに見に行ったところ、思ったものがなく、最終的にオヤイデで5m購入しました。欲しいものが決まっていれば、依頼するだけで店員さんが用意してくれるのはありがたいです(無いものを聞いてしまうとすごい塩対応をくらう印象もありますがww)。
6芯利用なのに8芯を買ってしまったのですが、結果的になんとなく1芯目を赤色にできました。使っていない2芯は、その気になれば裂くだけです。

ケーブルを製作する場合、ターミナルはケーブル1本製作あたり12個、2本では24個必要になります。はんだ付けや圧着の失敗があれば、より多くの部品を消費することになるでしょう。ターミナル購入時は24本+予備を数えて購入は手間です。今回はまとめて100個で買いました。(歳をとって、こういった所をお金で解決できるようになったのは幸せだなあ)

当初は100個単位が店頭になく、通販しようとしたのですが、荷物に不着などの問題がおき、後日に店頭で100個単位で購入しました。

100個パックとはいえ、24個使用すれば 1/4 はすでに使っています。今回は失敗ナシで、無駄が出なかったため、残り76個あるはずですが、3Dプリンタ+電子工作などで何か作るときに利用したいと思っています。

購入から1年以上経過したが、現役スペックで、動かしても拡張しても楽しい P1S

直近では H2C や、 P1S 後継の P2S も販売されており、P1Sは「過去のモデル」となっていますが、自分にとっては P1S はまだまだオモチャ作りで活躍しています。また今回はAMS関連のアップグレードですが、H2Cなどを買ってしまうと、この内容はそのままH2Cに持っていけるでしょう。

購入から一年以上たち販売終了したモデルとはいえ、今回まとめたようなアップグレードに取り組むのも楽しいです。組み立てPCではもはや感じられなくなってしまった楽しさがあるようにーー 8ビット機や16ビット機も楽しく育てていたような人たちはこんな気持ちでパソコンを触っていたのかな、などと思ってみたり。