Veeam Linux Backup sur Elbrus OS. Substitution d'importation ['?' | "." | '!']

Bonjour à tous.

Articles récents sur Habré La substitution des importations en pratique. Partie 1. Options et pas pour longtemps, la musique jouée ... ou comment OS Elbrus n'est jamais devenu gratuit ne m'a pas laissé indifférent. J'ai décidé d'étudier ce problème dans la clé de la tâche de sauvegarde. De plus, les produits Veeam Software sont mentionnés dans cet article , ce qui signifie que le problème peut être pertinent dans le contexte de la substitution des importations.

image
image source

Tout d'abord, j'ai décidé de télécharger le système d'exploitation Elbrus, ou plutôt, uniquement le kit de distribution disponible pour l'architecture x86_64, voir comment cela fonctionne et essayer d'y installer Veeam Agent pour Linux. Ceux qui souhaitent en savoir plus, s'il vous plaît, sous cat.

Donc, une petite digression, sinon tout à coup quelqu'un ne sait pas. Elbrus est un processeur avec un système d'instruction assez spécifique. En plus de cela, il existe un logiciel Elbrus OS. Et - contrairement à une idée fausse commune - il n'est pas nécessaire que le système d'exploitation Elbrus ait un complexe matériel basé sur le processeur Elbrus. Il existe "Elbrus PDK pour x86" - en fait, il est apparu dans le domaine public comme un disque d'installation. Soit dit en passant, il y a une note de bas de page «PDK - kit de développement de plate-forme, kit de développement» - excellente, ce qui signifie qu'il y a au moins un compilateur.

Une autre petite retraite forcée. Le fait est que j'ai déjà eu affaire à des logiciels nationaux, tels que MSVS et RTO Baget. J'avais de l'expérience avec la base de l'élément domestique, y compris le processeur du MCST. Par conséquent, je peux dire en toute responsabilité qu'il existe une certaine spécificité dans ce domaine, et j'essaierai de ne pas y revenir dans cet article. Lorsque j'en aurai vraiment envie, je mettrai la balise [TBD]. Nous allons donc essayer de nous passer de la traîne pure et simple et des gémissements banaux. En fin de compte, l'industrie russe de la défense et les agences gouvernementales doivent être comprises. Le pays est grand - le budget est petit .. [à déterminer].

Zero stage - téléchargement. Il est à noter que la nouvelle que le système d'exploitation Elbrus est devenu disponible a provoqué une résonance, de sorte que le serveur de distribution était en panne. [TBD] Merci à Yandex et à l'ingénieur qui a pensé à le déplacer là-bas. La vitesse de téléchargement est donc bonne.

La première étape est l'installation. J'ai mis le premier hyperviseur gratuit disponible. J'ai alloué deux cœurs, quelques Go de RAM, 32 Mo par vidéo (il y aura une interface graphique là-bas, je pensais). Le disque comme d'habitude - 32 Go.
Lancement de l'installation. Je n'ai pas utilisé les instructions d'installation, je ne peux donc pas en parler. L'interface d'installation de TUI est sévèrement minimaliste.


Bon, excellent, sans souris, alors on s'en sortira.

J'ai traité la fenêtre suivante de la deuxième tentative. Pourquoi ne pas installer sr0 [TBD] par défaut lors de l'installation à partir du disque?
Sélectionnez la source du CD-ROM, allez plus loin.



En choisissant le fuseau horaire, j'ai soudain réalisé que le système utilise le processus de démarrage init, et je travaille à partir de TTY0.



OK, alors emmenons Elbrus dans la communauté Old Believer [TBD]. En principe, c'est bien: vous n'avez pas besoin de demander à la source pour voir comment fonctionne le processus de téléchargement, car tout est dans des scripts.

Le reste est presque sans importance: nous mettons tout et sommes d'accord. En cours de route, nous découvrons que le noyau est utilisé 3.14.79-13.84. Hmm, Debian 7 avait 3,2 [TBD].

Ensuite, sélectionnez le partitionnement du disque par défaut et ... Nous voyons un avertissement:



Hmm, en quelque sorte un partitionnement mal automatique avec un disque de 32 gig. Je n'ai pas changé le disque. J'ai terminé une quête avec une disposition manuelle du disque dans le style "tout en un". J'ai dû installer ext3, car / boot ne pouvait pas être dans ext4.
Le système s'est levé sans incident.

La deuxième étape est la recherche d'alternatives.
Ayant fouillé le contenu du second disque, j'ai compris qu'il s'agissait d'un référentiel avec des supplémentaires. paquets. Et en regardant /etc/apt/sources.list, j'ai réalisé que je devais le monter dans / mnt / cdrom. Mais je n'ai pas trouvé / etc / os-release. Mais il y a / etc / mcst-version avec le contenu de 3.0-rc36. 3.0 - c'est probablement la version - elle semble converger, mais rc36? En général, les logiciels tiers ne seront probablement pas en mesure de reconnaître cette distribution de manière classique.

Dans la section racine, le répertoire / mcst attire votre attention, et là avec un cœur qui coule, j'ai trouvé / mcst / backup. Autrement dit, il existe un outil de sauvegarde, et il est intégré au système! Super, je pensais, Voyons voir comment ça marche!

Il s'est avéré qu'il existe un script bash / mcst / bin / backup de 4 Ko, qui permet de copier des fichiers. Par défaut, dans le répertoire / mcst / backup. Dans la source, je m'attendais à voir la commande rsync, mais elle n'est pas dans la configuration par défaut. Le script copie simplement les fichiers. La commande ressemble à ceci:

cp -rpdx <file backup> <file> 

