Linux-pohjaisten NVR:ien rakentaminen

Yleiskatsaus

Tässä artikkelissa kuvataan yleiset vaiheet yhteistyökumppanille, joka haluaa valmistaa NVR:n kaltaisen laitteistotuotteen – sulautetun tietokoneen (jota tässä kutsutaan ”NVR:ksi”), jossa on esiasennettu palvelinsovellus. Tyypillisesti tällainen NVR on Linux-pohjainen tietokone, jossa on ARM-suoritin.

Perusvaiheet tällaisen tuotteen valmistamiseksi ovat seuraavat:

  • Laitteiston valinta
    • Alusta
    • Tallennustila
  • Linux-makujen valinta
  • Palvelinsovelluksen asentaminen
  • Lisäominaisuuksien käyttöönotto
  • Tukikäytännön määrittäminen

Näitä vaiheita kuvataan yksityiskohtaisesti jäljempänä.

Valitse laitteisto

Tuotteen menestyminen edellyttää, että se on kustannustehokas ja tarjoaa vaaditun suorituskyvyn – tukee haluttua määrää kameroita halutulla bittinopeudella/resoluutiolla. Käytettävässä laitteistossa olisi oltava vähintään 1 Gt RAM-muistia ja ARM Cortex A7 -piirisarja tai korkeampi.

Suositellaan, että tutkitaan ensin tuettujen ARM-alustojen suorituskykyä (luettelo tällaisista alustoista löytyy ARM:n tukikäytännöistä) ja valitaan sitten vaatimuksia lähinnä oleva alusta.

Alusta

Valittua tuettua ARM-alustaa voidaan käyttää jollakin seuraavista:

  • valmiiksi ostettu tietokone (esim. vakiomallinen Raspberry Pi -pääkortti), mahdollisesti mukautetulla kotelolla ja virtalähteellä varustettuna;
  • viitekehyksenä mukautetun tietokoneen suunnitteluun pääkortilla, joka voi sisältää ylimääräisiä laitteistokomponentteja, kuten oheislaiteliitäntöjä tai kiintolevyohjaimia.

Jos NVR:ssä odotetaan olevan palvelinsovelluksen lisäksi muita ohjelmistoja, kuten web-palvelin, joka tarjoaa käyttäjälle web-käyttöliittymän, videoanalyysiohjelmisto (esim. VMS-lisäosa ja/tai sen backend) tai vastaavaa, varmista, että siihen lisätään riittävästi RAM-muistia ja suorittimen prosessoritehoa.

Videon transkoodausta ei tueta ARM-laitteissa rajoitetun laskentatehon vuoksi. Lisäksi joillakin riippuvuuksilla, kuten OpenSSL:llä, voi olla yhteensopivuusongelmia. Jos alustava analyysi osoittaa, että tyypillinen ARM-pohjainen alusta ei tarjoa vaadittua suorituskykyä, voidaan harkita x64-alustaa.

Alustan tallennussuorituskyvyn tulisi olla riittävän hyvä suunniteltuun kuormitukseen. Tiedetään esimerkiksi, että sellaiset ratkaisut kuin SATA-over-USB voivat johtaa huonoon kiintolevysuorituskykyyn, joka ei riitä vaaditun kameramäärän tallentamiseen.

Alustan verkkosuorituskyvyn olisi oltava riittävän hyvä suunniteltua kuormitusta varten. Tiedetään esimerkiksi, että ohjelmistopohjaisen Ethernet-toteutuksen kaltaiset ratkaisut vievät paljon suorittimen resursseja, mikä voi johtaa ruutupudotuksiin kameroita tallennettaessa tai suoratoistoa asiakkaille lähetettäessä tai muihin ongelmiin. Lisäksi laitteistomalleissa, jotka toteuttavat ethernetin USB-keskittimen kautta, saattaa olla mainostettua pienempi verkon kaistanleveys.

