Veeam-en Linux babeskopia Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']

Kaixo guztioi
HabrΓ©-ri buruzko azken artikuluak Inportazioen ordezkapena praktikan. 1. zatia. Aukerak ΠΈ Musikak ez zuen denbora luzez jotzen... edo nola Elbrus OS ez zen inoiz aske bihurtu ez ninduen axolagabe utzi. Arazo hau babeskopia-zereginaren testuinguruan aztertzea erabaki nuen. Gainera, urtean Artikulu honetan Veeam Software produktuak aipatzen dira, eta horrek esan nahi du arazoa garrantzitsua izan daitekeela inportazioen ordezkapenaren testuinguruan.

Linuxen babeskopia Veeam-en Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']
jatorrizko irudiaren iturria

Lehenik eta behin, Elbrus OS-a deskargatzea erabaki nuen, edo hobeto esanda, x86_64 arkitekturarako eskuragarri dagoen banaketa soilik, nola funtzionatzen duen ikusi eta bertan Veeam Agent for Linux instalatzen saiatzea. Honetatik zer atera den jakin nahi baduzu, ikusi cat.

Beraz, digresio txiki bat, norbaitek ezagutzen ez badu. "Elbrus" horrelakoa da PUZ aginte-sistema nahiko zehatz batekin. Horrez gain, Elbrus OS softwarea dago. Eta, uste denaren aurka, Elbrus OS funtzionatzeko, ez da beharrezkoa Elbrus prozesadorean oinarritutako hardware sistema bat izatea. "PDK "Elbrus" x86rako" dago - hain zuzen ere, domeinu publikoan agertu zen instalazio-disko moduan. Bide batez, "PDK - plataforma garatzeko kit, garatzaile kit" oin-oharra dago - bikaina, horrek esan nahi du gutxienez konpilatzaile bat dagoela.

Beste erretiro behartu txiki bat. Kontua da behin etxeko softwareaz aritu nintzela, MSVS eta Baguette RTOS adibidez. Etxeko osagaiekin lanean esperientzia nuen, MCST-ko prozesadore batekin barne. Horregatik, erantzukizun osoz esan dezaket arlo honetan nolabaiteko berezitasun bat dagoela eta artikuluan hori ez ukitzen saiatuko naiz. Benetan nahi dudanean, etiketa [TBD] jarriko dut. Beraz, trolling eta intziri hutsal gabe egiten saiatuko gara. Azkenean, Errusiako defentsa industria eta gobernu-agentziak ulertu behar dira. Herrialde handia - aurrekontu txikia... [TBD].

Zero etapa - deskargatu. Azpimarratzekoa da Elbrus OS eskuragarri egon den albisteak oihartzuna eragin zuela, hainbesteraino non banaketa zerbitzariak behera egin zuela. [TBD] Eskerrik asko Yandex-i eta hara eramatea pentsatu zuten ingeniariari. Beraz, deskarga abiadura ona da.

Lehenengo etapa - instalazioa. Doako erabilerarako erabilgarri zegoen lehen hipervisorean instalatu nuen. Bi nukleo esleitu nituen, RAM pare bat giga, 32 MB bideorako (interfaze grafiko bat egongo da, pentsatu nuen). Diskoa ohi bezala da - 32 GB.
Instalazioa hasi nuen. Ez ditut instalatzeko argibideak erabili, beraz, ezin dut komentatu. TUI instalazio interfazea oso minimalista da.

Linuxen babeskopia Veeam-en Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']
Tira, bikaina, sagurik gabe egin dezakegu.

Hurrengo leihoa bigarren saiakeran kudeatu nuen. Zergatik ez hautatu sr0 gailu lehenetsia [TBD] diskotik instalatzean?
Hautatu CD-ROM iturria eta aurrera.

Linuxen babeskopia Veeam-en Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']

Ordu-eremua hautatzean, bat-batean konturatu nintzen sistemak init boot prozesua erabiltzen duela eta TTY0tik ari naiz lanean.

Linuxen babeskopia Veeam-en Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']