Le fichier complet / mcst / bin / backup est ici
Je vous préviens tout de suite que pour bien comprendre ce script seul ne suffit pas. Il tire les fonctions de / mcst / bin / source, qui est quelque chose comme une bibliothèque de fonctions. Je ne l'ai pas cité (44Ko).
 #!/bin/bash unalias -a set +vx source $(dirname $0)/source [[ $? != 0 ]] && exit 1 OPTIONS="hvcdrRil:L:" usage() { echo "Usage: $PROG_NAME [-$OPTIONS] [backup]" echo " h - this help" echo " v vv vvv - verbose, very verbose, extremly verbose" echo " c - create backup" echo " d - diffs backup and system" echo " r - recovery system" echo " R - remove backup" echo " i - prompt before backup removing" echo " l list - additional backup files list" echo " L list - global backup files list" echo " backup - backup directory, default /mcst/backup/backup" } init_prog() { typeset flg=0 while getopts $OPTIONS opt do case $opt in h ) usage; exit 0;; v ) (( verbose = verbose + 1 )); set_verbose;; c ) flg=1; c_flg=1;; d ) flg=1; d_flg=1;; r ) flg=1; r_flg=1;; R ) flg=1; R_flg=1;; i ) i_flg=1;; l ) l_flg=1; list_arg="$list_arg $OPTARG";; L ) L_flg=1; LIST_arg="$LIST_arg $OPTARG";; * ) usage "Invalid option"; exit 1;; esac done set_verbose check_su init_variables shift $((OPTIND-1)) if (( $# > 1 )) then echo_fatal "invalid arguments number, exp 0|1, act $#" exit 1 fi [[ $# = 1 ]] && BACKUP=$1 echo "Backup directory is $BACKUP" if [[ $L_flg = 1 ]] then backup_list="$LIST_arg" elif [[ $c_flg != 1 && $R_flg != 1 ]] then get_output_cmd "cat $BACKUP/$BACKUP_LIST_NAME" backup_list="$output_cmd" else get_output_cmd "get_backup_list" backup_list="$output_cmd" fi if [[ $l_flg = 1 ]] then backup_list="$backup_list $list_arg" fi if [[ $flg = 0 ]] then if [[ -d $BACKUP ]] then ls -laR $BACKUP else echo_info "Cannot access $BACKUP" fi echo "backup_list=$backup_list" exit 0 fi ### echo "Backup list: $backup_list" } create_file() { typeset f=$1 fr=$2 typeset fb [[ -z $fr ]] && fr=$f fb=${f#/} fb=$BACKUP/$fb xcmd="rm -rf $fb" set_cmd "$xcmd" run_cmd xcmd="mkdir -p $fb" set_cmd "$xcmd" run_cmd if [[ -a $fr ]] then xcmd="cp -rpdx $fr $fb/file" set_cmd "$xcmd" run_cmd xcmd="touch $fb/create" set_cmd "$xcmd" run_cmd else xcmd="touch $fb/delete" set_cmd "$xcmd" run_cmd fi } diff_file() { typeset f=$1 typeset fb fb=${f#/} fb=$BACKUP/$fb if [[ -f $fb/delete ]] then echo_info "$f absent" elif [[ -f $fb/create ]] then # echo "state: create $f" if [[ ! -a $f ]] then echo_info "cannot access $f" else xcmd="diff -r $f $fb/file" echo "$xcmd" set_cmd "$xcmd" "" "0 1 2" run_cmd fi else echo_fatal "wrong $f backup" exit 1 fi } recovery_file() { typeset f=$1 typeset fb fb=${f#/} fb=$BACKUP/$fb if [[ ! -a $fb ]] then echo_fatal "cannot access $fb" exit 1 fi xcmd="rm -rf $f" set_cmd "$xcmd" run_cmd if [[ -f $fb/delete ]] then : elif [[ -f $fb/create ]] then xcmd="cp -rpdx $fb/file $f" set_cmd "$xcmd" run_cmd else echo_fatal "wrong $fb backup" exit 1 fi } remove_backup() { echo "Remove backup" if [[ ! -d $BACKUP ]] then echo_info "Cannot access $BACKUP" return fi if [[ ! -f $BACKUP/$BACKUP_LIST_NAME ]] then echo_fatal "$BACKUP_LIST_NAME absent, remove backup manually" exit 0 fi answer= if [[ $i_flg = 1 ]] then echo -n "Remove $BACKUP directory (yes/...)?" read answer else answer=yes fi if [[ $answer = yes ]] then xcmd="rm -rf $BACKUP" set_cmd "$xcmd" run_cmd fi } recovery_backup() { echo "Recovery system from $BACKUP" for f in $backup_list do get_output_cmd "get_mount_point $f" mnt=$output_cmd get_output_cmd "is_ro_mounted $mnt" mnt=$output_cmd if [[ ! -z $mnt ]] then remount_rw_fs $mnt fi recovery_file $f if [[ ! -z $mnt ]] then remount_ro_fs $mnt fi done echo "The system is ready, reboot the system manually" } create_backup() { echo "Create backup" xcmd="mkdir -pm0777 $BACKUP" set_cmd "$xcmd" run_cmd for v in $backup_list do f=${v%%:*} backup_list2="$backup_list2 $f" fr=${v#*:} create_file $f $fr done echo "$backup_list2" >$BACKUP/$BACKUP_LIST_NAME } diff_backup() { echo "Diffs system and backup" if [[ ! -d $BACKUP ]] then echo_fatal "cannot access $BACKUP" exit 1 fi for f in $backup_list do diff_file $f done } main() { typeset f mnt mnt_list answer if [[ $R_flg = 1 ]] then remove_backup fi if [[ $r_flg = 1 ]] then recovery_backup fi if [[ $c_flg = 1 ]] then create_backup fi if [[ $d_flg = 1 ]] then diff_backup fi } init_prog "$@" main exit 0 


Mais peut-être que je ne comprenais pas quoi? Peut-être que quelqu'un dans les commentaires peut expliquer: comment ce script fournit-il une sauvegarde de données sûre et fiable? [TBD]

rsync, soit dit en passant, est en plus. référentiels. Version 3.1.3. Je pense que l'utilisation de rsync est toujours la meilleure alternative à / mcst / bin / backup.

Ensuite, j'ai décidé de mettre le nouvel agent Veeam pour Linux . Quelqu'un demandera: "Qu'est-ce que Veeam a à voir avec la substitution des importations?" Oui, il ne figure pas dans le registre, mais il est certifié par le FSTEC, ce qui signifie qu'en l'absence d'alternatives il peut être utilisé. Ayant passé une quinzaine de minutes sur les alternatives du registre , j'ai réussi à trouver 3 liens sur le mot «sauvegarde» (pas un seul lié à ma question sur le mot «réserve»). Je n'ai pas fait une analyse approfondie de ces programmes - donc je n'essaierai pas de juger à quel point ils conviennent pour sauvegarder des machines sous Linux. Qui en a besoin - il tirera une conclusion et la partagera dans les commentaires.

