На странице:

 

Создание хранилища

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
      "added": [ {
          "uid": "hosts/SERVER",
          "units": [ {
              "type": "MultimediaStorage",
              "properties": [
                { "id": "display_name", "properties": [], "value_string": "ArchiveStorage" },
                { "id": "color", "properties": [], "value_string": "Gray" },
                { "id": "storage_type", "value_string": "object" }
      ] } ] } ]

    }
}

где

  • uid − сервер, на котором создаем архив,
  • units − свойства,
  • storage_type − тип архива (если параметр явно не задан, то создается старый тип архива): 
    • block − старый тип архива,
    • object − новый тип архива (объектный). 

Создание тома архива

Возможные параметры ArchiveVolume в разделе properties:

ПараметрОписание
formattrue − если требуется отформатировать созданный том. По умолчанию false
volume_sizeРазмер тома в байтах. Актуально, если format = true
auto_mounttrue − если нужно монтировать созданный том. По умолчанию true
labelМетка тома
Параметры только для объектного архива (storage_type = object)
max_block_size_mbМаксимальный размер блоков в Мб. Значение по умолчанию 64, диапазон допустимых значений [16; 512]
optimal_read_size_mbОптимальный размер чтения блоков в Мб. Значение по умолчанию 4, диапазон допустимых значений [1; max_block_size_mb / 2]
incoming_buffer_size_mbПриходящий размер буфера в Мб. Значение по умолчанию 3 * max_block_size_mb. Минимальное значение должно быть больше 2 * max_block_size_mb
block_flush_period_secondsПериод записи блоков в секундах. Значение по умолчанию 60, диапазон допустимых значений [30; 300]
index_snapshot_max_block_distanceМаксимальное количество блоков между операциями индексации. Значение по умолчанию 256, минимальное значение 16
sequence_flush_period_secondsПериодичность записи последовательностей в секундах. Значение по умолчанию 60, минимальное значение 32

На уровне ArchiveVolume также должно добавляться свойство connection_params со следующими параметрами:

ПараметрОбязательныйОписание
schema Да

Тип тома. Возможные значения:

  • file − локальный архив на сервере,
  • smb − удаленный архив с подключением по протоколу SMB,
  • azure − архив в облачном хранилище Microsoft Azure (azure.microsoft.com),
  • s3_amazon − архив в облачном хранилище Amazon S3 (aws.amazon.com),
  • s3_huawei − архив в облачном хранилище Huawei Cloud (huaweicloud.com),
  • s3_seagate − архив в облачном хранилище Seagate Lyve Cloud (www.seagate.com),
  • s3_wasabi − архив в облачном хранилище Wasabi (wasabi.com),
  • s3 − универсальный архив в облачном хранилище (был протестирован компанией ITV с min.io версии RELEASE.2021-08-05T22-01-19Z). Применяется при использовании других видов облачных хранилищ
Параметры для типа file
pathДаПуть к файлу/диску с архивом
Параметры для типа smb
hostДаИмя сервера с удалённым хранилищем
smb_shareДаУдаленное хранилище
pathДаПапка в удаленном хранилище для хранения архива
smb_domainНетДомен удаленного хранилища
userНетИмя пользователя
passwordНетПароль
Параметры для типа azure (хранилище Microsoft Azure)
protocol Да

Протокол подключения: HTTP или HTTPS. Этот параметр находится в свойствах созданного контейнера

hostДа

Адрес сервера Azure. Этот параметр находится в свойствах созданного контейнера

access_keyДа

Ключ доступа в base64. Этот параметр находится в разделе Ключи доступа

containerДа

Контейнер Azure. Данный параметр находится в свойствах созданного контейнера

userДа

Имя пользователя. Этот параметр находится в разделе Ключи доступа (Storage account name)

pathНетДля Azure указывать расположение папки тома не нужно − параметр должен остаться пустым
portНетПорт сервера Azure
Параметры для типа s3_amazon (хранилище Amazon)

access_key_id

