コンテンツにスキップ

ストレージ構想

Created: 2023/08/05

概要

仮想マシン周りでストレージを共有したりバックアップの仕組みをファイルサーバーに集約したい。

TrueNAS

  • 各仮想マシンのDBなどはここに集約したい
  • 使用できるプロトコルは
    • SMB
    • NFS

https://milestone-of-se.nesuke.com/sv-advanced/file-server/nfs-cifs-smb-summary/

  • サーバーの設定に必要なデータと、アプリケーションが利用するデータベースの2種
  • 案1: AppごとにNFS分離
    • ex. misskey
      • /misskey/data, /misskey/app
  • 案2: DB系とApp系で分離
    • ex. /data/misskey, /app/misskey

実際はAppのデータはgitで管理したいことが多い気がする 設定とか飛びそうでこわいし・・・

柔軟なのはAppごと分離するやつかも

スナップショット取りづらいけどいっか・・・

ZFS Snapshot

https://www.truenas.com/docs/scale/scaletutorials/storage/datasets/creatingsnapshots/

データベースもスナップショットで管理できたらいいんでねって

  • 問題
    • DBロックしてから(flush?)スナップショットがいいかも
    • いろんなデータベース使いたい・・・

→ フルバックアップをn世代残してそれ以上はスナップショットにする

docker compose volumeでNFSをマウントしたいとき

usecase: misskey postage DBのデータをファイルサーバーに置きたい

docker compose ファイル

docker-compose.ymlにて、volumeをマウントする

volumes:
  db_volume:
    driver_opts:
      type: nfs
      o: "addr=192.168.10.100,hard,rw"
      device: ":/mnt/tank/services/misskey/db"

services:
  db:
    volumes:
      - db_volume:/var/lib/postgresql/data
    # 略

NFSサーバーの設定

権限周りで怒られる事がある。あまり良くわかっていない・・・

kokshi@vmdev1:/mnt/misskey$ sudo docker compose up -d db
[+] Running 3/4
 ✔ Network misskey_default        Created                                                                          0.1s
 ✔ Volume "misskey_db_volume"     Created                                                                          0.0s
 ✔ Volume "misskey_redis_volume"  Created                                                                          0.0s
 ⠋ Container misskey-db-1         Creating                                                                         0.0s
Error response from daemon: failed to chmod on /var/lib/docker/volumes/misskey_db_volume/_data: chmod /var/lib/docker/volumes/misskey_db_volume/_data: operation not permitted

Maproot Userにルートを指定する。

alt