Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']

Halo a h-uile duine.
Artaigilean o chionn ghoirid air Habré Cuir a-steach ionadachadh ann an cleachdadh. Pàirt 1. Roghainnean и Cha do chluich an ceòl fada ... no mar nach robh Elbrus OS a-riamh saor cha d' fhàg e mi gun amharus. Cho-dhùin mi sgrùdadh a dhèanamh air a’ chùis seo ann an co-theacsa na h-obrach cùl-taic. A bharrachd air an sin, ann an an artaigil seo Thathas a’ toirt iomradh air toraidhean Bathar-bog Veeam, a tha a’ ciallachadh gum faodadh a’ chùis a bhith buntainneach gu sònraichte ann an co-theacsa ionadachadh in-mhalairt.

Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']
stòr ìomhaigh tùsail

An toiseach, chuir mi romham an Elbrus OS a luchdachadh sìos, no an àite sin, dìreach an cuairteachadh a tha ri fhaighinn airson ailtireachd x86_64, faic mar a tha e ag obair, agus feuch ri Veeam Agent airson Linux a chuir a-steach air. Ma tha thu airson faighinn a-mach dè a thàinig a-mach à seo, feuch an toir thu sùil air cat.

Mar sin, gluasad beag, air eagal ‘s nach eil fios aig cuideigin. Tha "Elbrus" mar sin pròiseasar le siostam-àithne caran sònraichte. A bharrachd air an sin, tha bathar-bog Elbrus OS ann. Agus - an aghaidh mì-thuigse cumanta - airson an Elbrus OS a bhith ag obair, chan eil feum air siostam bathar-cruaidh a bhith stèidhichte air pròiseasar Elbrus. Tha “PDK“ Elbrus ”airson x86” - gu dearbh, nochd e san raon phoblach ann an cruth diosc stàlaidh. Co-dhiù, tha bonn-nota “PDK - inneal leasachaidh àrd-ùrlar, pasgan leasaiche” - sgoinneil, tha sin a’ ciallachadh gu bheil co-dhiù inneal-cruinneachaidh ann.

Teàrnadh beag èiginneach eile. Is e an fhìrinn gun do dhèilig mi ri bathar-bog dachaigheil aon uair, leithid MSVS agus Baguette RTOS. Bha eòlas agam ag obair le co-phàirtean dachaigheil, a’ toirt a-steach pròiseasar bho MCST. Mar sin, is urrainn dhomh a ràdh le làn dhleastanas gu bheil sònrachas sònraichte san raon seo agus feuchaidh mi gun a bhith a’ bruidhinn air san artaigil. Nuair a tha mi dha-rìribh ag iarraidh, cuiridh mi an taga [TBD]. Mar sin feuchaidh sinn ri dhèanamh às aonais trolling gu tur agus gearan banal. Aig a 'cheann thall, feumar gnìomhachas dìon na Ruis agus buidhnean riaghaltais a thuigsinn. Dùthaich mhòr - buidseat beag.. [TBD].

Ìre neoni - luchdachadh sìos. Bu chòir a thoirt fa-near gun do dh’ adhbhraich an naidheachd gu bheil an Elbrus OS ri fhaighinn suathadh, cho mòr is gun deach am frithealaiche cuairteachaidh sìos. [TBD] Taing do Yandex agus an innleadair a smaoinich air a ghluasad ann. Mar sin tha an astar luchdachadh sìos math.

Tha a 'chiad ìre - stàladh. Chuir mi a-steach e air a’ chiad hypervisor a bha ri fhaighinn airson a chleachdadh an-asgaidh. Thug mi seachad dà chores, dhà no dhà de RAM, 32 MB airson bhidio (bidh eadar-aghaidh grafaigeach ann, shaoil ​​​​mi). Tha an diosg mar as àbhaist - 32 GB.
Thòisich mi air an stàladh. Cha do chleachd mi an stiùireadh stàlaidh, agus mar sin chan urrainn dhomh beachd a thoirt air. Tha an eadar-aghaidh stàlaidh TUI gu math minimalistic.

Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']
Uill, sgoinneil, is urrainn dhuinn a dhèanamh gun luchag.

Stiùir mi an ath uinneag air an dàrna feuchainn. Carson nach tagh thu an inneal bunaiteach sr0 [TBD] nuair a bhios tu a’ stàladh on diosc?
Tagh an stòr CD-ROM agus gluais air adhart.

Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']

Fhad ‘s a bha mi a’ taghadh an raon ùine, thuig mi gu h-obann gu bheil an siostam a ’cleachdadh a’ phròiseas init boot, agus tha mi ag obair bho TTY0.

Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']

Ceart gu leòr, an uairsin leig dhuinn “Elbrus” a sheòrsachadh mar choimhearsnachd Seann Chreidich[TBD]. Ann am prionnsapal, tha seo math: chan fheum thu an còd stòr iarraidh gus faicinn mar a tha am pròiseas luchdachadh sìos ag obair, leis gu bheil a h-uile dad sgrìobhte.

