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が消費されることもなくなりました。
もう少し様子みて何かあれば追記・編集します。
ディスカッション
コメント一覧
Ubuntuの場合ですと、fstabに記載してあるNFS領域が
起動時に見えなくてもすぐに諦めてBoot完了してくれますので、
fstabに書いておいても大丈夫かと思います!
※CentOSだと、すっごい遅いので気をつけてください。
毎日更新を楽しみにしていますので、
ブログ頑張ってください!
非常に参考にしております!
なるほど、それならfstabに書いちゃっても問題なさそうですね、ありがとうございます!
ブログは最近毎日更新が辛くなってきていますが、ネタが有る限りがんばります
いつも拝見させて頂いてます。
NFSはマウント済み状態のままNFSサーバ側とのNWが遮断されるとdfやlsを叩いても応答がなくなってしまいます。
逆に言うと、lsをバックグラウンドで実行して、その挙動を定期的に監視することでNFSマウントを制御できます。
例えば、正常時であれば ls /mnt/sg2tb_nfs は問題なく返ってきますが、異常時はバックグラウンドでlsプロセスは残存しているので、
10秒経ってもlsプロセスが存在する場合はlsをkillした後に umount -l /mnt/sg2tb_nfs で強制アンマウントできます。
その後、mountで/mnt/sg2tb_nfsをマウントするようなコマンドを定期実行しリターンコードが 0 になった時点で再マウント完了というようなシェルを組んでシェルをバックグラウンドで実行するか、cron実行するかなどでNFS監視&マウント制御が可能と思われます。
ご参考になれば幸いです。
詳しい解説ありがとうございます。
参考にします!