Date Modified Tags linux

Mac BookがHDD容量少なくなってきたので、使っていないマザボやケースを使ってNASサーバを立てて、そこに全部入れてしまおうと思った。作業内容を記録しておく。 最初は市販のNASにしようかと思ったが、使っていないマザボとケースがあったので、それを使って作った方が安上がりかなと思ったので、市販のものはやめた。

参考にした記事

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時に同期してくれる