Tha an còrr cha mhòr neo-chudromach: bidh sinn a 'cur a h-uile càil agus ag aontachadh. Air an t-slighe, gheibh sinn a-mach gu bheil an kernel air a chleachdadh 3.14.79-13.84. Hmm, bha 7 [TBD] aig Debian 3.2.

An uairsin, tagh an sgaradh diosc bunaiteach agus ... Chì sinn rabhadh:

Cùl-taic Linux bho Veeam air Elbrus OS. Ion-phortachadh ionadachadh ['?' | '.' | '!']

Hmm, dòigh air choireigin cha do dhèilig an sgaradh fèin-ghluasadach gu math ri diosc 32 gig. Cha do dh’ atharraich mi an diosc; Chuir mi crìoch air a’ cheist le sgaradh diosc làimhe anns an stoidhle “uile-ann-aon”. B’ fheudar dhomh ext3 a stàladh, oir cha b’ urrainn do /boot a bhith ann an ext4.
Thàinig an siostam suas gun tachartas.

An dàrna ìre - lorg roghainnean eile.
Às deidh dhomh a dhol tro na tha san dàrna diosc, thuig mi gur e stòr a tha seo le barrachd. ann am pacaidean. Agus a’ coimhead air /etc/apt/sources.list, thuig mi gum feum e a bhith air a chuir suas ann an /mnt/cdrom. Ach cha do lorg mi /etc/os-release. Ach tha /etc/mcst-version leis an t-susbaint 3.0-rc36. Is dòcha gur e 3.0 an dreach - tha e coltach gu bheil e iomchaidh, ach rc36? San fharsaingeachd, tha e coltach nach bi bathar-bog treas-phàrtaidh comasach air an sgaoileadh seo aithneachadh anns an dòigh chlasaigeach.

Anns a 'bhun-roinn, bidh an eòlaire / mcst a' glacadh mo shùil, agus an sin, le cridhe a 'dol fodha, lorg mi / mcst / backup. Is e sin, tha inneal cùl-taic ann, agus tha e air a thogail a-steach don t-siostam! “Sgoinneil,” smaoinich mi, “chì sinn mar a tha seo ag obair!”

Thionndaidh e a-mach gu bheil sgriobt bash 4Kb / mcst/bin/backup a bheir seachad lethbhreac faidhle. Gu gnàthach - chun eòlaire / mcst/backup. Anns a’ chòd stòr bha dùil agam an àithne rsync fhaicinn, ach chan eil e san rèiteachadh bunaiteach. Tha an sgriobt dìreach a’ dèanamh lethbhreac de fhaidhlichean. Tha an àithne a’ coimhead rudeigin mar seo:

cp -rpdx <file backup> <file>

