Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']

Hi kulħadd
Artikli riċenti dwar Habré Sostituzzjoni ta' importazzjoni fil-prattika. Parti 1. Għażliet и Il-mużika ma daqqitx għal żmien twil... jew kif Elbrus OS qatt ma sar ħieles ma ħalliniex indifferenti. Iddeċidejt li nistudja din il-kwistjoni fil-kuntest tal-kompitu tal-backup. Barra minn hekk, fi Dan l-artikolu Il-prodotti Veeam Software jissemmew, li jfisser li l-kwistjoni tista' tkun rilevanti speċifikament fil-kuntest tas-sostituzzjoni tal-importazzjoni.

Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']
sors oriġinali tal-immaġni

L-ewwelnett, iddeċidejt li tniżżel l-Elbrus OS, jew aħjar, id-distribuzzjoni disponibbli biss għall-arkitettura x86_64, ara kif taħdem, u nipprova ninstalla Veeam Agent għal Linux fuqha. Jekk trid tkun taf x'ħarġu minn dan, jekk jogħġbok ara cat.

Allura, digressjoni żgħira, f'każ li xi ħadd ma jafx. "Elbrus" huwa hekk CPU b'sistema ta' kmand pjuttost speċifika. Minbarra dan, hemm softwer Elbrus OS. U - kuntrarjament għat-twemmin popolari - biex topera l-Elbrus OS, mhux meħtieġ li jkun hemm sistema ta 'hardware bbażata fuq il-proċessur Elbrus. Hemm "PDK "Elbrus" għal x86" - fil-fatt, deher fid-dominju pubbliku fil-forma ta 'disk ta' installazzjoni. Mill-mod, hemm nota f'qiegħ il-paġna "PDK - kit ta 'żvilupp tal-pjattaforma, kit tal-iżviluppatur" - kbir, dan ifisser li hemm mill-inqas kompilatur hemmhekk.

Irtir furzat ieħor żgħir. Il-fatt hu li darba ttrattajt softwer domestiku, bħal MSVS u Baguette RTOS. Kelli esperjenza ta' xogħol ma' komponenti domestiċi, inkluż proċessur mill-MCST. Għalhekk, nista' ngħid b'responsabbiltà sħiħa li hemm ċerta speċifiċità f'dan il-qasam u se nipprova ma nmissx fl-artiklu. Meta nixtieq tassew, inpoġġi t-tikketta [TBD]. Għalhekk se nippruvaw nagħmlu mingħajr trolling għal kollox u moaning banali. Fl-aħħar, l-industrija tad-difiża Russa u l-aġenziji tal-gvern jeħtieġ li jinftiehmu. Pajjiż kbir - baġit żgħir.. [TBD].

Stadju żero - niżżel. Ta’ min jinnota li l-aħbar li l-Elbrus OS saret disponibbli ħolqot reżonanza, tant li s-server tad-distribuzzjoni niżel. [TBD] Grazzi għal Yandex u l-inġinier li ħasbu li jċaqalqu hemmhekk. Allura l-veloċità tat-tniżżil hija tajba.

L-ewwel stadju - installazzjoni. Installajtha fuq l-ewwel hypervisor li kien disponibbli għall-użu b'xejn. Allokajt żewġ cores, ftit gigs ta 'RAM, 32 MB għall-vidjo (se jkun hemm interface grafiku, ħsibt). Id-disk huwa bħas-soltu - 32 GB.
Bdejt l-installazzjoni. Ma użajtx l-istruzzjonijiet ta 'installazzjoni, għalhekk ma nistax nikkummenta dwarha. L-interface tal-installazzjoni tat-TUI hija minimalista ħafna.

Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']
Ukoll, kbir, nistgħu nagħmlu mingħajr maws.

Irnexxieli t-tieqa li jmiss fit-tieni prova. Għaliex ma tagħżel l-apparat default sr0 [TBD] meta tinstalla minn disk?
Agħżel is-sors tas-CD-ROM u kompli.

Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']

Waqt l-għażla taż-żona tal-ħin, f'daqqa waħda rrealizzajt li s-sistema tuża l-proċess tal-bidu tal-bidu, u qed naħdem minn TTY0.

Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']

OK, allura ejja nikklassifikaw "Elbrus" bħala komunità Dawk li jemmnu Qadim[TBD]. Fil-prinċipju, dan huwa tajjeb: m'għandekx bżonn titlob il-kodiċi tas-sors biex tara kif jaħdem il-proċess tat-tniżżil, peress li kollox huwa b'kitba.

