Ҳама хонед
Мақолаҳои охирин дар бораи Habré
Пеш аз ҳама, ман тасмим гирифтам, ки Elbrus OS-ро зеркашӣ кунам, ё дурусттараш, танҳо тақсимоти дастрас барои меъмории x86_64, бубинед, ки он чӣ гуна кор мекунад ва кӯшиш кунед, ки Veeam Agent for Linux-ро дар он насб кунам. Агар шумо хоҳед донед, ки аз ин чӣ баромад, лутфан ба гурба нигаред.
Ҳамин тавр, як дурнамои хурд, агар касе намедонад. «Эльбрус» чунин аст
Боз як ақибнишинии хурди маҷбурӣ. Гап дар он аст, ки ман як вақтҳо бо нармафзори ватанӣ, ба монанди MSVS ва Baguette RTOS кор мекардам. Ман таҷрибаи кор бо ҷузъҳои ватанӣ доштам, аз ҷумла протсессори MCST. Бинобар ин, бо камоли масъулият гуфта метавонам, ки дар ин соха як хусусияти муайяне мавчуд аст ва кушиш мекунам, ки дар макола ба он дахл накунам. Вақте ки ман дар ҳақиқат мехоҳам, ман барчаспро [TBD] мегузорам. Аз ин рӯ, мо кӯшиш хоҳем кард, ки бидуни троллинг ва нолаи баналӣ кор кунем. Дар охир, саноати мудофиаи Русия ва сохторҳои давлатии Русия бояд фаҳманд. Кишвари калон - буҷаи хурд.. [TBD].
Марҳилаи сифр - зеркашӣ кунед. Ҷолиби диққат аст, ки хабари дастрас шудани OS Elbrus боиси резонанс гардид, ки сервери тақсимот аз кор рафт. [TBD] Ташаккур ба Яндекс ва муҳандис, ки фикр карданд, ки онро ба он ҷо кӯчонед. Ҳамин тавр, суръати зеркашӣ хуб аст.
Дар марњилаи аввал - насб. Ман онро дар аввалин гипервизор насб кардам, ки барои истифодаи ройгон дастрас буд. Ман ду ядро, якчанд gig RAM, 32 MB барои видео ҷудо кардам (интерфейси графикӣ вуҷуд дорад, ман фикр мекардам). Диски маъмулӣ аст - 32 ГБ.
Ман насбро оғоз кардам. Ман дастурҳои насбкуниро истифода накардаам, бинобар ин ман дар бораи он шарҳ дода наметавонам. Интерфейси насби TUI хеле минималистист.
Хуб, олиҷаноб, мо метавонем бе муш кор кунем.
Ман тирезаи навбатиро дар кӯшиши дуюм идора кардам. Чаро ҳангоми насб аз диск дастгоҳи пешфарз sr0 [TBD] -ро интихоб накунед?
Манбаи CD-ROM-ро интихоб кунед ва идома диҳед.
Ҳангоми интихоби минтақаи вақт, ман ногаҳон фаҳмидам, ки система раванди оғозёбиро истифода мебарад ва ман аз TTY0 кор мекунам.
Хуб, биёед "Элбрус"-ро ҳамчун ҷомеа тасниф кунем
Боқимонда қариб муҳим нест: мо ҳама чизро мегузорем ва розӣ мешавем. Дар баробари ин, мо мефаҳмем, ки ядро 3.14.79-13.84 истифода мешавад. Ҳмм, Debian 7 3.2 [TBD] дошт.
Баъдан, тақсимоти пешфарзии дискро интихоб кунед ва... Мо огоҳиро мебинем:
Ҳмм, гӯё тақсимоти худкор бо диски 32 гиг хуб кор накард. Ман дискро иваз накардаам; ман дархостро бо тақсимоти дастӣ дар услуби "ҳама дар як" анҷом додам. Ман бояд ext3-ро насб кунам, зеро / boot дар ext4 буда наметавонад.
Система бидуни ҳодиса ба кор омад.
Марҳилаи дуюм - ҷустуҷӯи алтернативаҳо.
Пас аз тафтиш кардани мундариҷаи диски дуюм, ман фаҳмидам, ки ин як анбори иловагӣ аст. дар бастаҳо. Ва ба /etc/apt/sources.list нигариста, ман фаҳмидам, ки он бояд дар /mnt/cdrom насб карда шавад. Аммо ман /etc/os-release-ро наёфтам. Аммо /etc/mcst-version бо мундариҷаи 3.0-rc36 мавҷуд аст. Эҳтимол 3.0 версияи аст - он ба назар мерасад, мувофиқ аст, аммо rc36? Умуман, нармафзори тарафи сеюм эҳтимолан ин тақсимотро бо роҳи классикӣ эътироф карда наметавонад.
Дар қисмати реша феҳристи /mcst чашми маро ба худ ҷалб мекунад ва дар он ҷо бо дили ғарқшуда ман /mcst/backup-ро кашф кардам. Яъне, як воситаи эҳтиётӣ вуҷуд дорад ва он дар система сохта шудааст! "Аъло," ман фикр кардам, "биё бубинем, ки ин чӣ гуна кор мекунад!"
Маълум шуд, ки скрипти 4Kb bash /mcst/bin/backup мавҷуд аст, ки нусхабардории файлҳоро таъмин мекунад. Бо нобаёнӣ - ба феҳристи /mcst/backup. Дар коди сарчашма интизор будам, ки фармони rsync -ро бубинам, аммо он дар конфигуратсияи пешфарз нест. Скрипт танҳо файлҳоро нусхабардорӣ мекунад. Фармон чунин менамояд:
cp -rpdx <file backup> <file>
Тамоми файли /mcst/bin/backup дар ин ҷостМан фавран шуморо огоҳ мекунам, ки танҳо ин скрипт барои пурра фаҳмидан кофӣ нест. Он функсияҳоро аз /mcst/bin/source мегирад, ки чизе ба китобхонаи функсияҳо монанд аст. Ман онро дохил накардаам (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
Ҳарчанд, шояд ман чизе нафаҳмидам? Шояд касе метавонад дар шарҳҳо шарҳ диҳад: чӣ гуна ин скрипт нусхабардории бехатар ва боэътимоди маълумотро таъмин мекунад? [TBD]
rsync, ба ҳар ҳол, ба илова дохил карда шудааст. анборҳо. Версияи 3.1.3. Ман фикр мекунам, ки истифодаи rsync ҳоло ҳам алтернативаи беҳтар ба барномаи /mcst/bin/backup аст.
Баъдан, ман қарор додам, ки як навро гузорам Veeam Agent барои Linux. Касе мепурсад: "Veeam ва ивазкунандаи воридот ба он чӣ иртибот дорад?" Бале, он дар феҳрист нест, аммо он аз ҷониби FSTEC тасдиқ шудааст, яъне дар сурати мавҷуд набудани алтернативаҳо он метавонад истифода шавад. Харҷ понздаҳ дақиқа оид ба алтернативаҳои аз
Давраи сеюм — насби Veeam Agent барои Linux.
Ҳамин тавр, Veeam Agent барои Linux аз ду баста иборат аст: модули ядрои veeamsnap (дар омади гап,
Ҳангоми насб кардани модули ядро як мушкилоти хурд вуҷуд дошт - бастаи гумшудаи dkms. Ин хидматест, ки ба шумо имкон медиҳад модулҳои ядроиро аз манбаъ созед. Чун қоида, он дар ҳама тақсимоти deb дастрас аст. Ман бояд онро аз анбори деби тарафи сеюм зеркашӣ кунам. Як чизе, ки маро шод кард, ин аст, ки баста аз меъморӣ вобаста нест, бинобар ин он мисли як модарӣ мувофиқ аст. Чаро он ба рӯйхати бастаҳои дастрас дохил карда нашудааст, ё дурусттараш [TBD] таҳия нашудааст? Эҳтимол тахмин карда мешавад, ки ҳеҷ кас набояд ягон модули ядрои ғайри MCST сохта ва идора кунад. Дар ҳақиқат дар ин ҷо ихтилоф вуҷуд дорад - зеро сарлавҳаҳои Linux мавҷуданд. Яъне, агар хоҳед, модулро дастӣ ҷамъ кардан мумкин аст ва ҳангоми ба кор андохтани мошин тавассути скрипт ба кор андохта мешавад. Ман фикр мекунам, ки шумо набояд аз MCST [TBD] навсозиҳои зуд-зуд интизор шавед.
"Хуб, модул насб карда шуд - қисми душвортарин тамом шуд", ман фикр кардам... Бастаи veeam барои анбори deb барои платформаи amd64 аст ва Elbrus OS дорои платформаи x86_64 [TBD] мебошад. Фарқият, албатта, танҳо дар ном аст, аммо ин фарқият қариб ҳама бастаҳоро аз анбори деби тарафи сеюм бо OS Elbrus номувофиқ месозад. Ин нофаҳмии дилгиркунанда метавонад танҳо бартараф карда шавад: танҳо бастаро ҷудо кунед, маълумотро дар бораи меъморӣ ислоҳ кунед ва онро дубора якҷоя кунед. Чӣ тавр бояд кард
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Мушкилоти дигар вобастагӣ аст. Ба назар чунин мерасад, ки файлҳои зарурӣ дар он ҷо ҳастанд, аммо бастаҳо нестанд. Чунин таассурот пайдо шуд, ки номи бастаҳо аз “аналогҳои воридотӣ”-и онҳо фарқ мекунад. Шояд китобхонаҳо ба таври гуногун бастабандӣ карда шудаанд. Ман ба тафсилоти аз ҳад зиёд ворид нашудам, қариб ҳама вобастагиҳоро бартараф кардам ва насбкунӣ пеш рафт.
Пас аз он мушкилот бо рамзи оғози хидмат пайдо шуданд. Скрипт /lib/init/vars.sh набуд. Бо баъзе сабабҳо, Элбрус бе он идора мекунад, аз ин рӯ мо онро низ нест мекунем. Баъдан, мо бояд вазифаи баромади паёмро иваз кунем: функсияҳои log_daemon_msg ва log_end_msg набуданд. Пас аз варақ задан дар файли /lib/lsb/init-functions, ман функсияи log_success_msg -ро ёфтам - он барои мо барои таҷрибаҳо муфид хоҳад буд. Дар омади гап, дар файли /lib/lsb/init-functions сатри "# Source SuSE`s rc functions" дар аввали файли [TBD] ҷойгир аст.
Пас аз чунин коркарди дағалонаи баста бо файл, захираи пурраи мошин дар саҳми NFS бомуваффақият оғоз ёфт. Монтажи эҳтиётӣ низ муваффақ буд. Ҳамин тавр, ман боварӣ дорам, ки барои нусхабардории мошин бо Elbrus PDK, ки "ҳамин тавр" бе ягон ӯҳдадорӣ зеркашӣ карда шудааст, Veeam Agent барои Linux бешубҳа мувофиқ аст. Ҳатто пас аз ҳама тағиротҳо бо файл.
Албатта, маҷмӯаи тақсимоти Elbrus OS ба таври расмӣ дастгирӣ намешавад, зеро он ба рӯйхати дастгиршавандаҳо дохил карда нашудааст. Илова бар ин, Veeam Agent for Linux аз ҷониби шӯъбаи QA санҷида нашудааст, бинобар ин онҳо. дастгирӣ нест (ҳадди ақал дар вақти нашри мақола).
Умедворам, ки мақола барои онҳое, ки кӯшиши иҷрои фармони No334 аз 29.06.2017 июни соли XNUMX доранд, муфид хоҳад буд. Аз ман ба шумо... [TBD].
Манбаъ: will.com