ページ

2020年1月2日木曜日

自宅用ファイルサーバのリプレース

新年あけましておめでとうございます。

2020年に突入し、これまで自宅で使ってたファイルサーバも古くなってきたので、新しいものを構築していこうと思います。


はじめに

購入したものは以下の3品。すべてヨドバシカメラさんで購入しました。
購入当時でだいたい4万円ちょいって感じでした。

想定している内容は以下のような感じ。
  • Ubuntu 18.04 LTS を購入したパソコン本体にインストール
  • 購入した2台の外付けHDDを使ってソフトウェアRaidを構築
  • Sambaで共有
あとは可能なら以下も実施しておきたい。
  • Dockerをインストール
  • Windowsで運用しているRedmineを移設
ここまで実施できたらとりあえず目的は達成かな。本当は勉強も兼ねてGitlabも入れたいところですがそこはオプショナルかな。


Ubuntuのセットアップ

まずは必要なソフトウェアをダウンロード。
ダウンロードが完了したらUbuntuインストールのために、USBメモリを準備します。

インストーラの準備

UNetbootinを使ってUbuntuのISOイメージをUSBに焼きこみます。
ダウンロードしたUNetbootinを任意のフォルダで実行します。


ディスクイメージにダウンロードしたUbuntuのISOファイルを指定してOKボタンをクリック。ちょっと時間がかかりますが気長に待ちましょう。

Ubuntuインストール

インストーラの準備が完了したらLIVAZ-4/32(N3350)に挿して起動します。このときにちゃんとUSBから起動するようにBIOSの設定確認は忘れずに。

ちなみに何回も日本語環境作ろうとしてインストーラを動かしたのですが、何回やっても途中のソフトウェアの選択あたりで無限ループになり先に進まないので、試しに英語環境でインストールしてみたら一発でうまくいきました。
もしかすると国内のリポジトリが反応してなかったのかな??

このままだとリモートで繋げなくて設定がしづらいのでSSHで繋がるようにしましょう。

$ sudo apt install ssh

あとはリモートから日本語環境にすることにしました。
こちらのサイトを参考にさせていただきました。
まずは日本語パックのインストール。

$ sudo apt install language-pack-ja-base language-pack-ja ibus-mozc

このままではDHCPでIPアドレスを払い出してもらってる関係でIPアドレスが変わる可能性があるのでUbuntuは固定IPアドレスにしておきましょう。

$ sudo vi /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses: [192.168.20.2/24]
      gateway4: 192.168.20.1
      nameservers:
        addresses: [192.168.20.1]

もちろんこの例では192.168.20.2は使っているWiFiルータのDHCP機能が割り当てないようにしておきます。


ソフトウェアRaidを構築

おおよそUbuntuの準備はできましたので、いよいよ本題のソフトウェアRaid構築に進みます。もうここまで来たらモニタとキーボードは外しちゃおうかな。

さてそんなに慎重になることもないのですが、まずは1台ずつ接続してみます。
まずはWindows向けに設定されているパーティション情報を削除し再作成、そしてRAIDフラグをセットしましょう。

$ sudo parted /dev/sda
(parted) rm 1
(parted) rm 2
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) set 1 raid on

※デバイス名やパーティション番号は環境により異なります。

お次は2台目。こちらも同様に。
完了したらいよいよRAID1を構成します。

$ sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1

途中経過は以下のように確認します。

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1] sda1[0]
      2930132992 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  1.4% (43381376/2930132992) finish=274.5min speed=175214K/sec
      bitmap: 22/22 pages [88KB], 65536KB chunk

unused devices: 

どうやら4時間半くらいかかりそうですね。完了すると経過表示がなくなります。
ちなみになぜかmd0と指定したのに再起動したらmd127に変わりました・・・。よくあることみたいですね。改めて見てみたらこれまで使ってたCentOS6の環境もそうだったみたい。ということで実害はなさそうなのでそのままで。
あとはファイルシステムを作成&マウントして完了です。

$ sudo mkfs -t ext4 /dev/md127
$ sudo mkdir /share
$ sudo mount /dev/md127 /share

ちなみに参考にさせていただいたのはこちらのページ。
最後に起動時に自動でマウントするようにもしておきましょう。
Filesystem UUIDを確認して/etc/fstabに追記します。(以下は追記行のみ表示)

$ sudo tune2fs -l /dev/md127 | grep UUID
$ sudo vi /etc/fstab
UUID=xxxx  /share  ext4  defaults  1  2

これで再起動してマウントされていることが確認できればOKです。


Sambaのセットアップ

ここまで来たら、あとはSambaを入れてWindowsパソコンからアクセス可能にするだけですね。まずはSambaをインストールしましょう。

$ sudo apt install samba

次に家族だけアクセスできるように専用グループを作成し、自分(ここではxxx)を追加します。

$ sudo groupadd family
$ sudo usermod -aG family xxx

※このとき -a の付け忘れに注意しましょう。補助グループが上書かれてしまいsudoできなくなってしまいます。
そしてSambaにもユーザ登録します。

$ sudo pdbedit -a -u=xxx

対象のフォルダを作成して準備します。

$ sudo mkdir /share/common
$ sudo chgrp family /share/common
$ sudo chmod 2770 /share/common

※ここでchmod時にSGIDを指定するのを忘れずに。これを付けないとあるユーザが作成したフォルダに別のユーザがアクセスできなくなります。

最後にSambaの設定を変更します。

$ sudo vi /etc/samba/smb.conf

# [global]に以下の2行を追加
unix charset = UTF-8
dos charset = CP932

# コメント解除してアクセス制限範囲を指定
interfaces = 127.0.0.0/8 192.168.20.0/24

# コメント解除
bind interfaces only = yes

# 最終行に追記
# セクション名は共有名
[common]
    path = /share/common
    writable = yes
    create mode = 0770
    directory mode = 0770
    guest ok = no
    valid users = @family

編集完了後にsmbdを再起動してアクセスできていれば完了です。

$ sudo systemctl restart smbd

あとはこれまで使ってたファイルサーバからデータをコピーするだけですね。