Il-bqija huwa kważi mhux importanti: aħna npoġġu kollox u naqblu. Tul it-triq, insibu li l-qalba tintuża 3.14.79-13.84. Hmm, Debian 7 kellu 3.2 [TBD].

Sussegwentement, agħżel il-qsim tad-disk default u... Naraw twissija:

Linux Backup minn Veeam fuq Elbrus OS. Sostituzzjoni ta' l-importazzjoni ['?' | '.' | '!']

Hmm, b'xi mod il-qsim awtomatiku ma rnexxielux ilaħħaq tajjeb ma 'diska ta' 32 gig. Ma biddiltx id-disk, lestejt it-tfittxija b'qsim manwali tad-disk fl-istil "all-in-one". Kelli ninstalla ext3, peress li /boot ma setax ikun f'ext4.
Is-sistema ħarġet mingħajr inċident.

It-tieni stadju - tfittxija għal alternattivi.
Wara rummaging permezz tal-kontenut tat-tieni disk, I induna li dan huwa repożitorju ma addizzjonali. f'pakketti. U nħares lejn /etc/apt/sources.list, indunajt li jeħtieġ li jiġi mmuntat f'/mnt/cdrom. Imma ma sibtx /etc/os-release. Iżda hemm /etc/mcst-version bil-kontenut 3.0-rc36. 3.0 hija probabbilment il-verżjoni - jidher li jaqbel, iżda rc36? B'mod ġenerali, softwer ta 'partijiet terzi x'aktarx ma jkunx kapaċi jagħraf din id-distribuzzjoni bil-mod klassiku.

Fil-partizzjoni ta 'l-għeruq, id-direttorju /mcst jaqbadni l-għajn, u hemm, b'qalb li tegħreq, skoprejt /mcst/backup. Jiġifieri, hemm għodda ta 'backup, u hija mibnija fis-sistema! "Kbir," ħsibt, "Ejja naraw kif jaħdem dan!"

Irriżulta li hemm script bash ta '4Kb /mcst/bin/backup li jipprovdi kkupjar tal-fajls. B'mod awtomatiku - fid-direttorju /mcst/backup. Fil-kodiċi tas-sors stennejt li nara l-kmand rsync, iżda mhuwiex fil-konfigurazzjoni default. L-iskrittura sempliċement tikkopja fajls. Il-kmand jidher xi ħaġa bħal din:

cp -rpdx <file backup> <file>

Il-fajl kollu /mcst/bin/backup jinsab hawnInwissik mill-ewwel li din l-iskrittura waħedha mhix biżżejjed biex tifhem bis-sħiħ. Jiġbed funzjonijiet minn /mcst/bin/source, li hija xi ħaġa bħal librerija ta 'funzjonijiet. I ma inkludiethiex (44KB).

#!/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

Għalkemm, forsi ma fhimtx xi ħaġa? Forsi xi ħadd jista 'jispjega fil-kummenti: kif din l-iskrittura tiżgura backup tad-dejta sikur u affidabbli? [TBD]

rsync, mill-mod, huwa inkluż fil-add-on. repożitorji. Verżjoni 3.1.3. Naħseb li tuża rsync għadha alternattiva aħjar għall-applikazzjoni /mcst/bin/backup.

Sussegwentement, iddeċidejt li npoġġi waħda ġdida Veeam Agent għal Linux. Xi ħadd jistaqsi: "X'għandhom x'jaqsmu Veeam u s-sostituzzjoni tal-importazzjoni magħha?" Iva, mhuwiex fir-reġistru, iżda huwa ċċertifikat mill-FSTEC, li jfisser li fin-nuqqas ta 'alternattivi jista' jintuża. Infiq ħmistax-il minuta fuq alternattivi minn reġistru, Stajt insib 3 links għall-kelma "backup" (l-ebda waħda relatata mal-mistoqsija tiegħi għall-kelma "riżerva"). Jien ma għamiltx analiżi profonda ta 'dawn il-programmi, għalhekk mhux se nipprova niġġudika kemm huma adattati għall-appoġġ ta' magni li jaħdmu Linux. Min għandu bżonn se jiġbed il-konklużjoni tiegħu u jaqsamha fil-kummenti.

It-Tielet Stadju — installazzjoni ta' Veeam Agent għal Linux.
Allura, Veeam Agent għal Linux jikkonsisti f'żewġ pakketti: il-modulu tal-kernel veeamsnap (mill-mod, sors hawn) u kodiċi proprjetarju tal-ispazju tal-utent fil-forma tal-pakkett veeam.

