ZoneMinderの録画用HDDを新規追加する方法

HDDを新規追加し、既存データを移行する段取りを紹介します。またZoneMinderはカメラ10台程度であれば、3MByte/秒以上(カメラ1台当たり80kbyte~500kbyte)の書き込みが出来ればいいことから、HDDにはわざとCMRではなくSMR(瓦)の2.5inch HDDを利用しています。

初めに

この投稿では2TBのHDDに引っ越ししていますが、引っ越し前はST1000LM048×2台でLinuxのソフトウェアRAIDを組み、うち500GByteを監視カメラ用の領域として利用していました。

防犯カメラ用のHDDと言うと、一般的には録画用途に専用設計されたHDDを思い浮かべるかと思います。有名どころではWD(ウェスタンデジタル)のPurpleシリーズと、SeagateのSkyhawkです。
まともなメーカーのDVRの場合には、PurpleやSkyhawk等の防犯カメラ専用に売られているHDDでないと、認識すらしてくれないこともある為、SHOP店員さんに「防犯カメラの録画用HDDをください」と言うと、それらシリーズを進められることが多いです。

しかし、PurpleもSkyhawkも高価な為、庶民的な価格のHDDを用いて(必要ならRAID1を組んで)録画データを記録したい為、私は敢えてSMRのHDDを利用しています。Linuxで認識可能なHDDで、かつ速度がある程度出れば利用可能な点もZoneMinderならではの利点ですね。

私は、5インチベイに3.5インチHDDをスロットインで搭載するケースを利用していることもあり、今回24時間365日運用の消費電力削減も狙って東芝の「MQ04ABD200」を購入しました。お値段6000円程度です。

※WDのPurple3TBはAmazonでも9000円程度です。特にこだわりが無ければPurple3TBでも良いかと思います。
※市販品のDVRを利用する場合には、DVRがサポートしているHDD以外は認識しない可能性があります。

引っ越し作業(旧HDD⇒新HDDへ)

引っ越し作業は以下の流れで実施します。

  1. 新HDDの物理的な取り付け(ケース内部にねじ止めし、電源、SATAケーブルを接続する)
  2. 新HDDのパーティション作成とフォーマット
  3. ZoneMinderの停止(データ引っ越し中に常時録画されると困る為)
  4. 旧HDD⇒新HDDへデータを移動
  5. /etc/fstabの記載とマウントテスト
  6. ZoneMinderの開始
  7. テスト:再起動後に想定した動作となる事を確認

1.新HDDの物理的な取り付け(ケース内部にねじ止めし、電源、SATAケーブルを接続する)

筐体を開けて、HDDの取り付けを適宜行って下さい。2.5インチのHDDを一般的なPCケースに取り付ける場合にはマウンタが必要です。400円ぐらいです。5インチベイに2.5インチHDDを4台取り付け可能な物だと、こういった製品もありますが、少し割高です(私は利用しています)。

2.新HDDのパーティション作成とフォーマット

fdiskに「-l」オプションを付けて実行することで、対象HDDの情報が確認可能です。
今回取り付けたHDDの型番、容量が表示されるHDDがどれかを確認します。
ちなみに、当環境では/dev/sdeでした。

sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sdb
sudo fdisk -l /dev/sdc
sudo fdisk -l /dev/sdd
sudo fdisk -l /dev/sde
sudo fdisk -l /dev/sdf

# Disk /dev/sde: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
# ↑★ここで/dev/sdeであることを確認
# Disk model: TOSHIBA MQ04ABD2 ←★ここで東芝のMQ04ABD2である事を確認
# Units: sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 4096 bytes
# I/O size (minimum/optimal): 4096 bytes / 4096 bytes

sudo fdisk /dev/sde

# nで新規パーティション追加を指定し、後は、デフォルトを選択。
# 最後にwで保存して終了
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-3907029167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, default 39070291

Created a new partition 1 of type 'Linux' and of size 1.8 TiB.

Command (m for help): w

sudo mkfs.ext4  /dev/sde

3.ZoneMinderの停止(データ引っ越し中に常時録画されると困る為)

単純にZoneMinderを停止させます。

sudo systemctl stop zoneminder.service

4.旧HDD⇒新HDDへデータを移動

/mnt/tmpディレクトリを作成し、そこに一時的に新HDDの領域をマウントしてデータ移動します。ZoneMinderで録画先として指定している領域のデータを新HDDに移動させます。

以下では移動元を「/var/cache/zoneminder/events」としていますが、ZoneMinderの管理画面「オプション⇒Storage」から確認可能です。

mkdir /mnt/tmp
sudo mount /dev/sde1 /mnt/tmp

cd /var/cache/zoneminder/events
sudo mv ./* ../tmp/

# 最後にマウントを外しておく
sudo umount /mnt/tmp

ディスク容量によりますが、上記作業は1時間以上かかると思いますので、終わるまでひたすら待ちます。

5./etc/fstabの記載とマウントテスト

ずっと昔は/etc/fstabには/dev/sde1がどこにマウントされるかを記載するのが主流だったのですが、HDDの接続先を変更するだけで、sdeだったものがsdcになったりと不安定要素となります。

ですので、最近の流行に倣って/etc/fstabはUUIDで記載します。

# UUIDを確認する
sudo tune2fs -l /dev/sde1 | grep UUID
Filesystem UUID:          db2972c3-1c69-4101-90e4-7c778d8f93aa

# /etc/fstabを記載する
sudo vi /etc/fstab

# 以下のように追記します。
# viを上書きして終了するのは、「ESCキー」を押してから「:wq」エンターです
/dev/disk/by-uuid/db2972c3-1c69-4101-90e4-7c778d8f93aa /var/cache/zoneminder/events ext4 defaults 0 0

# マウントテスト
sudo mount -a

df
/dev/sde1      1921802520   89125920 1734984540   5% /var/cache/zoneminder/events 
# ↑dfの結果、/etc/fstabに記載した領域がマウントされている事

6.ZoneMinderの開始

開始処理で変なエラーが出ないことと、ZoneMinderの管理画面にログインし、各種カメラが正常に録画されている事等を確認します。

sudo systemctl start zoneminder.service


7.テスト:再起動後に想定した動作となる事を確認

再起動し、再起動後も問題なく動くことを確認します。

sudo reboot

# 再起動後にサービスのステータスと、dfコマンドで追加したHDDが見えていることを確認
sudo systemctl status zoneminder.service
df

「6.ZoneMinderの開始」で実施した確認作業を再度実施し、問題なければ完了です。

最後に

最近のHDDは殆どがSMRになってきていることから、防犯カメラ用HDDについてもSMRのHDDが利用できることを確認できれば、安価に録画システムを構築することが出来ます。更に、2.5インチHDDが利用可能であれば、容量は小さいですが、消費電力を抑えることが出来ます。