Mac BookがHDD容量少なくなってきたので、使っていないマザボやケースを使ってNASサーバを立てて、そこに全部入れてしまおうと思った。作業内容を記録しておく。 最初は市販のNASにしようかと思ったが、使っていないマザボとケースがあったので、それを使って作った方が安上がりかなと思ったので、市販のものはやめた。
参考にした記事
- 【Ubuntu 18.04 LTS Server】インストールする
- 【Ubuntu 18.04 LTS Server】ネットワーク設定を固定IPに変更
- UbuntuをSSDにインストール
- Ubuntu USBにswap領域を確保する
- スワップされて困っちゃうのでswappinessを設定する
- Is TRIM enabled on my Ubuntu 18.04 installation?
- /etc/fstabについて その1
- 大容量HDDをparted (GNU Parted)でフォーマットして使えるようにする手順
- 2014-07-31 UbuntuでRAID1を構築してみる
- SambaでWindowsファイル共有を行う正しいやり方
- pdbedit
- rsyncでconfigファイルを使ってssh接続を簡単にする
- Ubuntu 18.04.1を新規インストールするときはapt lineに注意しよう
- 指定した拡張子のファイルだけ同期する
NASとして欲しい機能
- Raidは1で十分(バックアップは別のHDDに取る)
- GUIは要らない。
- Sambaを使う
- 定期的にフォルダを同期したい
- メディアサーバとして使いたい
- 何か問題があった時にどこから手をつけて良いか分かる仕組みを使いたい
- 重複ファイルを消したい
- SSD起動
OSの選定
最初はNAS4Freeを入れてzfsにしてみたんだけど、問題があった時にややこしそうなのでやめた。慣れているUbuntuのGUI無し版を使うことにした。
インストール
USBインストーラーの準備
SSDへのインストール
- USBインストーラーを起動
- 言語設定はEnglish
- キーボードはJapanese
- 固定IPの設定をする(DHCPだとIPが変わるから)
- Proxyは入力しない
- Use An Entire Disk
- HDDの選択
- フォーマットとか選択
- ユーザー情報の入力
インストール後にIPを変更する
/etc/netplan/50-cloud-init.yamlを変更
swap領域をSSDの外(USB)に設定
USBはFATでフォーマットされている
sudo cat /proc/swaps
sudo swapoff -a (必要なら)
sudo fdisk -l
sudo umount /dev/sda1 (sdaがUSBの場合)
sudo mkswap -c /dev/sda1
sudo swapon /devsda1
/etc/fstabを次のように設定
/dev/sda1 swap swap defaults 0 0
メモリのスワップ設定
/etc/sysctl.confに以下を追記
vm.swappiness = 10
反映
sysctl -p
よく書き込むフォルダをSSDの外に設定
- /tmp, /var/tmp, /var/logをRamディスクに設定
/etc/fstabを次のように設定
tmpfs /tmp tmpfs defaults,noatime,size=128m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,size=512m 0 0
tmpfs /var/log tmpfs defaults,noatime,size=128m 0 0
TRIMの設定
Ubuntu18.04では最初から設定されてた
ディスクI/Oスケジーラの設定
SSDのアルゴリズムをdeadlineアルゴリズムに変更する
echo deadline >/sys/block/sda/queue/scheduler
パッケージのバージョン追加
Ubuntu 18.04 Serverは/etc/apt/sources.listでmainリポジトリしか有効にしていないので、restricter, universe, multiverseを追加しておく
deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
HDD2つを使ってRAID1を組む
GPartedを使ってHDDをフォーマット
parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart
primary (partition name)
ext4 (file system)
0% (start)
100% (end)
mdadmは最初から入ってる
RAID1作成
sdb, sdcを使ってRAID1を作ると仮定する。
mdadm -C /dev/md0 -l1 -n2 --assume-clean /dev/sd[bc]1
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
状態確認
cat /proc/mdstat
activeとか出てればおk どのデバイスを使ったかも表示できる
Sambaを使う
インストール
sudo aptitude install samba
設定
/etc/samba/smb.confを修正
[global]
dos charset = CP932 #文字コード
unix charset = UTF8 #文字コード
load printers = no #共有プリンタ設定をはずす
printing = bsd #共有プリンタ設定をはずす
printcap name = /dev/null #共有プリンタ設定をはずす
[<share name>]
path = /path/to/share
read only = no #書き込み許可
guest ok = yes #ゲストでのアクセスを許可する
確認
testparm
アカウント追加
sudo pdbedit -a -u <username>
定期的なフォルダ同期
rsyncを使う 外部サーバとの同期(外部サーバ->ローカルサーバ)なので、公開鍵認証を設定しておく(そこらへんの設定は省略)。sshの設定名をhogeと仮定する。
同期の確認
rsyncを打って、実際に同期するか確認する
rsync -a hoge:/path/to/share/from /path/to/share/to
拡張子txtのものだけを同期
rsync -a --include="*.txt" --exclude="*" hoge:/path/to/share/from /path/to/share/to
cronを設定
crontab -e
0 6 * * * rsync -a --include="*.txt" --exclude="*" hoge:/path/to/share/from /path/to/share/to
これで毎日6時に同期してくれる