Kien hemm problema żgħira waħda bl-installazzjoni tal-modulu tal-kernel - il-pakkett dkms nieqes. Dan huwa servizz li jippermettilek tibni moduli tal-kernel mis-sors. Bħala regola, huwa disponibbli fuq id-distribuzzjonijiet kollha deb. Kelli niżżel minn repożitorju ta' deb ta' parti terza. Ħaġa waħda li għamlitni kuntenta hija li l-pakkett ma jiddependix fuq l-arkitettura, għalhekk jaqbel bħal wieħed indiġeni. Għaliex ma kienx inkluż fil-lista ta 'pakketti disponibbli, jew aħjar, mhux żviluppat [TBD]? Forsi huwa preżunt li ħadd m'għandu jibni u jħaddem moduli tal-kernel mhux MCST. Hemm tassew diskrepanza hawn - peress li hemm linux-headers. Jiġifieri, il-modulu, jekk mixtieq, jista 'jiġi mmuntat bl-idejn u mniedi permezz ta' skript meta tibda l-magna. Naħseb li m'għandekx tistenna aġġornamenti frekwenti mill-MCST [TBD].

"OK, il-modulu huwa installat - l-iktar parti diffiċli spiċċat," ħsibt... Il-pakkett veeam għar-repożitorju deb huwa għall-pjattaforma amd64, u l-Elbrus OS għandu pjattaforma x86_64 [TBD]. Id-differenza, ovvjament, hija biss fl-isem, iżda din id-differenza tagħmel kważi l-pakketti kollha minn repożitorji ta 'deb ta' partijiet terzi inkompatibbli mal-Elbrus OS. Dan in-nuqqas ta 'ftehim tedjanti jista' jiġi eliminat sempliċiment: sempliċement żarma l-pakkett, ikkoreġi l-informazzjoni dwar l-arkitettura u erġa' poġġiha flimkien. Kif tagħmel dan Googledha istantanjament.

mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb

Problema oħra hija d-dipendenzi. Il-fajls meħtieġa jidhru li qegħdin hemm, iżda l-pakketti mhumiex. L-impressjoni kienet li l-ismijiet tal-pakketti kienu differenti mill-"analogi importati" tagħhom. Forsi l-libreriji huma ppakkjati b'mod differenti. Ma dħaltx wisq dettall, neħħejt kważi d-dipendenzi kollha, u l-installazzjoni kompliet.

Imbagħad ħarġu problemi bil-kodiċi tal-bidu tas-servizz. L-iskript /lib/init/vars.sh kien nieqes. Għal xi raġuni, Elbrus jimmaniġġja mingħajrha, għalhekk aħna nneħħiha wkoll. Sussegwentement, kellna nissostitwixxu l-funzjoni tal-output tal-messaġġ: il-funzjonijiet log_daemon_msg u log_end_msg kienu neqsin. Wara li ħarbtet fil-fajl /lib/lsb/init-functions, sibt il-funzjoni log_success_msg - se tkun tajba għalina għall-esperimenti. Mill-mod, fil-fajl /lib/lsb/init-functions il-linja "# Source SuSE`s rc functions" tinsab fil-bidu tal-fajl [TBD].

Wara tali pproċessar mhux maħdum tal-pakkett b'fajl, il-backup tal-magna sħiħa fuq is-sehem NFS tnieda b'suċċess. Il-muntatura tal-backup kienet ukoll ta 'suċċess. Għalhekk, nemmen li biex tagħmel backup ta 'magna bl-Elbrus PDK, imniżżla "biss hekk" mingħajr ebda obbligu, Veeam Agent għal Linux huwa definittivament adattat. Anke wara l-modifiki kollha bil-fajl.

Naturalment, il-kit tad-distribuzzjoni ta 'Elbrus OS mhuwiex appoġġjat formalment, peress li mhuwiex inkluż fil-lista ta' dawk appoġġjati. Barra minn hekk, Veeam Agent għal Linux ma ġiex ittestjat fuqha mid-dipartiment tal-QA, għalhekk dawk. m'hemm l-ebda appoġġ (mill-inqas fiż-żmien tal-pubblikazzjoni tal-artiklu).

Nittama li l-artiklu jkun utli għal min qed jipprova jimplimenta l-ordni Nru 334 tad-29.06.2017 ta’ Ġunju XNUMX. Tiegħi lilek... [TBD].

Sors: www.habr.com

Żid kumment