Wstępne założenia do wymiany wirtualnego dysku i przeniesienia nagrań na udział sieciowy NFS
Maszyna wirtualna Proxmox VE na której był zainstalowany ZoneMinder miała do tej pory podłączone 2 wirtualne dyski: 16 GB (montowanie /) i 384 GB (montowanie /var). Gdy brakowało miejsca na partycji /var wtedy z poziomu Proxmox VE w menu Hardware – Disk – Action – Disk Resize dodawałem potrzebne miejsce. Jednak znacząco wydłużał się backup całej maszyny wirtualnej i trzeba było pilnować kończącego się miejsca na partycji /var. 384 GB w praktyce pozwalało przechowywać ok 5 dni dla 4 kamer Full HD. Przy okazji wdrożenia openmediavault w swojej sieci jako centralnego miejsca do składowania danych przez protokoły NFS i SMB/CIFS postanowiłem zmniejszyć obecną partycję /var z 384 GB do 16 GB a katalog z nagraniami z kamer umieścić na osobnym udziale sieciowym NFS 192.168.8.28:/video_cameras zamontowanym na serwerze ZoneMinder w katalogu /mnt/recordings. Najprostszym sposobem na migrację danych partycji /var jest zatem dodanie nowego dysku Proxmox VE o wielkości 16 GB do maszyny wirtualnej ZoneMinder, skopiowanie potrzebnych plików z obecnego /var na nowy podmontowany w /newvar oraz po całej operacji zamontowanie /var na nowym sporo mniejszym dysku.
Procedura podmiany dysku na inny ze skopiowaniem obecnych danych w punkcie montowania /var
# sprawdzamy jakie oznaczenie ma nowo podłączony w konsoli Proxmox dysk lsblk #NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 63.3M 1 #loop /snap/core20/1879 loop1 7:1 0 63.5M 1 #loop /snap/core20/1891 loop2 7:2 0 79.9M 1 #loop /snap/lxd/22923 loop3 7:3 0 111.9M 1 #loop /snap/lxd/24322 loop4 7:4 0 53.2M 1 #loop /snap/snapd/18933 loop5 7:5 0 53.2M 1 #loop /snap/snapd/19122 #sda 8:0 0 16G 0 disk # ├─sda1 8:1 0 1M 0 part # └─sda2 8:2 0 16G 0 part / #sdb 8:16 0 384G 0 disk # └─sdb1 8:17 0 384G 0 part /var #sdc 8:32 0 16G 0 disk #sr0 11:0 1 1024M 0 rom # tworzymy jedną duża partycję na nowym dysku sdc parted /dev/sdc #GNU Parted 3.4 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt (parted) mkpart primary ext4 0% 100% (parted) print #Model: QEMU QEMU HARDDISK (scsi) #Disk /dev/sdc: 17.2GB Sector size (logical/physical): 512B/512B #Partition Table: gpt #Disk Flags: Number Start End Size File system Name Flags 1 1049kB 17.2GB 17.2GB ext4 primary (parted) q #Information: You may need to update /etc/fstab. # po wyjściu (q) z parted formatujemy dysk sdc1 w systemie EXT4 mkfs.ext4 /dev/sdc1 #mke2fs 1.46.5 (30-Dec-2021) Discarding device blocks: done Creating filesystem with 4193792 4k blocks and 1048576 inodes #Filesystem UUID: 3a08614d-b125-454f-9491-c74934f7903d #Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 #Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done #Writing superblocks and filesystem accounting information: done # wyłączamy i usuwamy swapa z partycji /var jeśli się tam znajduje sudo swapon --show #NAME TYPE SIZE USED PRIO /var/swap file 4G 0B -2 sudo swapoff /var/swap rm -rf /var/swap # zatrzymujemy usługę zoneminder oraz systemd-journald systemctl stop zoneminder systemctl stop systemd-journald # usuwamy stare nagrania lub kopiujemy je w bezpieczne miejsce rm -rf /var/cache/zoneminder/events/ # sprawdzamy czy jakieś usługi / procesy nie blokują obecnego dysku na którym jest partycja /var lsof /var #COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME #systemd-j 445 root mem REG 8,17 8388608 3670176 /var/log/journal/f740f8a2bb7e45d487906c5d8271f9d7/user-1000.journal #systemd-j 445 root mem REG 8,17 8388608 3670286 /var/log/journal/f740f8a2bb7e45d487906c5d8271f9d7/system.journal #systemd-j 445 root 22u REG 8,17 8388608 3670176 /var/log/journal/f740f8a2bb7e45d487906c5d8271f9d7/user-1000.journal #systemd-j 445 root 25u REG 8,17 8388608 3670286 /var/log/journal/f740f8a2bb7e45d487906c5d8271f9d7/system.journal kill -9 445 # przechodzimy w tryb init 1 init 1 # tworzymy nowy tymczasowy punkt montowania /newvar i montujemy do niego nowo sformatowany dysk sdc1 mkdir /mnt/newvar mount /dev/sdc1 /mnt/newvar/ # kopiujemy obecne dane z /var do /newvar cp -apx /var/* /mnt/newvar/ # odmontowujemy obecny /var umount -f /var # jeśli powyższe polecenie nie pozwoli odmontować /var to należy użyć trybu lazy umount -l /dev/sdb1 # dla bezpieczeństwa zmieniamy jeszcze obecny katalog /var na /var.off/ mv /var /var.off # tworzymy nowy katalog /var i montujemy do niego nowy dysk mkdir /var mount /dev/sdc1 /var # tworzymy na nowo swapa sudo fallocate -l 4G /var/swap mkswap -f /var/swap chmod 0600 /var/swap sudo swapon /var/swap # poprawiamy /etc/fstab w zależności kiedy zrobimy usunięcie starego dysku 384 GB z konsoli Proxmox # tak powinno być gdy stary dysk jest cały czas obecny w maszynie wirtualnej ZoneMinder /dev/sdc1 /var ext4 defaults 0 1 # tak powinno być po usunięciu już starego dysku 384 GB z Proxmox /dev/sdb1 /var ext4 defaults 0 1
Tak wygląda obecnie mój /etc/fstab gdy nie ma już starego dysku 384 GB.
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during curtin installation /dev/disk/by-uuid/dbf6717c-f9cf-4d0a-b2a0-e96b3b5db705 / ext4 defaults 0 1 # /var was on /dev/sdb1 during curtin installation #/dev/disk/by-uuid/584fcb36-4282-40fd-a012-7f14698cd8b4 /var ext4 defaults 0 1 /dev/sdb1 /var ext4 defaults 0 1 /var/swap none swap sw 0 0 192.168.8.28:/video_cameras /mnt/recordings nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.8.31,local_lock=none,addr=192.168.8.28 0 0
Dodanie nowego Storage w ZoneMinder i zmiana konfiguracji miejsca zapisu dla kamer
W menu Options – Storage – Add New Storage dodajemy nowy Storage. Wcześniej oczywiście montujemy udział sieciowy NFS 192.168.8.28:/video_cameras w katalaogu /mnt/recordings i zakładamy w nim katalog /zoneminder/events/ aby cała ścieżka miała postać: /mnt/recordings/zoneminder/events/
Następnie poprawiamy w konfiguracji każdej z kamer w menu Storage – Storage Area – recordings
Poprawienie filtrów do automatycznego porządkowania danych w konsoli ZoneMinder
Filtr: PurgeWhenFull może mieć teraz wartość 75 a nie jak poprzednio 97.
Filtr DeleteOldEvents może mieć teraz wartośc -14 day a nie jak poprzednio -5.
W zależności który z warunków zostanie spełniony jako pierwszy wtedy odbędzie się automatyczne czyszczenie i usuwanie starych nagrań.
Tworzenie potrzebnych udziałów sieciowych NFS openmediavault