Étape 3 - Installez Veeam Agent pour Linux.
Ainsi, Veeam Agent pour Linux se compose de deux packages: le module du noyau veeamsnap (soit dit en passant, la source est ici ) et le code propriétaire de l'espace utilisateur sous la forme du package veeam.

Il y avait un petit problème avec l'installation du module du noyau - le manque du paquetage dkms. Il s'agit d'un service qui vous permet de créer des modules du noyau à partir des sources. En règle générale, c'est sur toutes les distributions deb. J'ai dû le télécharger à partir d'un référentiel deb tiers. Un plaisir - le package ne dépend pas de l'architecture, il s'est donc présenté comme un natif. Pourquoi n'a-t-il pas été inclus dans la liste des packages disponibles, ou plutôt, n'a-t-il pas développé [TBD]? On suppose peut-être que personne ne devrait collecter et exécuter toutes sortes de modules de noyau non MCST. Il y a vraiment un problème ici - car il y a des en-têtes Linux. Autrement dit, le module, si vous le souhaitez, peut être assemblé à la main et exécuté lorsque la machine démarre avec un script. Je pense que vous ne devriez pas attendre les mises à jour fréquentes de l'ICST [TBD].

"D'accord, le module s'est levé - la chose la plus difficile est derrière", ai-je pensé ... Le paquet veeam pour le dépôt deb est pour la plate-forme amd64, et le système d'exploitation Elbrus a la plate-forme x86_64 [TBD]. La différence, bien sûr, n'est que dans le nom, mais cette différence rend presque tous les packages des référentiels deb tiers incompatibles avec le système d'exploitation Elbrus. Ce malentendu gênant est éliminé de manière élémentaire: il suffit d'analyser le paquet, de corriger les informations sur l'architecture et de le récupérer. Comment le faire googlé instantanément.
 mkdir tmp dpkg-deb -R original.deb tmp # edit DEBIAN/postinst dpkg-deb -b tmp fixed.deb 

Un autre problème est les dépendances. Les fichiers nécessaires semblent être là, mais il n'y a pas de packages. Il y avait l'impression que les noms des paquets diffèrent des «analogues étrangers». Les bibliothèques peuvent être regroupées différemment. Je ne suis pas entré dans les détails, j'ai supprimé presque toutes les dépendances et l'installation s'est poursuivie.

Ensuite, des problèmes sont survenus avec le code de démarrage du service. Il n'y avait pas de script /lib/init/vars.sh. Pour une raison quelconque, "Elbrus" s'en passe, nous allons donc également le supprimer. Ensuite, nous avons dû remplacer la fonction de sortie des messages: il n'y avait pas de fonctions log_daemon_msg et log_end_msg. En fouillant dans le fichier / lib / lsb / init-functions, j'ai trouvé la fonction log_success_msg - elle fonctionnera pour nous pour des expériences. À propos, dans le fichier / lib / lsb / init-functions, la ligne "# Source SuSE`s rc functions" au début du fichier [TBD].

Après un traitement aussi approximatif du package avec un fichier, la sauvegarde de la machine entière sur la boule NFS a démarré avec succès. Le montage de sauvegarde a également réussi. Donc, je suppose que pour sauvegarder une machine avec Elbrus PDK, téléchargée pour "juste comme ça" sans aucune obligation, Veeam Agent pour Linux est définitivement adapté. Même après toutes les modifications avec un fichier.

Bien sûr, formellement, le kit de distribution du système d'exploitation Elbrus n'est pas pris en charge, car il n'est pas inclus dans la liste des systèmes pris en charge. De plus, Veeam Agent pour Linux n'a pas été testé par le département QA, donc ceux-là. aucun support (au moins au moment de la publication de l'article).

J'espère que cet article sera utile à ceux qui tentent de mettre en œuvre l'ordonnance n ° 334 du 29 juin 2017. À moi ... [TBD].

Source: https://habr.com/ru/post/fr447960/


All Articles