ubuntu2600k NAS更新

HDDが完全に枯渇しました。1ヶ月前に注文していたHDDはついに届かずLOSTです。

AmazonサポートにChatで連絡、オーダーナンバーを2つ伝えて届いてないと訴えたら即返金となりました。

というわけでもうHDD空き容量が無いわけです。OG Plotを削除して作り直す段階に来てしまいました。

ずっと伸びていたHpoolのChartも真っ平らになり、ついには下降していくことになります。

Plot作り直す?変換する?

私はramdiskのPCを2台用意してしまったのでPlotは新規で作る予定ですが、OG Plotを変換するプログラムが公開されました。詳細は智咲 命さんの時代に追いつくMining Logもぜひ御覧ください。

ubuntu2600k NASの構成変更

以前に設定したNASでSeagate2TBx4をNTFSでマウントしてsmbで共有していたものを全部初期化してZFS RAID0の共有フォルダにします。そしてPortable Plotを作っていく予定。

まずは自動マウントをやめる。とりあえずコメントアウトで。
sudo vi /etc/fstab

SMBの共有を解除します。こっちもとりあえずコメントアウトで。
sudo vi /etc/samba/smb.conf

smb設定反映
sudo systemctl restart smbd

アンマウント
sudo umount /mnt/SG2TB-1
sudo umount /mnt/SG2TB-2
sudo umount /mnt/SG2TB-3
sudo umount /mnt/SG2TB-4

マウントポイント作成
sudo mkdir /mnt/sg2tb

ディスク番号確認
sudo lshw -short | grep disk

Seagate2TBx4をRAID0にする。-fで強制フォーマット、-mでマウントポイント指定
sudo zpool create -f -m /mnt/sg2tb sg2tb /dev/sdf /dev/sdg /dev/sdh /dev/sdi

確認
zpool status
zpool list
df -hT | grep zfs
zfs get mountpoint

オーナー変更
sudo chown hyperbanana:hyperbanana /mnt/sg2tb

smb共有設定
sudo vi /etc/samba/smb.conf

[sg2tb]
path = /mnt/sg2tb
writable = yes
guest ok = no
valid users = @hyperbanana
create mode = 0644
directory mode = 0755

smb設定反映
sudo systemctl restart smbd

つぎに別PC(ubuntu)にて

マウントポイント作成
sudo mkdir /mnt/sg2tb

自動マウント設定、fstabに追記。
sudo vi /etc/fstab

//ubuntu2600k/sg2tb/ /mnt/sg2tb cifs vers=3.0,username=hyperbanana,password=******,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0

いままでqnap.localなどのホスト名で指定していましたが、どうやら駄目みたいなのでIP直打ちに変更しました。cifsはバージョン指定なしだとver1になるみたいなのでVers=3.0を追加。

マウント
sudo mount -a

マウント確認
df -Th | grep mnt

windows10から接続するとこんなかんじ。

ubuntu2600k NAS 問題発生

新しいZPOOLに宛先を変えてから、どうも調子がわるいのです。主にUbuntu(Ryzen9-5900X)からファイルをコピーすると駄目なよう。

madmaxでは最後のコピーフェーズが失敗し、無限コピー地獄になります。

手動でコピーしてみてもエラー。

ubuntu nas側のdmesgを見ると、「Out of Memory」と。ああ、メモリ不足?調べるとswapが2GBしかないので増やしてみます。

ubuntuのSWAPを増やす

確認
swapon -s

swapfileがすでにあるのでswapfile2を増やします。とりあえず8GBで。
sudo fallocate -l 8G /swapfile2

rootの読み書き専用。
sudo chmod 600 /swapfile2

swapとして設定
sudo mkswap /swapfile2

swapfile2をマウント
sudo swapon /swapfile2

確認
swapon -s

自動マウント設定、fstabに追記。
sudo vim /etc/fstab

/swapfile2 none swap sw 0 0

再起動
sudo shutdown -r now

確認
swapon --show

さてこれでRAMが8GB、Swapが10GBになりました。

ubuntuからコピーしてもエラーは出なくなりましたが、速度が凄まじく遅いです。スワップ使いまくり。マウント時のCIFSのバージョンを3にしたり、.localを使うのやめたり試行錯誤しましたが改善せず。

結局SMBやめてNFSすることで解決しました。

ubuntuにNFSを設定する

おまじない
sudo apt update
sudo apt upgrade

NFSインストール
sudo apt install nfs-kernel-server

設定ファイルに追記
sudo vi /etc/exports

/mnt            192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/mnt/sg2tb      192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)

共有するルートディレクトリも書かないといけないらしいので/mntも記載。

設定反映
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server

クライアント側ubuntuにて。
sudo apt install nfs-common

マウントポイント作成、一応smbとは分ける。
sudo mkdir /mnt/sg2tb_nfs

マウント
sudo mount -t nfs ubuntu2600k:/mnt/sg2tb /mnt/sg2tb_nfs

無事にマウントされました。

fstabに書いてもいいけど、NFSはサーバー側が落ちると厄介らしいので、使うときだけ手動マウントすることにしようかなと思います。いい案あったら教えて下さい…

一応これでコピー速度も300sec強にもどりましたし、swapが消費されることもなくなりました。

もう少し様子みて何かあれば追記・編集します。