ДаИдентификатор ключа доступа (создание ключей доступа на странице https://console.aws.amazon.com/iam/home?#/security_credentials$access_key, требуется авторизация)
secret_access_keyДаПароль ключа доступа (доступен после создания ключа доступа)
bucketДаТом архива в аккаунте Amazon S3 (bucket). Разные тома могут находиться в разных регионах. На сервере Amazon S3 имя тома должно быть уникальным и для работы в ПК Интеллект X должно быть предварительно создано самим пользователем по правилам (см. https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)
regionДаРегион нахождения тома. Для уменьшения задержек при записи и чтении архива необходимо указывать ближайший регион до сервера ПК Интеллект X. Список возможных регионов – https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints
pathДаРасположение папки тома ПК Интеллект X внутри bucket
protocolДаПротокол подключения: HTTP или HTTPS
hostДаАдрес сервера: amazonaws.com
Параметры для типа s3_wasabi (хранилище Wasabi)
bucketДаИмя тома архива (Bucket Name), предварительно заданное пользователем в https://console.wasabisys.com/#/file_manager
regionДаРегион нахождения соответствующего тома, заданный в https://console.wasabisys.com/#/file_manager
access_key_idДаИдентификатор ключа доступа, который необходимо предварительно создать на странице https://console.wasabisys.com/#/access_keys
secret_access_keyДаПароль ключа доступа (доступен после создания ключа доступа)
protocolДаПротокол подключения: HTTP или HTTPS
pathДаРасположение папки, созданной внутри тома (объект Folder в Bucket)
hostДаАдрес сервера: wasabisys.com
Параметры для типа s3_huawei (хранилище Huawei Cloud)
bucketДаИмя тома архива (Bucket Name), предварительно заданное пользователем на вкладке Object Storage Service
regionДаРегион нахождения соответствующего тома, заданный при его создании. Указан в параметре Endpoint в свойствах Bucket
access_key_idДаИдентификатор ключа доступа, который необходимо создать, перейдя по ссылке Obtain access keys (AK and SK)
secret_access_keyДаПароль ключа доступа (доступен после создания ключа доступа)
pathДа

Расположение папки, созданной внутри тома

protocolДаПротокол подключения: HTTP или HTTPS
hostДаАдрес сервера: myhuaweicloud.com
Параметры для типа s3_seagate (хранилище Seagate Lyve Cloud)
bucketДаИмя тома архива (Bucket Name), предварительно заданное пользователем. Соответствует параметру Name в свойствах Bucket
regionДаРегион нахождения соответствующего тома, заданный при его создании. Соответствует параметру Region в свойствах Bucket
access_key_idДаИдентификатор ключа доступа, который генерируется при создании учётной записи в окне Create Service Account
secret_access_keyДаПароль ключа доступа (доступен после генерации ключа доступа)
pathДаРасположение папки, созданной внутри тома
protocolДаПротокол подключения: HTTP или HTTPS
hostДаАдрес сервера: lyvecloud.seagate.com
Параметры для типа s3
bucketДаИмя тома архива (Bucket Name), предварительно заданное пользователем. Соответствует параметру Name в свойствах Bucket
bucket_endpointНет

Имя домена с портом.

Внимание!

Параметр необходимо использовать только при использовании MinIO, если указывается доменное имя сервера MinIO, вместо IP-Адреса сервера.

Пример: http://miniopoc1.agis.xh.ar:9000
где, 

  • miniopoc1.agis.xh.ar − доменное имя сервера MinIO,
  • 9000 – порт MinIO
regionДаРегион нахождения тома
access_key_idДаИдентификатор ключа доступа
secret_access_keyДаПароль ключа доступа (доступен после создания ключа доступа)
pathНетРасположение папки тома ПК Интеллект X внутри bucket
protocolДаПротокол подключения: HTTP или HTTPS
hostДаАдрес сервера
portДаПорт сервера

Примечание

Существует возможность создать несколько томов облачного архива.

Внимание!

  • Рекомендуется добавлять новые тома облачного архива с одинаковым значением размера архива. Иначе суммарная глубина хранения архива может измениться из-за применения алгоритма Round-robin (см. Общие сведения о работе алгоритма Round-robin) для распределения записей, что может привести к прореживанию кадров записей архива.
  • При увеличении размера архива одного из томов облачного архива произойдет перезапись томов архива с помощью алгоритма Round-robin (см. Общие сведения о работе алгоритма Round-robin). Глубина хранения архива будет постепенно увеличиваться в течение количества дней равным разности между исходным и новым значением глубины хранения архива. 

Пример создания тома архива в виде файлов на локальном диске

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                {"id": "schema","value_string": "file"},
                                                {"id": "path","value_string": "D:/archives"}
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "26843545600"},
                            {"id": "format","value_bool": true},
			    { "id": "auto_mount", "value_bool": true }
                        ]}]}
        ]
    }
}

Пример создания тома архива на удаленном ресурсе

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "smb" },
						{ "id": "host", "value_string": "computer" },
                                                { "id": "smb_domain", "value_string": "domain" },
						{ "id": "smb_share", "value_string": "Share" },
						{ "id": "path", "value_string": "video" },
						{ "id": "user", "value_string": "Tester" },
						{ "id": "password", "value_string": "Testing321" }
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "12073741824"},
                            {"id": "format","value_bool": true}
                        ]}
                        ]
            }
        ]
    }
}

