Sveiki visiem
JaunÄkie raksti par HabrÄ
PirmkÄrt, es nolÄmu lejupielÄdÄt Elbrus OS, pareizÄk sakot, tikai pieejamo izplatÄ«Å”anu x86_64 arhitektÅ«rai, redzÄt, kÄ tÄ darbojas, un mÄÄ£inÄt tajÄ instalÄt Veeam Agent for Linux. Ja vÄlaties uzzinÄt, kas no tÄ iznÄca, lÅ«dzu, skatiet kaÄ·i.
TÄtad, neliela atkÄpe, ja kÄds nezina. "Elbruss" ir tÄds
VÄl viena neliela piespiedu atkÄpÅ”anÄs. Fakts ir tÄds, ka es kÄdreiz nodarbojos ar vietÄjo programmatÅ«ru, piemÄram, MSVS un Baguette RTOS. Man bija pieredze darbÄ ar vietÄjiem komponentiem, ieskaitot procesoru no MCST. TÄpÄc ar pilnu atbildÄ«bu varu teikt, ka Å”ajÄ jomÄ ir zinÄma specifika un es centÄ«Å”os to rakstÄ neaiztikt. Kad es patieÅ”Äm vÄlÄÅ”os, es ielikÅ”u tagu [TBD]. TÄpÄc mÄÄ£inÄsim iztikt bez tieÅ”as troļļoÅ”anas un banÄlas vaidÄÅ”anas. Galu galÄ ir jÄsaprot Krievijas aizsardzÄ«bas nozare un valsts aÄ£entÅ«ras. Liela valsts - mazs budžets.. [TBD].
Nulles posms - lejupielÄdÄt. ZÄ«mÄ«gi, ka ziÅas, ka Elbrus OS ir kļuvusi pieejama, izraisÄ«ja tik lielu rezonansi, ka izplatÄ«Å”anas serveris nokrita. [TBD] Paldies Yandex un inženierim, kurÅ” domÄja to pÄrvietot uz turieni. TÄtad lejupielÄdes Ätrums ir labs.
Pirmais posms - uzstÄdÄ«Å”ana. Es to instalÄju pirmajÄ hipervizorÄ, kas bija pieejams bezmaksas lietoÅ”anai. PieŔķīru divus kodolus, pÄris gigus RAM, 32 MB video (bÅ«s grafiskais interfeiss, domÄju). Disks ir kÄ parasti - 32 GB.
Es sÄku instalÄÅ”anu. Es neizmantoju uzstÄdÄ«Å”anas instrukciju, tÄpÄc nevaru to komentÄt. TUI instalÄcijas interfeiss ir ļoti minimÄlistisks.
Nu lieliski, varam iztikt bez peles.
Man izdevÄs nÄkamais logs otrajÄ mÄÄ£inÄjumÄ. KÄpÄc, instalÄjot no diska, neizvÄlÄties noklusÄjuma ierÄ«ci sr0 [TBD]?
IzvÄlieties CD-ROM avotu un turpiniet.
IzvÄloties laika joslu, es pÄkÅ”Åi sapratu, ka sistÄma izmanto init boot procesu, un es strÄdÄju no TTY0.
Labi, tad klasificÄsim āElbrusā kÄ kopienu
PÄrÄjais ir gandrÄ«z nesvarÄ«gs: visu noliekam un vienojamies. Pa ceļam uzzinÄm, ka kodols tiek izmantots 3.14.79-13.84. Hmm, Debian 7 bija 3.2 [TBD].
PÄc tam atlasiet noklusÄjuma diska nodalÄ«jumu un... MÄs redzam brÄ«dinÄjumu:
Hmm, kaut kÄ automÄtiskÄ sadalÄ«Å”ana netika galÄ ar 32 giga disku. Es nemainÄ«ju disku; es pabeidzu uzdevumu ar manuÄlu diska sadalÄ«Å”anu "viss vienÄ" stilÄ. Man bija jÄinstalÄ ext3, jo /boot nevarÄja bÅ«t ext4.
SistÄma radÄs bez starpgadÄ«jumiem.
Otrais posms - meklÄt alternatÄ«vas.
PÄc rakÅÄÅ”anÄs otrÄ diska saturÄ sapratu, ka Ŕī ir repozitorija ar papildus. iepakojumos. Un apskatot /etc/apt/sources.list, es sapratu, ka tas ir jÄmontÄ /mnt/cdrom. Bet es neatradu /etc/os-release. Bet ir /etc/mcst-version ar saturu 3.0-rc36. 3.0 laikam ir versija - it kÄ der, bet rc36? Parasti treÅ”Äs puses programmatÅ«ra, visticamÄk, nespÄs atpazÄ«t Å”o izplatÄ«Å”anu klasiskÄ veidÄ.
Saknes nodalÄ«jumÄ manu uzmanÄ«bu piesaista direktorijs /mcst, un tur es ar slÄ«doÅ”u sirdi atklÄju /mcst/backup. Tas ir, ir rezerves rÄ«ks, un tas ir iebÅ«vÄts sistÄmÄ! "Lieliski," es nodomÄju, "PaskatÄ«simies, kÄ tas darbojas!"
IzrÄdÄ«jÄs, ka ir 4Kb bash skripts /mcst/bin/backup, kas nodroÅ”ina failu kopÄÅ”anu. PÄc noklusÄjuma - uz /mcst/backup direktoriju. Es gaidÄ«ju avota kodÄ rsync komandu, taÄu tÄ nav noklusÄjuma konfigurÄcijÄ. Skripts vienkÄrÅ”i kopÄ failus. Komanda izskatÄs apmÄram Å”Ädi:
cp -rpdx <file backup> <file>
Å eit ir viss fails /mcst/bin/backupUzreiz brÄ«dinu, ka ar Å”o scenÄriju vien nepietiek, lai pilnÄ«bÄ saprastu. Tas izvelk funkcijas no /mcst/bin/source, kas ir kaut kas lÄ«dzÄ«gs funkciju bibliotÄkai. Es to neiekļÄvu (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
Lai gan, varbÅ«t es kaut ko nesapratu? VarbÅ«t kÄds komentÄros var paskaidrot: kÄ Å”is skripts nodroÅ”ina droÅ”u un uzticamu datu dublÄÅ”anu? [TBD]
rsync, starp citu, ir iekļauts papildinÄjumÄ. krÄtuves. Versija 3.1.3. Es domÄju, ka rsync izmantoÅ”ana joprojÄm ir labÄka alternatÄ«va /mcst/bin/backup lietojumprogrammai.
TÄlÄk es nolÄmu ievietot jaunu Veeam aÄ£ents operÄtÄjsistÄmai Linux. KÄds jautÄs: "KÄds ar to sakars Veeam un importa aizstÄÅ”anai?" JÄ, tas nav reÄ£istrÄts, bet ir sertificÄjis FSTEC, kas nozÄ«mÄ, ka, ja nav alternatÄ«vu, to var izmantot. TÄrÄjot piecpadsmit minÅ«tes alternatÄ«vÄm no plkst
TreÅ”ais posms ā Veeam Agent instalÄÅ”ana operÄtÄjsistÄmai Linux.
TÄtad Veeam Agent for Linux sastÄv no divÄm pakotnÄm: veeamsnap kodola moduļa (starp citu,
Ar kodola moduļa instalÄÅ”anu radÄs viena neliela problÄma - trÅ«kstoÅ”Ä dkms pakotne. Å is ir pakalpojums, kas ļauj izveidot kodola moduļus no avota. Parasti tas ir pieejams visos deb izplatÄ«jumos. Man tas bija jÄlejupielÄdÄ no treÅ”Äs puses deb repozitorija. Viena lieta, kas mani iepriecinÄja, ir tas, ka pakete nav atkarÄ«ga no arhitektÅ«ras, tÄpÄc tÄ der kÄ vietÄjÄ. KÄpÄc tas netika iekļauts pieejamo pakotÅu sarakstÄ vai drÄ«zÄk nav izstrÄdÄts [TBD]? IespÄjams, tiek pieÅemts, ka nevienam nevajadzÄtu veidot un palaist kodola moduļus, kas nav MCST. Å eit patieÅ”Äm ir neatbilstÄ«ba - jo ir Linux galvenes. Tas ir, moduli, ja vÄlas, var salikt ar rokÄm un palaist ar skriptu, kad iekÄrta tiek iedarbinÄta. Es domÄju, ka jums nevajadzÄtu gaidÄ«t biežus atjauninÄjumus no MCST [TBD].
"Labi, modulis ir instalÄts - grÅ«tÄkÄ daļa ir beigusies," es domÄju... Veeam pakotne deb repozitorijai ir paredzÄta platformai amd64, un Elbrus OS ir x86_64 [TBD] platforma. AtŔķirÄ«ba, protams, ir tikai nosaukumÄ, taÄu Ŕī atŔķirÄ«ba padara gandrÄ«z visas pakotnes no treÅ”o puÅ”u deb krÄtuvÄm nesaderÄ«gas ar Elbrus OS. Å o kaitinoÅ”o pÄrpratumu var vienkÄrÅ”i novÄrst: vienkÄrÅ”i izjauciet paketi, izlabojiet informÄciju par arhitektÅ«ru un salieciet to atpakaļ. KÄ to izdarÄ«t
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
VÄl viena problÄma ir atkarÄ«bas. Å Ä·iet, ka nepiecieÅ”amie faili ir, bet pakotnes nav. RadÄs iespaids, ka iepakojumu nosaukumi atŔķiras no to āimportÄtajiem analogiemā. IespÄjams, bibliotÄkas ir iepakotas atŔķirÄ«gi. Es neiedziļinÄjos pÄrÄk daudz detaļÄs, noÅÄmu gandrÄ«z visas atkarÄ«bas, un instalÄÅ”ana turpinÄjÄs.
PÄc tam radÄs problÄmas ar pakalpojuma sÄkuma kodu. TrÅ«ka skripta /lib/init/vars.sh. KÄdu iemeslu dÄļ Elbruss iztiek bez tÄ, tÄpÄc mÄs to arÄ« noÅemsim. TÄlÄk mums bija jÄaizstÄj ziÅojuma izvades funkcija: trÅ«ka funkciju log_daemon_msg un log_end_msg. PÄc rakÅÄÅ”anÄs /lib/lsb/init-functions failÄ atradu funkciju log_success_msg ā tÄ mums noderÄs eksperimentiem. Starp citu, failÄ /lib/lsb/init-functions rinda ā# Source SuSE`s rc functionsā atrodas faila [TBD] sÄkumÄ.
PÄc Å”Ädas aptuvenas pakotnes apstrÄdes ar failu tika veiksmÄ«gi palaists visas maŔīnas dublÄjums NFS koplietojumÄ. ArÄ« rezerves stiprinÄjums bija veiksmÄ«gs. TÄpÄc es uzskatu, ka maŔīnas dublÄÅ”anai ar Elbrus PDK, kas lejupielÄdÄts ātieÅ”i tÄpatā bez jebkÄdÄm saistÄ«bÄm, Veeam Agent for Linux noteikti ir piemÄrots. Pat pÄc visÄm modifikÄcijÄm ar failu.
Protams, Elbrus OS izplatÄ«Å”anas komplekts formÄli netiek atbalstÄ«ts, jo tas nav iekļauts atbalstÄ«to sarakstÄ. TurklÄt Veeam Agent for Linux tajÄ nepÄrbaudÄ«ja kvalitÄtes nodroÅ”inÄÅ”anas nodaļa, tÄpÄc tie. atbalsta nav (vismaz raksta publicÄÅ”anas brÄ«dÄ«).
Ceru, ka raksts būs noderīgs tiem, kas cenŔas īstenot 334. gada 29.06.2017. jūnija rīkojumu Nr.XNUMX. Mans jums... [TBD].
Avots: www.habr.com