3台のカメラの録画領域が2日弱でローテーションしているみたいです.せめて2週間くらいさかのぼってみたいのでディスク増設を検討してみます.現在のZoneMinderの録画領域は約200GBです.これで約2日の録画ができますので2TB以上のディスクを増設すればよさそうです.
事前準備
当方の環境の都合でProxmox VEのVMの環境変更が必要でした.それについての詳細はこちらにまとめています.
データ領域用ディスクの選定と購入
Proxmox VEの物理サーバ(インテルのNUCなので2.5インチまで)に収まりかつそこそこ大容量(でかつ安価でないと困る)のHDDとして東芝のHDD MQ04ABD200(2TB)を選択しました.本当はMQ04ABD400(4TB)にしたかったのですが,このHDDの厚さが15mmでNUCに収まりません.2022/6/13現在,価格.comでの最安が6千円代でヨドバシでも7千円ちょっとなのでヨドバシで購入することにしました.注文は6/13で翌日には届きました.
ディスクの交換
交換前のディスク構成です.
525GBのSSDが接続されています.これを今回購入したディスクと交換します.PVEのもとで動作しているOSとPVEを停止し,ディスクの交換を行います.
ディスク交換後の画面です.正しく認識されていることを確認します.
ディスクのPVEへの登録
PVEに追加したディスクはそのままではVMで利用することはできません.LVMかZFS(かDirectory)に登録する必要があります.管理者がPVEで管理しやすいファイルシステムを選択しましょう.今回は追加ディスクをLVMに登録します.LVMを選択した理由は簡単で利用できる容量がLVMのほうが多かった(今回のディスクで約90GBの差がありました)というものです.
それでは新規ディスクをLVMに登録していきます.LVM画面の上部にある「Create: Volume Group」をクリックします.
Diskには新規に追加された/dev/sdaをNameにはVG名を入力し「Create」をクリックします.
以下のように新たなVolume Group(lvm-zm)が作成されます.
追加ディスクのVMへの割り当て
追加したLVMの領域をVMへ割り当てます.追加したいVM(今回はZoneMinderが動作しているVM)を選択しHardwareをクリックします.
画面上部の「Add」をクリックするとプルダウンメニューが現れますので,その中の「HardDisk」を選択します.
HardDiskの追加画面が表示されますので,StorageとDisk sizeを入力して「Add」をクリックします.なお,その他の値も環境にあわせて適宜変更してください.
以下のように「Hard Disk(scsi1)」として追加されました.
ちなみに「1860」という数字は10GB単位で入力してエラーがでない最大の数字です(今回のディスクでの値).試行錯誤するときは許容範囲の値だと実際作成されてしまいますので,大きい値からいれていくといいでしょう.
VMでのディスクの設定
PVEでVMへのディスクの割り当てがすんだらVMでディスクの設定を行います.以下の操作はZoneMinderが動作しているOSにログインしスーパーユーザ権限で作業を行います.
ファイルシステムの選定
ZoneMinderが動作しているOSはfedora35ですので様々なファイルシステムを利用することができます.今回は将来の容量の拡張を考慮してLVM上にxfsを作成することにします.
追加ディスクの確認およびpartedでの設定
以下のコマンドを実行してディスクが追加されていることを確認します.scsiデバイスとして追加しましたのでlsblkにSオプションをつけて確認します.
# lsblk -S
NAME HCTL TYPE VENDOR MODEL REV SERIAL TRAN
sda 2:0:0:0 disk QEMU QEMU HARDDISK 2.5+ drive-scsi0
sdb 2:0:0:1 disk QEMU QEMU HARDDISK 2.5+ drive-scsi1
sr0 1:0:0:0 rom QEMU QEMU DVD-ROM 2.5+ QM00003 ata
#
つづいてpartedコマンドで容量を確認します.
# parted -l
(途中略)
Error: /dev/sdb: unrecognised disk label
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 1997GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(途中略)
#
追加ディスクが/dev/sdbと特定できました.確認できたら追加ディスクにパーティションを作成していきます.
# parted /dev/sdb
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
Partition Tableをgptに設定します.
(ここに画像をいれる)
partedで表示される単位をMB単位に変更します.
(parted) unit mb
(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 1997160MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
つづいてパーティションを作成します.
(parted) mkpart
Partition name? []?
File system type? [ext2]?
Start? 1
End? 1997159
(parted) p
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 1997160MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1.05MB 1997159MB 1997158MB ext2
Flagsをlvmに変更します.
(parted) set
Partition number? 1
Flag to Invert? lvm
New state? [on]/off? on
(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 1997160MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1.05MB 1997159MB 1997158MB ext2 lvm
最後にquitコマンドでpartedを終了します.これで/dev/sdb1が利用可能となりました.
LVM設定
追加ディスク/dev/sdb1上にLVMの論理ボリュームを作成するまで(xfsを作成する直前まで)を説明します.
物理ディスクをLVMの制御下におく
物理ディスクをLVMの制御下におきます.現在のLVMで制御されているディスクの一覧をpvdisplayコマンドで表示します.
# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name fedora_fedora
PV Size <252.01 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 64513
Free PE 1
Allocated PE 64512
PV UUID 0UMO3B-PkL2-LVNm-vT0W-UsI3-P0OB-POiqet
zm(root)[160][9:50]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 fedora_fedora lvm2 a-- 252.00g 4.00m
#
/dev/sdb1をLVMの制御下におきます.pvcreateコマンドを実行します.
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
#
再度pvdisplayコマンドを実行して/dev/sdb1がLVMの制御下にあることを確認します.
# pvdisplay
(途中略)
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <1.82 TiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 7DrqX5-2nGe-4uGZ-4fPh-Pttm-3d9T-KBRFai
#
Volume Groupへの登録
Volume Group(以下VGと略)とは簡単に言うとさきほどLVM制御下においたディスクをまとめたものです.物理ディスクが一つの場合もあるし複数の場合もあります.あとから追加することも削除することも可能です.このVGから論理的なボリューム(これをLogical Volume(LV)といいます)を切り分けて,その上にextやxfsなどのファイルシステムを作成し一つのパーティションとして利用していきます.
今回のシステムではLVMを利用しているため既存のVGが一つありますが,ZoneMinder専用のVGを作成します.
最初にvgdisplayコマンドで現在のVGの一覧を表示します.
# vgdisplay
--- Volume group ---
VG Name fedora_fedora
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 252.00 GiB
PE Size 4.00 MiB
Total PE 64513
Alloc PE / Size 64512 / 252.00 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID zzi0SP-myF4-8Ihd-w3yr-0oo3-XWlT-kUjJQf
#
/dev/sdb1をVGに登録します.VG名は「vg_zm」とします.
# vgcreate vg_zm /dev/sdb1
Volume group "vg_zm" successfully created
#
vgdisplayコマンドでVGが登録されたことを確認します.
# vgdisplay
--- Volume group ---
VG Name vg_zm
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <1.82 TiB
PE Size 4.00 MiB
Total PE 476159
Alloc PE / Size 0 / 0
Free PE / Size 476159 / <1.82 TiB
VG UUID J1DeY1-ZgzT-1ZPY-gMHo-lJdz-gGxa-owtiP4
--- Volume group ---
(途中略)
#
論理ボリュームの作成
VGから論理ボリューム(以下LVと略)を切り出します.利用するVGは先ほど作成したvg_zmで新規に作成するLV名をdata01,容量はVGの残り全部とします.
# lvcreate -n data01 -l 100%FREE vg_zm
Logical volume "data01" created.
#
vg_zmのLVの確認を行います.
# lvdisplay vg_zm
--- Logical volume ---
LV Path /dev/vg_zm/data01
LV Name data01
VG Name vg_zm
LV UUID HdYZFf-wZwd-17bf-mcsQ-YB3W-I44J-fDBPW6
LV Write Access read/write
LV Creation host, time zm.yo7612.net, 2022-06-15 10:32:11 +0900
LV Status available
# open 0
LV Size <1.82 TiB
Current LE 476159
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
#
この論理ボリュームのパス名は「/dev/vg_zm/data01」となります.このパス名は後ほどxfsを作成するときに利用します.
xfxの作成
LV上にxfsを作成します.
# mkfs.xfs /dev/vg_zm/data01
meta-data=/dev/vg_zm/data01 isize=512 agcount=4, agsize=121896704 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=487586816, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=238079, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
#
ZoneMinderデータ領域の新規ディスクへの移行
ZoneMinderのデータ領域を新規ディスクへ移行します.
ZoneMinderの停止
データ移行中はZoneMinderを停止しておきます.
# systemctl stop zoneminder
新規ディスクの仮マウント
新しく追加したxfsのLVを仮のマウントポイントへマウントします.マウントポイントは既存のものを利用するかあらかじめ作成しておきます.
# mount /dev/vg_zm/data01 /mnt
データ領域の移行
ZoneMinderのデータ領域は /var/lib/zoneminder に設定されています.このディレクトリの下にあるすべてのディレクトリおよびファイルを先ほどのディレクトリへコピーします.
# cd /var/lib/zoneminder
# tar cf - . | ( cd /mnt ; tar xf -)
コピーが完了したら/mntをアンマウントしておきます.データ量約243GBを77分でコピー完了しました.(約53MB/秒)
# umount /mnt
マウントポイントの組み換え
データのコピーが終わったらマウントポイントの組み換えを行います.
# cd /var/lib
# mv zoneminder zoneminder.old
# mkdir zoneminder
# chown apache.apache zoneminder
# mount /dev/vg_zm/data01 /var/lib/zoneminder
ZoneMinderの起動・動作確認
ZoneMinderを起動し動作確認を行います.
# systemctl start zoneminder
/etc/fstabの修正
今回追加したボリュームについて,OS再起動時に自動的にマウントするように/etc/fstabを修正します.以下の行を追加します.
/dev/mapper/vg_zm-data01 /var/lib/zoneminder xfs defaults 0 0
OSの再起動および動作確認
OSを再起動しfstabの設定が有効であることとZoneMinderが正常に動作していることを確認します.
古いデータの削除
/var/lib/zoneminder.oldに古いデータが残っていますので削除します.
# cd /var/lib
# \rm -rf zoneminder.old
こちらの所要時間は5分弱でした.(データ容量は200GB超え)
これで,ZoneMinderのデータ領域拡張の作業は完了です.
コメント