5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作のファイルサーバー(NAS)をLinuxで作成&もう一つのHDDに定期的にバックアップさせて冗長性確保

Last updated at Posted at 2019-10-13

#きっかけ
・研究室のファイルサーバーがクラッシュしてしまった
 僕「どうにもならんなぁ。一から作り直してみるか」
・どうせ作り直すなら良いものを
 

#用意したもの
・Linux PC (僕の環境では Vine Linux)
・外付けHDD等ローカル内で共有したいドライブ×2

#目指したもの
こんな感じのものを目指してみた
・メインのHDDはSambaでファイル共有
・バックアップ用のHDDは週に一度メインのHDDと同期することでバックアップ(gmail等で同期が正常に終了したか通知)
・もちろん同期は自動で

server_hdd_demo.jpg

メインのHDDが寿命かなんかでクラッシュした時はバックアップ用のHDDからデータ救出できるはず
(もっとスマートなやり方があったら教えてください)

#手順

##自動マウント(/etc/fstab)の設定
外付けドライブをext4でフォーマットする
ここではsdb1をメインHDD、sdc1をバックアップhddとする
※速度的にはext4が良いらしいがWindows PCでもマウントしたい場合はFAT系が良いかも

[root@hoge ~]# mkfs -t ext4 /dev/sdb1
[root@hoge ~]# mkfs -t ext4 /dev/sdc1

外付けドライブをLinux PCに接続し、`blkid`でUUIDを確認する
[root@hoge ~]# blukid
/dev/sda1: LABEL="/boot" UUID="a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1" TYPE="ext4" 
/dev/sda2: UUID="a2a2a2-a2a2-a2a2-a2a2-a2a2-a2a2-a2a2a2" TYPE="LVM2_member" 
/dev/mapper/VolGroup00-LogVol00: UUID="11111111-2222-3333-4444-555555555555" TYPE="ext4" 
/dev/mapper/VolGroup00-LogVol01: UUID="swapswap-swap-swap-swap-swapswap" TYPE="swap" 
/dev/sdb1: UUID="b1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1" TYPE="ext4" 
/dev/sdc1: UUID="c1c1c1c1-c1c1-c1c1-c1c1-c1c1c1c1c1c1" TYPE="ext4" 

sdb1(メインHDD)のUUIDはb1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1
sdc1(バックアップHDD)のUUIDはc1c1c1c1-c1c1-c1c1-c1c1-c1c1c1c1c1c1


先にマウント先を作っておく (権限に注意 あとでchmodで変更はできるけど)
[root@hoge ~]$ mkdir /home/username/mainhdd/
[root@hoge ~]$ mkdir /home/username/backuphdd/

`/etc/fstab`を編集する
(/etc/fstab)
↓デフォルトではこんな感じの記述
/dev/VolGroup00/LogVol00 /                       ext4    defaults        1 1
LABEL=/boot             /boot                   ext4    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults,sw        0 0

↓以下を追記
UUID=b1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1 /home/username/mainhdd/ ext4 users,rw,defaults,nofail 0 0
UUID=c1c1c1c1-c1c1-c1c1-c1c1-c1c1c1c1c1c1 /home/username/backuphdd/ ext4 users,rw,defaults,nofail 0 0

アンマウント後に再びマウントすると設定したディレクトリにマウントされる

##ファイル共有システムデーモン(Samba)のインストールと設定

sambaをインストール(環境によっては元からインストールされてるかも)

[root@hoge ~]# apt update
[root@hoge ~]# apt install samba

sanbaの設定ファイルを開く
/etc/samba/smb.conf

↓以下を追記

[guest]
        comment = file server
        path = /home/username/mainhdd
        browsable = yes
        writable = yes
        read only = no
        force create mode = 0777
        force directory mode = 0777
        #force group = sambashare

デーモンを起動させる
[root@hoge ~]# /etc/rc.d/init.d/smb start
[root@hoge ~]# /etc/rc.d/init.d/nmb start

これでローカル内のクライアントからアクセスできる

##rsyncを使ってメインHDDからバックアップHDDに同期(バックアップ)

バックアップするためのスクリプトを作成する

backup.sh
a=`df -h |grep -o /home/username/mainhdd`
b=`df -h |grep -o /home/username/backuphdd`
if [ $a = "/home/username/mainhdd" -a $b = "/home/username/backuphdd" ]; then
flag=1
rsync -avzu /home/username/mainhdd/ /home/username/backuphdd --log-file=/home/username/backup.log
else
flag=0
fi

stat=$?

if [ $stat = 0 -a $flag = 1 ]; then
echo "研究室内サーバーの定期バックアップが正常に完了しました。(終了ステータス0)" | mail -s "自動バックップ完了" mail-address@hoge.jp
else
echo "研究室内サーバーの定期バックアップが失敗しました(終了ステータス0以外)。原因を確認してください" | mail -s "自動バックップ失敗" mail-address@hoge.jp
fi

〜スクリプトの簡単な説明〜
dfで二つのHDDがマウントされているか確認し、rsyncで同期する
・同期が正常に終了したか失敗したか判断し、メールで通知する


`backup.sh`の権限を変更する
[root@hoge ~]# chmod +x backup.sh

##cronによる定期バックアップの設定

crontab -eでcronの設定ファイルを編集する

分 時 日 月 曜日 (↓を追記)
00 17 * * 5 /home/username/backup.sh

この設定では毎週金曜日17時00分に/home/username/backup.shを自動的に実行するようになっている


cronを再起動する
再起動
[root@hoge ~]# /etc/init.d/cron restart

ステータス確認
[root@hoge ~]# /etc/init.d/cron status

これで週に一度自動的にバックアップされるようになる

#参考にしたサイト

・Samba関連
http://bamboo.chobi.net/linux/vinelinux/vinelinux-4.html

・cron関連
https://k99-tech.com/blog/archives/1141

有用な情報ありがとうございました

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?