Ados, orduan sailka dezagun "Elbrus" komunitate gisa Fede Zaharrak[TBD]. Printzipioz, hau ona da: ez duzu iturburu kodea eskatu behar deskarga prozesua nola funtzionatzen duen ikusteko, dena scripted baitago.

Gainontzekoak ia garrantzirik ez du: dena jarri eta ados jartzen dugu. Bide horretan, nukleoa 3.14.79-13.84 erabiltzen dela jakin dugu. Hmm, Debian 7k 3.2 [TBD] zituen.

Ondoren, hautatu diskoaren partizio lehenetsia eta... Abisu bat ikusiko dugu:

Linuxen babeskopia Veeam-en Elbrus OS-n. Inportazio-ordezkapena ['?' | '.' | '!']

Hmm, nolabait partizio automatikoak ez zuen ondo moldatzen 32 gigako disko batekin. Ez nuen diskoa aldatu; bilaketa eskuz disko partizioarekin osatu nuen "guztiak" estiloan. Ext3 instalatu behar izan nuen, /boot ezin baitzen ext4-n egon.
Sistema istilurik gabe sortu zen.

Bigarren etapa - Alternatibak bilatzea.
Bigarren diskoaren edukia arakatu ondoren, konturatu nintzen gehigarridun biltegi bat dela. paketeetan. Eta /etc/apt/sources.list-era begiratuta, /mnt/cdrom-en muntatu behar dela konturatu naiz. Baina ez nuen /etc/os-release aurkitu. Baina bada /etc/mcst-bertsioa 3.0-rc36 edukiarekin. 3.0 da ziurrenik bertsioa - badirudi egokitzen dela, baina rc36? Oro har, hirugarrenen softwareak ziurrenik ezin izango du banaketa hori modu klasikoan ezagutu.

Erroko partizioan, /mcst direktorioak begia ematen dit, eta han, bihotza hondoratuta, /mcst/backup aurkitu nuen. Hau da, babeskopia tresna bat dago, eta sisteman sartuta dago! "Oso", pentsatu nuen, "Ikus dezagun nola funtzionatzen duen!"

Fitxategiak kopiatzeko aukera ematen duen 4Kb bash script /mcst/bin/backup dagoela ikusi zen. Lehenespenez - /mcst/backup direktoriora. Iturburu-kodean rsync komandoa ikustea espero nuen, baina ez dago lehenetsitako konfigurazioan. Scriptak fitxategiak kopiatzen ditu. Komandoak honelako itxura du:

cp -rpdx <file backup> <file>