Tha am faidhle gu lèir /mcst/bin/backup an seoTha mi a’ toirt rabhadh dhut sa bhad nach eil an sgriobt seo leis fhèin gu leòr airson a làn thuigsinn. Bidh e a’ tarraing ghnìomhan bho / mcst/bin/source, rud a tha coltach ri leabharlann ghnìomhan. Cha do chuir mi a-steach e (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

Ged, is dòcha nach do thuig mi rudeigin? Is dòcha gun urrainn dha cuideigin mìneachadh anns na beachdan: ciamar a tha an sgriobt seo a’ dèanamh cinnteach à cùl-taic dàta sàbhailte agus earbsach? [TBD]

rsync, co-dhiù, air a ghabhail a-steach san tuilleadan. tasgaidh. Tionndadh 3.1.3. Tha mi a’ smaoineachadh gu bheil cleachdadh rsync fhathast na roghainn eile nas fheàrr na an tagradh / mcst/bin/backup.

An ath rud, cho-dhùin mi fear ùr a chuir Veeam agent airson linux. Bidh cuideigin a’ faighneachd: “Dè a tha aig Veeam agus ionadachadh in-mhalairt ris?” Tha, chan eil e sa chlàr, ach tha e air a dhearbhadh le FSTEC, a tha a’ ciallachadh gun urrainnear a chleachdadh às aonais roghainnean eile. A 'cosg còig mionaidean deug air roghainnean eile bho clàraidh, Bha e comasach dhomh ceanglaichean 3 a lorg airson an fhacail “cùl-taic” (cha robh gin co-cheangailte ris a’ cheist agam airson an fhacail “tèarmann”). Chan eil mi air mion-sgrùdadh domhainn a dhèanamh air na prògraman sin, agus mar sin cha bhith mi a’ feuchainn ri breithneachadh dè cho freagarrach ‘s a tha iad airson taic a chumail ri innealan a tha a’ ruith Linux. Ge bith cò a tha feumach air tarraingidh e a cho-dhùnadh fhèin agus roinnidh e e anns na beachdan.

Ìre a trì - stàladh Veeam Agent airson Linux.
Mar sin, tha dà phacaid ann an Agent Veeam airson Linux: am modal kernel veeamsnap (co-dhiù, stòr an seo) agus còd àite-cleachdaidh seilbh ann an cruth a’ phacaid veeam.

Bha aon duilgheadas beag ann le stàladh a’ mhodal kernel - am pasgan dkms a bha a dhìth. Is e seo seirbheis a leigeas leat modalan kernel a thogail bhon stòr. Mar riaghailt, tha e ri fhaighinn air a h-uile sgaoileadh deb. B’ fheudar dhomh a luchdachadh sìos bho stòr deasbaid treas-phàrtaidh. Is e aon rud a thug toileachas dhomh nach eil am pasgan an urra ris an ailtireachd, agus mar sin tha e a’ freagairt air fear dùthchasach. Carson nach deach a thoirt a-steach don liosta de phasganan a bha rim faighinn, no an àite sin, nach deach a leasachadh [TBD]? Is dòcha gu bheilear den bheachd nach bu chòir do dhuine sam bith modalan kernel neo-MCST a thogail agus a ruith. Tha fìor eadar-dhealachadh an seo - leis gu bheil linux-headers ann. Is e sin, faodar am modal, ma thogras tu, a chruinneachadh le làimh agus a chuir air bhog le sgriobt nuair a thòisicheas an inneal. Tha mi a’ smaoineachadh nach bu chòir dùil a bhith agad ri ùrachaidhean tric bho MCST [TBD].

“Ceart gu leòr, tha am modal air a chuir a-steach - tha am pàirt as cruaidhe seachad,” shaoil ​​​​mi... Tha am pasgan veeam airson an stòr deb airson an àrd-ùrlar amd64, agus tha àrd-ùrlar x86_64 [TBD] aig an Elbrus OS. Tha an eadar-dhealachadh, gu dearbh, anns an ainm a-mhàin, ach tha an eadar-dhealachadh seo a’ fàgail gu bheil cha mhòr a h-uile pasgan bho stòran deb treas-phàrtaidh neo-chòrdail ris an Elbrus OS. Faodar cuir às don mhì-thuigse neònach seo gu sìmplidh: dìreach cuir às don phacaid, ceartaich am fiosrachadh mun ailtireachd agus cuir air ais e ri chèile. Ciamar a dhèanamh Google e sa bhad.

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

Is e duilgheadas eile eisimeileachd. Tha e coltach gu bheil na faidhlichean riatanach ann, ach chan eil na pacaidean. B’ e a’ bheachd gun robh ainmean nam pacaidean eadar-dhealaichte bho na “analogan a chaidh a thoirt a-steach”. Is dòcha gu bheil na leabharlannan air am pacadh ann an dòigh eadar-dhealaichte. Cha deach mi a-steach gu cus mion-fhiosrachaidh, thug mi air falbh cha mhòr a h-uile eisimeileachd, agus chaidh an stàladh air adhart.

An uairsin nochd duilgheadasan le còd tòiseachaidh na seirbheis. Bha an sgriobt /lib/init/vars.sh a dhìth. Airson adhbhar air choireigin, bidh Elbrus a’ riaghladh às aonais, agus mar sin bheir sinn air falbh e cuideachd. An ath rud, bha againn ri gnìomh toraidh na teachdaireachd a chuir na àite: bha na gnìomhan log_daemon_msg agus log_end_msg a dhìth. Às deidh dhomh rummaging timcheall anns an fhaidhle /lib/lsb/init-functions, lorg mi an gnìomh log_success_msg - bidh e math dhuinn airson deuchainnean. Co-dhiù, anns an fhaidhle /lib/lsb/init-functions tha an loidhne “# Source SuSE`s rc functions” aig toiseach an fhaidhle [TBD].

Às deidh a leithid de ghiollachd garbh den phacaid le faidhle, chaidh an cùl-taic inneal slàn air cuibhreann NFS a chuir air bhog gu soirbheachail. Bha an cùl-taic soirbheachail cuideachd. Mar sin, tha mi a’ creidsinn, airson taic a chumail ri inneal leis an Elbrus PDK, air a luchdachadh sìos “dìreach mar sin” gun dhleastanas sam bith, tha Veeam Agent airson Linux gu cinnteach freagarrach. Fiù 's an dèidh a h-uile mion-atharrachaidhean le faidhle.

Gu dearbh, chan eil taic fhoirmeil aig pasgan cuairteachaidh Elbrus OS, leis nach eil e air a ghabhail a-steach don liosta den fheadhainn le taic. A bharrachd air an sin, cha deach Veeam Agent airson Linux a dhearbhadh air leis an roinn QA, mar sin iadsan. chan eil taic ann (co-dhiù aig àm foillseachaidh an artaigil).

Tha mi an dòchas gum bi an artaigil feumail dhaibhsan a tha a’ feuchainn ri òrdugh Àireamh 334 de 29.06.2017 Ògmhios, XNUMX a chuir an gnìomh. Mèinn dhut... [TBD].

Source: www.habr.com

Cuir beachd ann