Hi kulħadd
Artikli riċenti dwar Habré
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
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.
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.
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.
OK, allura ejja nikklassifikaw "Elbrus" bħala komunità
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:
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
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,
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
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