🤖

Taildrive でストレージをネットワークドライブとして共有するメモ(現状不安定)

2024/06/18に公開

背景

漢なら, Tailscale でぺろっとストレージ(ディレクトリ)をネットワークでマウントさせたいときもある...
nfs や samba のように...
(ストレージサーバ(ownCloud とか?)と tailscale を連携とかめんどい...)

alpha 版ですが, taildrive がありました!

https://tailscale.com/kb/1369/taildrive

ただ使って見たところ不安定だったりファイルが書き込めないなどありました...

設定

↑のtaildrive 設定解説ページのようにせっていすればいけます.
policy ファイルは web console で設定します.

デフォの設定ではすべてのノードで share 設定ができちゃうのですが, とりあえず進めてみます.

サーバノード(ストレージノード)で共有設定

$ tailscale drive share cc /mnt/nvme02/work/commoncrawl/shards/

のようにします.

$ tailscale drive list
name    path                                   as
----    -----------------------------------    -----
cc      /mnt/nvme02/work/commoncrawl/shards    syoyo

で共有設定を確認できます.

クライアント側

webdav でマウントします.

CentOS でマウントする

davfs2 をインストールすれば行けます.

yum install davfs2

マウント

# mount -t davfs http://100.100.100.100:8080 /mnt/tailscale

でいけます. username と pass が聞かれますが, とりあえずは無しを指定でよさそう?

あとは普通に nfs, samba のようにファイルパスとして扱えます!

/mnt/tailscale/<USERNAME>/<nodename>/cc 

のような.

必要に応じてマウントパスをクライアント側のローカルユーザ名で chown するとよいでしょう.

特定の machine だけストレージを共有するとか, アクセス権限の細かい設定とか...

↑の設定だと, すべての PC のストレージを共有できてしまいます.
(実際のところは各ストレージサーバで taiscale drive share ... しない限りは client からマウントできないようであるが...)

あとは tailscale の特定ユーザだけと共有したいとか...

https://tailscale.com/kb/1337/acl-syntax#nodeattrs

あたり頑張っていじるしか...?

今後

stable になったら課金しないと使えないカモ?... しれません.

問題点

tailscale が 'root' で動いているため, client 側は常に 'root' でのアクセスになるようです.
一般ユーザでアクセスしても, ファイルは作れないようです...(クライアント側のキャッシュ?にはファイルが作られるが, サーバ側ではファイルサイズゼロになってしまう)

webdav 設定も関係あるかもしれません.
いずれにせよ alpha 版なので, あまり期待しないほうがいいかも...

とりあえずはファイル転送必要になったら taildrop(tailscale file cp/get)使うか, rsync, samba あたりを使うがいいかもしれません.

vim

vi で taildrive のフォルダでファイルを作ると .swp ファイルが常に already exists! と出てしまいます. permission かなにかの関連かしらん?

Discussion