Kaixo guztioi
HabrΓ©-ri buruzko azken artikuluak
Lehenik eta behin, Elbrus OS-a deskargatzea erabaki nuen, edo hobeto esanda, x86_64 arkitekturarako eskuragarri dagoen banaketa soilik, nola funtzionatzen duen ikusi eta bertan Veeam Agent for Linux instalatzen saiatzea. Honetatik zer atera den jakin nahi baduzu, ikusi cat.
Beraz, digresio txiki bat, norbaitek ezagutzen ez badu. "Elbrus" horrelakoa da
Beste erretiro behartu txiki bat. Kontua da behin etxeko softwareaz aritu nintzela, MSVS eta Baguette RTOS adibidez. Etxeko osagaiekin lanean esperientzia nuen, MCST-ko prozesadore batekin barne. Horregatik, erantzukizun osoz esan dezaket arlo honetan nolabaiteko berezitasun bat dagoela eta artikuluan hori ez ukitzen saiatuko naiz. Benetan nahi dudanean, etiketa [TBD] jarriko dut. Beraz, trolling eta intziri hutsal gabe egiten saiatuko gara. Azkenean, Errusiako defentsa industria eta gobernu-agentziak ulertu behar dira. Herrialde handia - aurrekontu txikia... [TBD].
Zero etapa - deskargatu. Azpimarratzekoa da Elbrus OS eskuragarri egon den albisteak oihartzuna eragin zuela, hainbesteraino non banaketa zerbitzariak behera egin zuela. [TBD] Eskerrik asko Yandex-i eta hara eramatea pentsatu zuten ingeniariari. Beraz, deskarga abiadura ona da.
Lehenengo etapa - instalazioa. Doako erabilerarako erabilgarri zegoen lehen hipervisorean instalatu nuen. Bi nukleo esleitu nituen, RAM pare bat giga, 32 MB bideorako (interfaze grafiko bat egongo da, pentsatu nuen). Diskoa ohi bezala da - 32 GB.
Instalazioa hasi nuen. Ez ditut instalatzeko argibideak erabili, beraz, ezin dut komentatu. TUI instalazio interfazea oso minimalista da.
Tira, bikaina, sagurik gabe egin dezakegu.
Hurrengo leihoa bigarren saiakeran kudeatu nuen. Zergatik ez hautatu sr0 gailu lehenetsia [TBD] diskotik instalatzean?
Hautatu CD-ROM iturria eta aurrera.
Ordu-eremua hautatzean, bat-batean konturatu nintzen sistemak init boot prozesua erabiltzen duela eta TTY0tik ari naiz lanean.
Ados, orduan sailka dezagun "Elbrus" komunitate gisa
Gainontzekoak ia garrantzirik ez du: dena jarri eta ados jartzen dugu. Bide horretan, nukleoa 3.14.79-13.84 erabiltzen dela jakin dugu. Hmm, Debian 7k 3.2 [TBD] zituen.
Ondoren, hautatu diskoaren partizio lehenetsia eta... Abisu bat ikusiko dugu:
Hmm, nolabait partizio automatikoak ez zuen ondo moldatzen 32 gigako disko batekin. Ez nuen diskoa aldatu; bilaketa eskuz disko partizioarekin osatu nuen "guztiak" estiloan. Ext3 instalatu behar izan nuen, /boot ezin baitzen ext4-n egon.
Sistema istilurik gabe sortu zen.
Bigarren etapa - Alternatibak bilatzea.
Bigarren diskoaren edukia arakatu ondoren, konturatu nintzen gehigarridun biltegi bat dela. paketeetan. Eta /etc/apt/sources.list-era begiratuta, /mnt/cdrom-en muntatu behar dela konturatu naiz. Baina ez nuen /etc/os-release aurkitu. Baina bada /etc/mcst-bertsioa 3.0-rc36 edukiarekin. 3.0 da ziurrenik bertsioa - badirudi egokitzen dela, baina rc36? Oro har, hirugarrenen softwareak ziurrenik ezin izango du banaketa hori modu klasikoan ezagutu.
Erroko partizioan, /mcst direktorioak begia ematen dit, eta han, bihotza hondoratuta, /mcst/backup aurkitu nuen. Hau da, babeskopia tresna bat dago, eta sisteman sartuta dago! "Oso", pentsatu nuen, "Ikus dezagun nola funtzionatzen duen!"
Fitxategiak kopiatzeko aukera ematen duen 4Kb bash script /mcst/bin/backup dagoela ikusi zen. Lehenespenez - /mcst/backup direktoriora. Iturburu-kodean rsync komandoa ikustea espero nuen, baina ez dago lehenetsitako konfigurazioan. Scriptak fitxategiak kopiatzen ditu. Komandoak honelako itxura du:
cp -rpdx <file backup> <file>
/mcst/bin/backup fitxategi osoa hemen dagoBerehala ohartarazten dizut gidoi hau bakarrik ez dela nahikoa guztiz ulertzeko. /mcst/bin/source-tik funtzioak ateratzen ditu, hau da, funtzioen liburutegi baten antzeko zerbait da. Ez dut sartu (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
Nahiz eta, agian ez nuen zerbait ulertu? Agian norbaitek azaldu dezake iruzkinetan: nola bermatzen du script honek datuen babeskopia segurua eta fidagarria? [TBD]
rsync, bide batez, gehigarrian sartzen da. biltegiak. 3.1.3 bertsioa. Uste dut rsync erabiltzea /mcst/bin/backup aplikazioaren alternatiba hobea dela oraindik.
Jarraian, berri bat jartzea erabaki nuen Veeam Agentea Linuxerako. Norbaitek galdetuko du: "Zer dute Veeam eta inportazioen ordezkapenak horrekin?" Bai, ez dago erregistroan, baina FSTECek ziurtatuta dauka, hau da, alternatibarik ezean erabil daiteke. Hamabost minutu emanez alternatibatik
hiru etapa β Veeam Agent Linux-erako instalatzea.
Beraz, Veeam Agent for Linux-ek bi pakete ditu: veeamsnap kernel modulua (bide batez,
Arazo txiki bat izan zen nukleoaren modulua instalatzean: falta den dkms paketea. Nukleoaren moduluak iturburutik eraikitzeko aukera ematen duen zerbitzu bat da. Oro har, zor banaketa guztietan dago eskuragarri. Hirugarrenen deb biltegi batetik deskargatu behar izan nuen. Zoriontsu egin ninduen gauza bat da paketea ez dagoela arkitekturaren araberakoa, beraz jatorrizko baten moduan egokitzen dela. Zergatik ez zen eskuragarri dauden paketeen zerrendan sartu, edo hobeto esanda, ez zen garatua [TBD]? Beharbada suposatzen da inork ez duela MCST nukleoko modulurik eraiki eta exekutatu behar. Benetan desadostasun bat dago hemen - linux-goiburuak daudenez. Hau da, modulua, nahi izanez gero, eskuz munta daiteke eta script baten bidez abiarazi daiteke makina martxan jartzen denean. Uste dut ez duzula espero behar MCST-ren maiz eguneratzerik [TBD].
"Ados, modulua instalatuta dago - zatirik zailena amaitu da", pentsatu nuen... Deb biltegirako veeam paketea amd64 plataformarako da, eta Elbrus OS-ak x86_64 [TBD] plataforma bat dauka. Desberdintasuna, noski, izenean bakarrik dago, baina desberdintasun honek hirugarrenen deb biltegietako pakete ia guztiak bateraezinak bihurtzen ditu Elbrus OS-ekin. Gaizki-ulertu gogaikarri hau besterik gabe ezabatu daiteke: paketea desmuntatu, arkitekturari buruzko informazioa zuzendu eta berriro elkartu. Nola egin
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Beste arazo bat mendekotasunak dira. Beharrezko fitxategiak hor daudela dirudi, baina paketeak ez. Inpresioa zen paketeen izenak "inportatutako analogoetatik" desberdinak zirela. Agian liburutegiak modu ezberdinean bilduta daude. Ez nuen xehetasun handirik sartu, ia mendekotasun guztiak kendu eta instalazioak aurrera egin zuen.
Orduan arazoak sortu ziren zerbitzua abiarazteko kodearekin. /lib/init/vars.sh scripta falta zen. Zerbaitegatik, Elbrusek hori gabe kudeatzen du, beraz, guk ere kenduko dugu. Ondoren, mezuen irteerako funtzioa ordezkatu behar izan dugu: log_daemon_msg eta log_end_msg funtzioak falta ziren. /lib/lsb/init-functions fitxategian arakatu ondoren, log_success_msg funtzioa aurkitu dut - esperimentuak egiteko ona izango da guretzat. Bide batez, /lib/lsb/init-functions fitxategian "# Source SuSE`s rc functions" lerroa [TBD] fitxategiaren hasieran dago.
Paketea fitxategi batekin prozesatu latz baten ondoren, NFS partekatzeko makina osoko babeskopia arrakastaz abiarazi zen. Babeskopia muntatzea ere arrakastatsua izan zen. Beraz, uste dut Elbrus PDK-rekin makina baten babeskopiak egiteko, "horrela deskargatuta" inolako betebeharrik gabe, Veeam Agent Linuxerako egokia dela zalantzarik gabe. Fitxategi batekin egindako aldaketa guztien ondoren ere.
Jakina, Elbrus OS banaketa-kit-a ez da formalki onartzen, ez baitago onartzen onartzen direnen zerrendan. Gainera, Veeam Agent for Linux ez zuen QA sailak probatu, beraz. ez dago euskarririk (artikulua argitaratzeko unean behintzat).
Espero dut artikulua baliagarria izatea 334ko ekainaren 29.06.2017ko XNUMX zenbakiko agindua betetzen saiatzen ari direnentzat. Nirea zuretzat... [TBD].
Iturria: www.habr.com