Пример создания тома облачного архива в Microsoft Azure

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
												{ "id": "schema", "value_string": "azure" },
												{ "id": "protocol", "value_string": "https" },
												{ "id": "host", "value_string": "axxonsoft.blob.core.windows.net" },
												{ "id": "access_key", "value_string": "youraccesskey==" },
												{ "id": "container", "value_string": "container" },
												{ "id": "user", "value_string": "axxonsoft" },
												{ "id": "path", "value_string": "" }
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "12073741824"},
                            {"id": "format","value_bool": true}
                        ]}
                        ]
            }
        ]
    }
}

Пример создания тома облачного архива в Amazon

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3_amazon" },
	                                        { "id": "bucket", "value_string": "axxonsoft-test" },
						{ "id": "region", "value_string": "us-west-1" },
						{ "id": "access_key_id", "value_string": "youraccesskeyid" },
					        { "id": "secret_access_key", "value_string": "yoursecretaccesskey" },
						{ "id": "path", "value_string": "path" },
						{ "id": "protocol", "value_string": "https" },
						{ "id": "host", "value_string": "amazonaws.com" }
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "12073741824"},
                            {"id": "format","value_bool": true}
                        ]}
                        ]
            }
        ]
    }
}

Пример создания тома облачного архива в Wasabi

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3_wasabi" },
                                                { "id": "bucket", "value_string": "axxontest-1" },
                                                { "id": "region", "value_string": "us-central-1" },
                                                { "id": "access_key_id", "value_string": "youraccesskeyid" },
                                                { "id": "secret_access_key", "value_string": "yoursecretaccesskey" },
                                                { "id": "path", "value_string": "path" },
                                                { "id": "protocol", "value_string": "http" },
                                                { "id": "host", "value_string": "wasabisys.com" }
                                            ]}}
                                ]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "209715200"},
                            {"id": "format","value_bool": true}
                        ]
                    }
                ]
            }
        ]
    }
}

Пример создания тома облачного архива в Huawei Cloud

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3_huawei" },
                            { "id": "bucket", "value_string": "axxon-test-1" },
                            { "id": "region", "value_string": "ap-southeast-1" },
                            { "id": "access_key_id", "value_string": "youraccesskeyid" },
                            { "id": "secret_access_key", "value_string": "yoursecretaccesskey" },
                            { "id": "path", "value_string": "path" },
                            { "id": "protocol", "value_string": "https" },
                            { "id": "host", "value_string": "myhuaweicloud.com" } 
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "10073741824"},
                            {"id": "format","value_bool": true}
                        ]
                    }
                ]
            }
        ]
    }
}

Пример создания тома облачного архива в Seagate Lyve Cloud

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3_seagate" },
                            { "id": "bucket", "value_string": "axxonsoft-test" },
                            { "id": "region", "value_string": "us-west-1" },
                            { "id": "access_key_id", "value_string": "youraccesskeyid" },
                            { "id": "secret_access_key", "value_string": "yoursecretaccesskey" },
                            { "id": "path", "value_string": "path" },
                            { "id": "protocol", "value_string": "https" },
                            { "id": "host", "value_string": "lyvecloud.seagate.com" } 
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": "1073741824"},
                            {"id": "format","value_bool": true}
                        ]}]}
        ]
    }
}

Пример создания тома облачного архива в MinIO S3

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3" },
                                                { "id": "bucket", "value_string": "bucket" },
                                                { "id": "region", "value_string": "us-east-1" },
                                                { "id": "access_key_id", "value_string": "MINIOROOT" },
                                                { "id": "secret_access_key", "value_string": "MINIOPASS" },
                                                { "id": "path", "value_string": "path" },
                                                { "id": "protocol", "value_string": "http" },
                                                { "id": "host", "value_string": "192.168.56.102" },
                                                { "id": "port", "value_string": "9000" }
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": 1207374182},
                            {"id": "format","value_bool": true}
                        ]}
                        ]
            }
        ]
    }
}

