.. _storage-migration: Migrate Data to Another Disk =========================================== High disk load may lead to delays in event arrivals. In severe cases, it might result in complete inoperability of FindFace Multi. One of the means for reducing the disk load is to migrate the FindFace Multi data storages to another disk. .. rubric:: In this section: .. contents:: :local: .. _prepare-disk: Prepare Disk -------------------- To prepare a disk for the data migration, do the following: #. Create a new mount point (``/mnt/ffdata`` in our example). .. code:: sudo mkdir /mnt/ffdata #. Create a partition. .. code:: sudo parted /dev/sdb mklabel gpt mkpart primary ext4 1MiB 100% q sudo mkfs.ext4 /dev/sdb1 #. Learn the UUID of the partition (``sdb1`` in our example). .. code:: sudo blkid | grep sdb1 /dev/sdb1: LABEL="data" UUID="0638ebe0-853e-43ea-8f35-bfae305695d1" TYPE="ext4" PARTUUID="8cebaacc-77d7-4757-b4c6-14147e92646c" #. Add the partition to ``fstab`` to make it automatically mount on booting. .. code:: sudo vi /etc/fstab ------------ #DATA mount UUID=0638ebe0-853e-43ea-8f35-bfae305695d1 /mnt/ffdata/ ext4 auto,user,rw 0 2 ------------- #. Mount all the filesystems. .. code:: sudo mount -a Migrate Photo and Video Storage --------------------------------- .. note:: We recommend that you get acquainted with :ref:`storages` before starting migration of storages. To migrate the FindFace Multi photo and video storage, do the following: #. Inside the mount point, create directories (e.g., ``/mnt/ffdata/ffupload`` and ``/mnt/ffdata/findface-security``) to store photos and recorded video chunks (if the Video Recorder was deployed). Then, move contents of the ``/opt/findface-multi/data/findface-upload/uploads/`` and the ``/opt/findface-multi/data/findface-multi-legacy/uploads/`` directories to the newly created directories. .. code:: sudo mkdir /mnt/ffdata/ffupload sudo mkdir /mnt/ffdata/findface-security sudo cp -ax /opt/findface-multi/data/findface-upload/uploads/ -R /mnt/ffdata/ffupload/ sudo cp -ax /opt/findface-multi/data/findface-multi-legacy/uploads/ -R /mnt/ffdata/findface-security/ sudo rm -r /opt/findface-multi/data/findface-multi-legacy/uploads/ sudo rm -r /opt/findface-multi/data/findface-upload/uploads/ #. Mount the previously created directories, such as ``/mnt/ffdata/ffupload`` and ``/mnt/ffdata/findface-security``, as top-level volume entries in the Docker Compose file to replace the default volume path. To do this, open the ``/opt/findface-multi/docker-compose.yaml`` file and edit the ``volumes`` section at the top level. .. code:: sudo vi /opt/findface-multi/docker-compose.yaml ... volumes: ffupload: driver: local driver_opts: {device: /mnt/ffdata/ffupload/, o: bind, type: none} findface-multi-uploads: driver: local driver_opts: {device: /mnt/ffdata/findface-security/uploads, o: bind, type: none} ... #. From the ``/opt/findface-multi/`` directory, stop and remove all containers and remove old volumes. .. code:: cd /opt/findface-multi sudo docker-compose down sudo docker volume rm findface-multi_findface-multi-uploads sudo docker volume rm findface-multi_ffupload #. Run all FindFace Multi containers in detached mode. .. code:: sudo docker-compose up -d Migrate Main Database (PostgreSQL) ------------------------------------ To migrate the PostgreSQL database, do the following: #. Stop all FindFace Multi containers: .. code:: cd /opt/findface-multi sudo docker-compose down #. Move the ``/opt/findface-multi/data/postgresql`` directory to the ``/mnt/ffdata`` directory. .. code:: sudo mv /opt/findface-multi/data/postgresql /mnt/ffdata #. Specify the new path of the ``postgresql`` directory (``/mnt/ffdata/postgresql`` in the example) to mount into the ``findface-multi-postgresql-1`` container. To do so, open the ``/opt/findface-multi/docker-compose.yaml`` configuration file and list the ``/mnt/ffdata/postgresql`` directory in the volumes of the ``postgresql`` section instead of the default ``/opt/findface-multi/data/postgresql`` directory. .. code:: sudo vi /opt/findface-multi/docker-compose.yaml postgresql: ... volumes: ['./configs/postgresql/40-init.sql:/docker-entrypoint-initdb.d/40-init.sql:ro', '/mnt/ffdata/postgresql:/bitnami/postgresql'] #. Start all FindFace Multi containers. .. code:: sudo docker-compose up -d