はじめに
従来は膨大なドキュメントのデータを6TBのHDD上に、研究用のデータをオンラインストレージのSeafileで200GBのSSD上に保存していたが、容量が圧迫されていたため、保存環境の見直しを行った。
従来環境
- OS
- Ubuntu Mate 18.04 LTS Desktop
- ストレージ
- 100GB SATA SSD
- OS用
- 6TB HDD
- ドキュメント保存用
- 200GB SATA SSD
- オンラインストレージ用
- 100GB SATA SSD
- サービス
- ドキュメント保存用
- SFTP
- オンラインストレージ
- Seafile
- 高速な同期が可能だが、著名度に難あり。Joplinとの直接の提携ができない。
- Seafile
- 研究ノート(Markdown)
- Joplin
- 内部リンク、Mermaidなども使えて、重宝している。
- Joplin
- ドキュメント保存用
必要なこと
今回の環境構築にあたって、保存環境に必要なことを記述する。
- NASに求める条件
- データの冗長性の確保
- 今まではHDD一個に保存していたため、データが消える可能性が大いにあった。
- 容量の拡大
- 6TBの容量に達したため、より大きな容量が必要であった。
- 管理の簡単さ
- GUIで状態の管理、機能の設定をできることを求める。
- データの冗長性の確保
- オンラインストレージに求める条件
- NAS上での簡単な環境構築
- 高速な同期
- ファイルの編集履歴の保存
- 削除したファイルの保存(ゴミ箱)
- Joplinとの提携の容易さ
- 知識のない家族でも簡単にインストール、利用ができること
- ドキュメント保存
- 高速な転送
- 研究ノート
- Joplinを用いる
新環境
必要な条件から新環境を決定した。
ソフトウェア構成
- NAS OS
- Truenas Core
- オンラインストレージ
- Nextcloud
- プラグインから簡単にインストール可能
- 同期は遅いがMemcache(データをメモリ上にキャッシュ)を設定すればある程度の高速化は可能
- SeafileはTruenasのプラグインにはなかった。
- Nextcloud
- ドキュメント保存
- Webdav
- 保存にはSFTPでアクセスする
- SFTPの設定が面倒な端末では閲覧はWebdavで行う
- Webdav
- 研究ノート
- Joplin
- Nextcloudとの直接提携可能
- Joplin
ハードウェア構成
- 5.25インチベイ 3個
- 5.25インチベイ3個を3.5インチベイ5個に変換が可能な部品を購入。
- 冷却が必須なため、ファンがついているものを選んだ
- レールがついているため、簡単にHDDの抜き差しが可能
- 3.5インチベイ 8個
- ファンがついているため、冷却が可能
- レールがついているため、簡単にHDDの抜き差しが可能
- ZFS VDEV
- RAIDZ2
- 2個のHDDまで壊れても元のデータが復元可能
- 1個のHDDが壊れた後のResilveringでもう一個が壊れる可能性が十分にあるためRAIDZ1にはしなかった。
- 6 x 3TB SATA HDD (12TB利用可能)
- RAIDZには書き込み方式の一つであるCMRが必須
- RAIDZ2
- メモリ
- 24GB
- OS用
- 2GB
- ARC(ZFSキャッシュ)用
- 12GB以上(自動割り当て)
- VDEV 1TB当たり1~5GBが必要であるという記述があったため、したがった
- memcache(Nextcloudキャッシュ)用
- 10GB以上(自動割り当て)
- OS用
- 24GB
- SATA端子
- 端子が足りなかったため、追加
- (JMB585) 2 x PCIe3.0 -> 5 x sata3.0アダプタ
- 端子が足りなかったため、追加
- SATA15pin電源端子
- 端子が足りなかったため、追加
- IDE4pin -> 5 x SATA15pin
- 端子が足りなかったため、追加
環境構築
Truenas CORE
インストール手段は省略する。設定内容について述べる。
- snapshot
- 毎日深夜に一回、二週間保存
- SMARTテスト
- 毎日深夜に一回
- スクラブ
- 毎日深夜に一回
- UPS
- 20分間電源が再生しない場合はシャットダウン
- 管理画面へのアクセス
- ルーター上でポートフォワーディングを行う。9022 -> 22
- パスワード認証を無効化。公開鍵認証を利用
- SSHトンネルでlocalhost:1443からアクセスできるようにする
- SSH config設定内容
Host truenas_gui
User (ユーザー名)
HostName (グローバルIP)
IdentityFile ~/.ssh/truenas
ForwardX11 yes
Compression yes
Port 9022
LocalForward 1443 localhost:443
Nextcloud
- TruenasのプラグインからNextcloudをインストール
- グローバルIPからアクセスできるように
/usr/local/www/nextcloud/config/config.php
の以下の行を編集
'trusted_domains' =>
array (
0 => 'localhost',
1 => '(ローカルIP)',
2 => '(グローバルIP)',
),
Memcacheがないため、Shellから設定
- Shell上で以下のコマンドを実行
pkg install p5-Locale-gettext help2man texinfo m4 autoconf
portsnap fetch extract
make config-recursive install -C /usr/ports/database/pecl-redis
-
/usr/local/etc/redis.conf
の以下の行を編集- portの行を
port 0
に変更 - unixsocketの行を以下に変更
- portの行を
unixsocket /tmp/redis.sock
unixsocketperm 777
- Shell上で以下のコマンドを実行
sysrc redis_enable=YES
service redis start
-
/usr/local/www/nextcloud/config/config.php
に以下の行を追加
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => '/tmp/redis.sock',
'port' => 0,
),
Joplin
- Joplinの設定から同期先としてNextcloudを設定
- リンク:
https://[グローバルIP]/remote.php/dav/files/[ユーザー名]/[joplinのディレクトリ]
- リンク:
ファイルの移行(ext4->zfs)
Shellで以下のコードを実行する。
fsck_ext2fs /dev/adXXpX
mount -t ext2ds /dev/adXXpX /mnt/(mount先)
rsyncを用いて内容を移行する
rsync -avh --info=progress2 (コピー元) (コピー先)