Пример создания тома облачного архива в MinIO S3 с использованием имени домена

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "added": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray",
                "units": [
                    {
                        "type": "ArchiveVolume",
                        "properties": [
                            {
                                "id": "volume_type",
                                "value_string": "object",
                                "properties": [
                                    {
                                        "id": "connection_params",
                                        "value_properties": {
                                            "properties": [
                                                { "id": "schema", "value_string": "s3" },
                                                { "id": "bucket", "value_string": "bucket" },
                                                { "id": "region", "value_string": "us-east-1" },
                                                { "id": "access_key_id", "value_string": "MINIOROOT" },
                                                { "id": "secret_access_key", "value_string": "MINIOPASS" },
                                                { "id": "path", "value_string": "" },
                                                { "id": "protocol", "value_string": "http" },
                                                { "id": "host", "value_string": "" },
                                                { "id": "bucket_endpoint", "value_string": "http://miniopoc1.agis.xh.ar:9000" }
                                            ]}}]},
                            {"id": "label","value_string": "test"},
                            {"id": "volume_size","value_uint64": 1207374182},
                            {"id": "format","value_bool": true}
                        ]}
                        ]
            }
        ]
    }
}

Изменение тома архива

Для изменения тома архива используются те же параметры, что и при его создании.

{
    "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
    "data": {
        "changed": [
            {
                "uid": "hosts/SERVER/MultimediaStorage.Gray/ArchiveVolume.4508f459-5eeb-4ee3-881b-4a4e149c7802",
                "properties": [
                    {
                        "id": "label",
                        "value_string": "NewLabel"
                    },
                    {
                        "id": "readonly",
                        "value_bool": false
                    },
                    {
                        "id": "connection_params",
                        "value_properties": {
                            "properties": [
                                {
                                }
                            ]
                        }
                    }
                ]
            }
        ]
    }
}

Проверка наличия зашифрованных данных в томе архива

Проверка наличия зашифрованных данных выполняется с помощью метода ProbeVolume (ArchiveVolumeService). Для проверки нужно:

  1. Предварительно создать объектное хранилище (см. Создание хранилища).
  2. Добавить том архива с указанием ключа шифрования aes_key_hex:
    {
        "method": "axxonsoft.bl.config.ConfigurationService.ChangeConfig",
        "data": {
            "added": [
                {
                    "uid": "hosts/SERVER/MultimediaStorage.Blue",
                    "units": [
                        {
                            "properties": [
                                {
                                    "id": "volume_type",
                                    "properties": [
                                        {
                                            "id": "connection_params",
                                            "value_properties": {
                                                "properties": [
                                                    {
                                                        "id": "schema",
                                                        "value_string": "file"
                                                    },
                                                    {
                                                        "id": "path",
                                                        "value_string": "E:/Blue"
                                                    }
                                                ]
                                            }
                                        }
                                    ],
                                    "value_string": "object"
                                },
                                {
                                    "id": "label",
                                    "value_string": "Object volume"
                                },
                                {
                                    "id": "volume_size",
                                    "value_uint64": "10374182400"
                                },
                                {
                                    "id": "format",
                                    "value_bool": true
                                },
                                {
                                    "id": "aes_key_hex",
                                    "value_string": "642b6c71556a6f66726c30526c6640535735732465506c7752232b4f4b553d52"
                                },
                                {
                                    "id": "auto_mount",
                                    "value_bool": true
                                }
                            ],
                            "type": "ArchiveVolume"
                        }
                    ]
                }
            ]
        }
    }
    
  3. Привязать камеру к архиву (см. Привязка видеокамеры к архиву через gRPC API).
  4. Выполнить запрос ProbeVolume к тому архива без указания ключа шифрования:
    {
        "method":"axxonsoft.bl.archive.ArchiveVolumeService.ProbeVolume",
        "data": {
            "volume_type": "object",
            "connection_params": {
                "schema": "file",
                "path": "E:\\Blue"
            },
            "aes_key_hex": ""
        }
    }
    
  5. Если в ответе в поле status_code указано значение OK, нужно дождаться появления первого блока данных в архиве и повторно выполнить запрос ProbeVolume. В результате должен прийти ответ:
    {
        "status_code": "ENCRYPTED",
        "error_details": "",
        "label": "C:/ArchiveAliceBlue",
        "capacity_bytes": "1073741824",
        "used_bytes": "13280428",
        "details": {
            "TotalBytesWritten": "13280428",
            "FormatVersion": "1",
            "max_block_size_mb": "64",
            "optimal_read_size_mb": "4",
            "AvailableSizeBytes": "1060461396"
        },
        "create_time": "2024-09-10T08:46:42Z"
    }
    
    где значение ENCRYPTED возвращается, если в томе архива присутствуют зашифрованные данные, и их расшифровка невозможна с использованием указанного ключа шифрования. Если том архива создан, но запись данных в него не выполнялась, статус ENCRYPTED не возвращается, поскольку зашифрованные данные отсутствуют.

Проверка зашифрованных данных завершена.

  • No labels