/mcst/bin/backup fitxategi osoa hemen dagoBerehala ohartarazten dizut gidoi hau bakarrik ez dela nahikoa guztiz ulertzeko. /mcst/bin/source-tik funtzioak ateratzen ditu, hau da, funtzioen liburutegi baten antzeko zerbait da. Ez dut sartu (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

Nahiz eta, agian ez nuen zerbait ulertu? Agian norbaitek azaldu dezake iruzkinetan: nola bermatzen du script honek datuen babeskopia segurua eta fidagarria? [TBD]

rsync, bide batez, gehigarrian sartzen da. biltegiak. 3.1.3 bertsioa. Uste dut rsync erabiltzea /mcst/bin/backup aplikazioaren alternatiba hobea dela oraindik.

Jarraian, berri bat jartzea erabaki nuen Veeam Agentea Linuxerako. Norbaitek galdetuko du: "Zer dute Veeam eta inportazioen ordezkapenak horrekin?" Bai, ez dago erregistroan, baina FSTECek ziurtatuta dauka, hau da, alternatibarik ezean erabil daiteke. Hamabost minutu emanez alternatibatik erregistroa, "Babeskopia" hitzaren 3 esteka aurkitu ahal izan ditut (ez dago "erreserba" hitzaren nire galderarekin erlazionatuta). Ez dut programa hauen azterketa sakonik egin, beraz, ez naiz saiatuko zein egokiak diren Linux exekutatzen duten makinen babeskopiak egiteko. Behar duenak bere ondorioa aterako du eta iruzkinetan partekatuko du.

hiru etapa β€” Veeam Agent Linux-erako instalatzea.
Beraz, Veeam Agent for Linux-ek bi pakete ditu: veeamsnap kernel modulua (bide batez, iturria hemen) eta jabedun erabiltzailearen espazioko kodea veeam pakete moduan.

Arazo txiki bat izan zen nukleoaren modulua instalatzean: falta den dkms paketea. Nukleoaren moduluak iturburutik eraikitzeko aukera ematen duen zerbitzu bat da. Oro har, zor banaketa guztietan dago eskuragarri. Hirugarrenen deb biltegi batetik deskargatu behar izan nuen. Zoriontsu egin ninduen gauza bat da paketea ez dagoela arkitekturaren araberakoa, beraz jatorrizko baten moduan egokitzen dela. Zergatik ez zen eskuragarri dauden paketeen zerrendan sartu, edo hobeto esanda, ez zen garatua [TBD]? Beharbada suposatzen da inork ez duela MCST nukleoko modulurik eraiki eta exekutatu behar. Benetan desadostasun bat dago hemen - linux-goiburuak daudenez. Hau da, modulua, nahi izanez gero, eskuz munta daiteke eta script baten bidez abiarazi daiteke makina martxan jartzen denean. Uste dut ez duzula espero behar MCST-ren maiz eguneratzerik [TBD].

"Ados, modulua instalatuta dago - zatirik zailena amaitu da", pentsatu nuen... Deb biltegirako veeam paketea amd64 plataformarako da, eta Elbrus OS-ak x86_64 [TBD] plataforma bat dauka. Desberdintasuna, noski, izenean bakarrik dago, baina desberdintasun honek hirugarrenen deb biltegietako pakete ia guztiak bateraezinak bihurtzen ditu Elbrus OS-ekin. Gaizki-ulertu gogaikarri hau besterik gabe ezabatu daiteke: paketea desmuntatu, arkitekturari buruzko informazioa zuzendu eta berriro elkartu. Nola egin Googlen egin du berehala.

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

Beste arazo bat mendekotasunak dira. Beharrezko fitxategiak hor daudela dirudi, baina paketeak ez. Inpresioa zen paketeen izenak "inportatutako analogoetatik" desberdinak zirela. Agian liburutegiak modu ezberdinean bilduta daude. Ez nuen xehetasun handirik sartu, ia mendekotasun guztiak kendu eta instalazioak aurrera egin zuen.

Orduan arazoak sortu ziren zerbitzua abiarazteko kodearekin. /lib/init/vars.sh scripta falta zen. Zerbaitegatik, Elbrusek hori gabe kudeatzen du, beraz, guk ere kenduko dugu. Ondoren, mezuen irteerako funtzioa ordezkatu behar izan dugu: log_daemon_msg eta log_end_msg funtzioak falta ziren. /lib/lsb/init-functions fitxategian arakatu ondoren, log_success_msg funtzioa aurkitu dut - esperimentuak egiteko ona izango da guretzat. Bide batez, /lib/lsb/init-functions fitxategian "# Source SuSE`s rc functions" lerroa [TBD] fitxategiaren hasieran dago.

Paketea fitxategi batekin prozesatu latz baten ondoren, NFS partekatzeko makina osoko babeskopia arrakastaz abiarazi zen. Babeskopia muntatzea ere arrakastatsua izan zen. Beraz, uste dut Elbrus PDK-rekin makina baten babeskopiak egiteko, "horrela deskargatuta" inolako betebeharrik gabe, Veeam Agent Linuxerako egokia dela zalantzarik gabe. Fitxategi batekin egindako aldaketa guztien ondoren ere.

Jakina, Elbrus OS banaketa-kit-a ez da formalki onartzen, ez baitago onartzen onartzen direnen zerrendan. Gainera, Veeam Agent for Linux ez zuen QA sailak probatu, beraz. ez dago euskarririk (artikulua argitaratzeko unean behintzat).

Espero dut artikulua baliagarria izatea 334ko ekainaren 29.06.2017ko XNUMX zenbakiko agindua betetzen saiatzen ari direnentzat. Nirea zuretzat... [TBD].

Iturria: www.habr.com

Gehitu iruzkin berria