Hæ allir
Nýlegar greinar um Habré
Í fyrsta lagi ákvað ég að hlaða niður Elbrus stýrikerfinu, eða réttara sagt, aðeins tiltæka dreifingu fyrir x86_64 arkitektúrinn, sjá hvernig það virkar og reyna að setja upp Veeam Agent fyrir Linux á það. Ef þú vilt vita hvað kom út úr þessu, vinsamlegast sjáðu kött.
Svo, smá frávik, ef einhver veit það ekki. "Elbrus" er svona
Önnur lítil þvinguð hörfa. Staðreyndin er sú að ég fékkst einu sinni við innlendan hugbúnað eins og MSVS og Baguette RTOS. Ég hafði reynslu af því að vinna með innlenda íhluti, þar á meðal örgjörva frá MCST. Þess vegna get ég sagt með fullri ábyrgð að það er ákveðin sérstaða á þessu sviði og ég mun reyna að koma ekki inn á það í greininni. Þegar ég virkilega vil, set ég merkið [TBD]. Þannig að við munum reyna að gera það án þess að vera beinlínis trolla og banal styn. Að lokum þarf að skilja rússneska varnariðnaðinn og ríkisstofnanir. Stórt land - lítið fjárhagsáætlun. [TBD].
Núll stig - niðurhal. Það er athyglisvert að fréttirnar um að Elbrus OS sé orðið fáanlegt olli ómun, svo mikið að dreifingarþjónninn fór niður. [TBD] Þökk sé Yandex og verkfræðingnum sem datt í hug að flytja það þangað. Þannig að niðurhalshraðinn er góður.
Í fyrsta áfanga - uppsetning. Ég setti það upp á fyrsta hypervisor sem var fáanlegur til ókeypis notkunar. Ég úthlutaði tveimur kjarna, nokkrum tónleikum af vinnsluminni, 32 MB fyrir myndband (það verður grafískt viðmót, hélt ég). Diskurinn er eins og venjulega - 32 GB.
Ég byrjaði á uppsetningunni. Ég notaði ekki uppsetningarleiðbeiningarnar, svo ég get ekki tjáð mig um það. TUI uppsetningarviðmótið er mjög naumhyggjulegt.
Jæja, frábært, við getum verið án músar.
Ég stjórnaði næsta glugga í annarri tilraun. Af hverju ekki að velja sjálfgefið tæki sr0 [TBD] þegar þú setur upp af diski?
Veldu geisladiskinn og haltu áfram.
Þegar ég valdi tímabeltið áttaði ég mig skyndilega á því að kerfið notar init ræsingarferlið og ég er að vinna frá TTY0.
Allt í lagi, þá skulum við flokka „Elbrus“ sem samfélag
Restin skiptir nánast engu máli: við setjum allt og erum sammála. Í leiðinni komumst við að því að kjarninn er notaður 3.14.79-13.84. Hmm, Debian 7 var með 3.2 [TBD].
Næst skaltu velja sjálfgefna diskskiptingu og ... Við sjáum viðvörun:
Hmm, einhvern veginn réði sjálfvirka skiptingin ekki vel við 32 gig disk. Ég breytti ekki disknum; ég kláraði leitina með handvirkri diskskiptingu í „allt-í-einn“ stíl. Ég þurfti að setja upp ext3, þar sem /boot gat ekki verið í ext4.
Kerfið kom upp án atvika.
The second leiksvið - leitaðu að valkostum.
Eftir að hafa grúfað í gegnum innihald seinni disksins áttaði ég mig á því að þetta er geymsla með viðbótar. í pakka. Og þegar ég skoðaði /etc/apt/sources.list áttaði ég mig á því að það þarf að tengja það í /mnt/cdrom. En ég fann ekki /etc/os-release. En það er /etc/mcst-útgáfa með innihaldinu 3.0-rc36. 3.0 er líklega útgáfan - hún virðist passa, en rc36? Almennt séð mun hugbúnaður frá þriðja aðila líklegast ekki geta þekkt þessa dreifingu á klassískan hátt.
Í rót skiptingunni grípur /mcst skrárinn auga mitt og þar, með sökkvandi hjarta, uppgötvaði ég /mcst/backup. Það er, það er öryggisafritunartæki og það er innbyggt í kerfið! „Frábært,“ hugsaði ég, „Við skulum sjá hvernig þetta virkar!
Það kom í ljós að það er 4Kb bash script /mcst/bin/backup sem veitir skráaafritun. Sjálfgefið - í /mcst/backup möppuna. Í frumkóðann bjóst ég við að sjá rsync skipunina, en hún er ekki í sjálfgefna stillingu. Handritið afritar einfaldlega skrár. Skipunin lítur einhvern veginn svona út:
cp -rpdx <file backup> <file>
Öll skráin /mcst/bin/backup er hérÉg vara þig strax við því að þetta handrit eitt og sér er ekki nóg til að skilja það til fulls. Það dregur aðgerðir frá /mcst/bin/source, sem er eitthvað eins og aðgerðasafn. Ég lét það ekki fylgja með (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
Þó, kannski skildi ég ekki eitthvað? Kannski getur einhver útskýrt í athugasemdunum: hvernig tryggir þetta handrit öruggt og áreiðanlegt öryggisafrit af gögnum? [TBD]
rsync, við the vegur, er innifalinn í viðbótinni. geymslum. Útgáfa 3.1.3. Ég held að notkun rsync sé samt betri valkostur við /mcst/bin/afritunarforritið.
Næst ákvað ég að setja ferskan Veeam Agent fyrir Linux. Einhver mun spyrja: "Hvað hefur Veeam og innflutningsskipti með það að gera?" Já, það er ekki í skránni, en það er vottað af FSTEC, sem þýðir að það er hægt að nota það ef ekki eru valkostir. Að eyða fimmtán mínútum í val frá
Stage þrjú — uppsetning á Veeam Agent fyrir Linux.
Svo, Veeam Agent fyrir Linux samanstendur af tveimur pökkum: veeamsnap kjarnaeiningunni (við the vegur,
Það var eitt lítið vandamál við að setja upp kjarnaeininguna - dkms pakkann sem vantar. Þetta er þjónusta sem gerir þér kleift að smíða kjarnaeiningar frá uppruna. Að jafnaði er það fáanlegt á öllum skuldadreifingum. Ég þurfti að hlaða því niður frá þriðja aðila deb geymslu. Eitt sem gladdi mig er að pakkinn er ekki háður arkitektúrnum, svo hann passar eins og innfæddur. Af hverju var það ekki innifalið á listanum yfir tiltæka pakka, eða öllu heldur, ekki þróað [TBD]? Kannski er gert ráð fyrir að enginn ætti að byggja og keyra neinar kjarnaeiningar sem ekki eru MCST. Það er í raun misræmi hér - þar sem það eru linux-hausar. Það er að segja að eininguna, ef þess er óskað, er hægt að setja saman í höndunum og ræsa hana með handriti þegar vélin fer í gang. Ég held að þú ættir ekki að búast við tíðum uppfærslum frá MCST [TBD].
„Allt í lagi, einingin er uppsett - erfiðasta hlutinn er búinn,“ hugsaði ég... Veeam pakkinn fyrir deb geymsluna er fyrir amd64 pallinn og Elbrus OS er með x86_64 [TBD] vettvang. Munurinn er auðvitað aðeins í nafninu, en þessi munur gerir næstum alla pakka frá þriðja aðila deb geymslum ósamrýmanlegir Elbrus OS. Hægt er að útrýma þessum pirrandi misskilningi einfaldlega: Taktu pakkann í sundur, leiðréttu upplýsingarnar um arkitektúrinn og settu hann saman aftur. Hvernig á að gera það
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Annað vandamál er ósjálfstæði. Nauðsynlegar skrár virðast vera til staðar, en pakkarnir eru það ekki. Tilfinningin var sú að nöfn pakkninganna væru frábrugðin „innfluttum hliðstæðum“ þeirra. Kannski eru bókasöfnin öðruvísi pakkað. Ég fór ekki í smáatriði, fjarlægði næstum öll ósjálfstæði og uppsetningin hélt áfram.
Þá komu upp vandamál með upphafskóða þjónustunnar. Handritið /lib/init/vars.sh vantaði. Af einhverjum ástæðum tekst Elbrus án þess, svo við munum fjarlægja það líka. Næst þurftum við að skipta út skilaboðaúttaksaðgerðinni: log_daemon_msg og log_end_msg aðgerðirnar vantaði. Eftir að hafa grúfað um í /lib/lsb/init-functions skránni fann ég log_success_msg fallið - það mun vera gott fyrir okkur fyrir tilraunir. Við the vegur, í /lib/lsb/init-functions skránni er línan „# Source SuSE`s rc functions“ í upphafi [TBD] skráarinnar.
Eftir svona grófa vinnslu á pakkanum með skrá tókst að hleypa afriti allrar vélarinnar á NFS-hlutinn af stað. Afritunarfestingin tókst einnig. Svo ég tel að til að taka öryggisafrit af vél með Elbrus PDK, hlaðið niður „svona“ án nokkurra skuldbindinga, henti Veeam Agent fyrir Linux örugglega. Jafnvel eftir allar breytingar með skrá.
Auðvitað er Elbrus OS dreifingarsettið ekki formlega stutt þar sem það er ekki innifalið á listanum yfir þau sem eru studd. Að auki var Veeam Agent fyrir Linux ekki prófað á því af QA deildinni, þannig að þeir. það er enginn stuðningur (a.m.k. við birtingu greinarinnar).
Ég vona að greinin nýtist þeim sem eru að reyna að innleiða pöntun nr. 334 frá 29.06.2017. júní XNUMX. Mitt til þín... [TBD].
Heimild: www.habr.com