Alustan tulisi olla varustettu reaaliaikakellolaitteistolla (Real-Time Clock, RTC) ja/tai ajan synkronointi verkon kautta (esim. NTP-protokollan avulla) tulisi olla käytössä – jotta VMS toimisi oikein, käyttöjärjestelmän päivämäärän ja kellonajan on oltava oikein. Jos laitteistossa ei ole RTC-laitteistoa ja ainoaksi päivämäärän ja kellonajan lähteeksi on suunniteltu verkkoa, on suositeltavaa, että laite kieltäytyy käynnistymästä lainkaan, jos se ei pysty synkronoimaan päivämäärää ja kellonaikaa.

Storage

Varmista, että tiedostojärjestelmässä on riittävästi tilaa VMS:n moitteettoman toiminnan kannalta. Palvelin käyttää seuraavia tallennuspaikkoja:

  • VMS-asennus – binäärit ja dynaamiset kirjastot (.so-tiedostot)
    • Sijaitsee osoitteessa /opt/<vendor>/mediaserver/
    • Tarvittava tila: voidaan laskea mittaamalla jakelussa olevien vastaavien tiedostojen kokonaiskoko lisättynä jollakin marginaalilla; mitä suurempi marginaali – sitä vähemmän mahdollisuuksia ongelmiin päivityksessä tuleviin versioihin. Yleensä suositellaan 30 %:n marginaalia.
    • Jos /opt:ssa ei ole tarpeeksi tallennustilaa, .so-tiedostot voidaan siirtää symlinkkien kautta toiseen paikkaan, myös FAT32-tallennustilaan (mutta tässä tapauksessa vain tiedostot, jotka eivät ole symlinkkejä, voidaan siirtää).
  • Palvelimen tietokantatiedostot – tallentaa tietoja kameroista ja muista palvelimista, tapahtumalokeista jne.
    • Tyypillisesti sijaitsee osoitteessa /opt/<vendor>/mediaserver/var/; voidaan muuttaa palvelimen konfigurointitiedostossa.
    • Tarvitsee ext4-tiedostojärjestelmän
    • Tilavaatimus: Riippuu VMS-järjestelmän kameroiden ja palvelimien määrästä, mutta yleensä suositellaan vähintään 500 Mt.
  • Palvelimen Analytics-tietokanta – tallentaa Analytics-liitännäisten tuottamat videoanalytiikan metatiedot
    • Sijaitsee yleensä osoitteessa /opt/<vendor>/mediaserver/var/data; voidaan muuttaa palvelimen asetustiedostossa.
    • Tarvittava tila: riippuu siitä, ovatko Analytics Pluginsit käytössä tällä Serverillä ja kuinka paljon metatietoa Pluginsit lähettävät. Yleensä suositellaan 20 % videoarkiston tallennustilan koosta, jos Analytics Plugins on käytössä tällä palvelimella.
  • Palvelimen lokit
    • Sijaitsee osoitteessa /opt/<vendor>/mediaserver/var/log/
      • Voidaan siirtää mediaserverin kautta.conf.
    • Lokit ylikirjoitetaan automaattisesti silmukassa.
    • Tilavaatimus: vähintään 260 Mt suositellaan.
    • Huomautus: Huomasimme, että tietyissä ARM-laitteissa (esim, Raspberry Pi 3), sisäinen flash-muisti (Micro SD siinä tapauksessa) ei ollut tarpeeksi hyvä lokien vastaanottamiseen. Järjestelmä jäätyi jopa 4 sekunniksi. Suosittelimme tällaisten laitteiden osalta lokien ohjaamista samaan paikkaan kuin videoarkisto.
  • Videoarkisto – tallentaa kameroiden tallentaman videon
    • Sijaitsee tyypillisesti osoitteessa /opt/<vendor>/mediaserver; voidaan muuttaa palvelimen asetustiedostossa.
    • Järjestelmäosio todennäköisesti rajoittaa tallentamista oletusarvoisesti, ellei siellä ole vähintään 10 Gt vapaata tilaa.
    • Sisäinen flash-muisti (eMMC) tai SD-kortti
        • Arvioi, kuinka monta kirjoitusjaksoa muisti kestää. Videoarkisto ylikirjoittaa itsensä automaattisesti silmukassa, joten yksittäisen kirjoitussyklin kesto voidaan laskea jakamalla vapaa tila kaikkien palvelimella tallennettavien kameroiden yhteenlasketulla bittinopeudella.
        • Varmista, että muistin läpäisykyky riittää kaikkien palvelimelle tallennettavien kameroiden yhteenlaskettuun bittinopeuteen 30 %:n varmuusmarginaalilla.
    • Sisäinen kiintolevy tai SSD-levy
            Varmista, että levyn läpäisykyky riittää kaikkien palvelimelle tallennettavien kameroiden yhteenlaskettuun bittinopeuteen 30 %:n varmuusmarginaalilla.

  • Ulkoinen NAS
        • Varmista, että verkkosovittimen todellinen kaistanleveys riittää kaikkien palvelimella tallennettavien kameroiden yhteenlasketulle bittinopeudelle kerrottuna kahdella (koska kamerat lähettävät oletettavasti virtansa palvelimelle käyttäen samaa verkkosovitinta), 30 prosentin varmuusmarginaalilla.
  • Palvelinsovelluksen päivitystiedostot
    • Palvelinsovelluksen päivittämistä varten palvelinsovelluksen on ladattava uudempi versionsa ja purettava se.
    • Sijaitsee osoitteessa /tmp/
    • Tilantarve: pakatun palvelinjakelutiedoston kokonaiskoko kerrottuna 2,6:lla; tähän sisältyy marginaali. Enemmän tilaa voidaan suositella, jotta voidaan minimoida mahdollisuudet ongelmiin päivityksessä tuleviin versioihin.
    • OS:n tilapäistiedostot
      • Tyypillisesti sijaitsee osoitteessa /tmp/
      • Vaadittu tila: suositellaan vähintään 100 Mt, lukuun ottamatta Server-sovelluksen päivitystiedostojen vaatimaa tilaa (ks. edellä).

    Suuri osa edellä luetelluista asioista voidaan määrittää tallennettavaksi eri paikkaan Serverin asetustiedostossa: /opt/<vendor>/mediaserver/etc/mediaserver.conf

    Koska tyypillinen SD-korttitallennus ei ole luotettava ja sen tiedetään epäonnistuvan intensiivisten luku- ja kirjoitusoperaatioiden aikana, suosittelemme asentamaan käyttöjärjestelmän ja tallentamaan videoarkiston kiintolevylle (kiintolevyille). Jos videoarkiston tallentamiseen harkitaan SSD-/kovalevyä tai SD-korttia, arvioi sen kyky useisiin uudelleenkirjoitusoperaatioihin käyttäen halutun tuetun kameran tyypillistä bittinopeutta kerrottuna halutulla tuettujen kameroiden lukumäärällä.

    Esimerkiksi Raspberry Pi 3 B+:

      • Käytä USB-SATA-sovitinta ja ulkoista kovalevyä arkistoa varten.
      • Asenna käyttöjärjestelmä (Raspbian) ulkoiselle kiintolevylle. Katso lisätietoja artikkelista Miten Raspberry Pi käynnistetään USB-massamuistilaitteelta. Tämä prosessi pitäisi automatisoida riippuen siitä, miten ARM-laitteita aiotaan jakaa: kiintolevyllä tai ilman:
        • Kiintolevyllä – tee valmiiksi konfiguroitu imago, johon on asennettu VMS, ja kloonaa se kiintolevyille.
        • Ei kiintolevyllä – sinun on luotava joukko skriptejä, jotka alustavat kiintolevyn, kopioivat käyttöjärjestelmän ja tekevät kaikki tarvittavat viritykset. Tämä on melko monimutkainen ja aikaa vievä tehtävä.

    Valitse Linux-maku

    Vaihtoehtoja Linux-käyttöjärjestelmäksi tietyssä NVR:ssä on yleensä useita:

    • ”Busybox” – vain Linux-ydin ja perusjoukko komentorivityökaluja; käytetään suhteellisen heikkotehoisissa NVR:ssä, kuten esimerkiksi ns. reuna-asemakameroissa (”edge”-kamerat (kamerat, joiden päällä on suoritettu VMS-palvelimen käyttö).
    • Standardi Debian tai jokin sen makuvaihtoehdoista, kuten Ubuntu.
    • Muokattu versio Debianista tai jostain muusta Linux-jakelusta, yleensä laitetoimittajan muokkaama (esim, Raspbian Raspberry Pi:lle).

    Yleisesti suositellaan valitsemaan Linux-muunnos, joka on NVR:n alustan alkuperäinen valinta. Esimerkiksi kehitettäessä NVR:ää, joka on laitteistoltaan samanlainen kuin Raspberry Pi (tai jopa käyttää täsmälleen Raspberry Pi:n emolevyä), on suositeltavaa valita Raspbian.

    Jos laitteelle on saatavilla useita Linux-jakeluja, joissa on erilaiset pakettikokonaisuudet, suositellaan vähiten raskasta. Jos esimerkiksi NVR:ssä ei ole tarkoitus näyttää graafista käyttöliittymää, X Window Systemiä ei tarvita.

    Varmista, että Linux-versio ja sen pakettisarja täyttävät VMS:n vaatimukset. ARM-pohjaisten laitteiden osalta tutustu ARM-tukipolitiikassa määriteltyihin käyttöjärjestelmän yksityiskohtiin.

    Asenna palvelinsovellus

    Kun NVR:ään on ladattu sopiva Linux-käyttöjärjestelmä, NVR:ään on asennettava palvelinsovellus. Vaihtoehtoja on periaatteessa kaksi:

    1. Debian-pohjaiselle käyttöjärjestelmälle: Asenna virallinen .deb-paketti VMS-jakelusta dpkg:n avulla.
    • Katso yksityiskohtaiset ohjeet VMS:n asentamisesta laitteeseen: ARM SBC:n asennusohjeet
  • Busybox-pohjaiselle käyttöjärjestelmälle: Pura tarvittavat tiedostot VMS:n .deb-paketista haluttuun hakemistoon ja huolehdi manuaalisesti seuraavista seikoista:
    • Miten palvelin käynnistetään käynnistyksen yhteydessä ja jos jakelusta löytyvä system.d-tuki ei ole sopiva?
    • Mihin palvelin ottaa .so-kirjastot, jotka puuttuvat asennetusta Linuxista?
    • Käytetäänkö VMS:n normaalia automaattista päivitysjärjestelmää?

    Tyypillisempien käyttöjärjestelmäkokoonpanojen kohdalla saatetaan tarvita jonkinlaista vaihtoehtojen 1 ja 2 yhdistelmää.

    Lisäominaisuuksien toteuttaminen

    Tyypillisesti NVR ei ole pelkkä tavallinen Linux-tietokone, johon on asennettu Server-sovellus, vaan se tarjoaa usein lisäominaisuuksia käyttäjälle:

    • Hardware-ohjelmistopainikkeita, LED-valonlähteitä tai jopa upotettuja näyttöjä.
    • Web-käyttöliittymä, jonka avulla voit mukauttaa NVR:ää muutakin kuin vain Server-sovelluksen asettamisen sen oman web-käyttöliittymän kautta, kuten
      • verkkoasetukset:
      • järjestelmäaika ja aikavyöhyke;
    • videolähtö (esim, HDMI), joka näyttää graafisen käyttöliittymän tai ainakin tervetuliaisnäytön, jossa on peruskonfigurointiarvot, kuten NVR:n IP-osoite;
    • lisäohjelmisto, joka toimii rinnakkain VMS:n kanssa, kuten konfigurointidemoni tai videoanalytiikan backend.
      • Jos lisäohjelmistossa on salasanapohjainen todennus loppukäyttäjälle, harkitse salasanojen synkronoinnin toteuttamista, jotta VMS-palvelimen salasana on aina sama kuin lisäohjelmiston salasana. Jos käyttäjälle tarjotaan ssh:ta NVR:n käyttöön, harkitse myös sen salasanan synkronointia.
    • Lisävirityksiä, kuten videon (näytönohjaimen) muistin minimointi. Aseta esimerkiksi Raspberry Pi 3 B+:n GPU-muistiksi 16 Mt. Katso lisätietoja Raspberry Pi -dokumentaatiosta.

    Tällaisten ominaisuuksien toteuttamiseksi saatetaan joutua kirjoittamaan tai muokkaamaan palvelinsovellusta ohjaavia skriptejä tai kirjoittamaan lisäohjelmia C/C++-kielellä.

    Aikojen synkronointi

    Varmista, että NVR:ssä on sisäänrakennettu CMOS-akku, joka estää sen kellon nollautumisen virran katketessa. Esimerkiksi Raspberry Pi 3 B+:ssä ei ole CMOS-paristoa. Jos laite käynnistetään uudelleen, kellonaika nollautuu ja se johtaa virheelliseen arkiston kirjoittamiseen. Tämän välttämiseksi on joitakin vaihtoehtoja:

    • Varmista, että laite on yhteydessä internetiin ajan synkronoimiseksi.
    • Jos kyseessä on suljettu verkko, sinun on perustettava NTP-palvelin.
    • Lisää piirilevyyn reaaliaikakellomoduuli (RTC) ja konfiguroi se valmiiksi. Katso kohta Reaaliaikakellon lisääminen Raspberry Pi:hen.

    Kotelon löytäminen/rakentaminen NVR:lle

    On löydettävä tai suunniteltava kotelo, johon kaikki edellä mainitut laitteistot mahtuvat.

    Toteuta laaja kuormitus-/stressitesti

    Varmistaaksesi, että kaikki toimii yhdessä, on suunniteltava intensiivinen stressitesti, jolla voidaan varmistaa, ettei ylikuumenemista tai komponenttien toimintahäiriöitä esiinny. Testin pitäisi pystyä kuormittamaan kaikkia järjestelmäkomponentteja, kuten prosessoria, muistia, kiintolevyä (kiintolevyjä), verkkoa ja Wi-Fi-verkkoa (tarvittaessa) jne.

    Tukikäytäntöjen määrittäminen

    NVR toimitetaan loppukäyttäjilleen, ja he tarvitsevat varmasti jonkinlaista teknistä tukea. VMS-toimittajan tukitiimi ei voi tarjota tällaisia palveluja loppukäyttäjille, joten tällaisen tuen tarjoamista varten olisi kehitettävä toimintatapa, kuten online-tukipiste, yhteisöfoorumi tai vastaava.

    Kun NVR-toimittajan tukitiimi on varma siitä, että tietty ongelma ei liity itse NVR:n erityispiirteisiin vaan on pikemminkin ongelma VMS:ssä, se voi pyytää tukea VMS-toimittajalta edellä mainitun ARM-tukikäytännön mukaisesti ja käyttää tämän tukitapauksen tulosta loppukäyttäjän tukipyynnön täyttämiseen.

    Kysymykset

    Jos sinulla on tähän aiheeseen liittyviä kysymyksiä tai haluat jakaa kokemuksiasi muiden yhteisön jäsenten tai tiimimme kanssa, käy ja osallistu tukiyhteisöömme tai ota yhteyttä paikalliseen jälleenmyyjääsi.

    Vastaa

    Sähköpostiosoitettasi ei julkaista.