ሰላም.
ስለ Habré የቅርብ ጊዜ መጣጥፎች
በመጀመሪያ ደረጃ የኤልብሩስ ስርዓተ ክወናን ለማውረድ ወሰንኩ ወይም ይልቁንስ ለ x86_64 አርክቴክቸር ያለውን ስርጭት ብቻ ፣ እንዴት እንደሚሰራ ይመልከቱ እና በላዩ ላይ የ Veeam Agent ለ Linux ለመጫን ሞከርኩ። ከዚህ ምን እንደመጣ ማወቅ ከፈለጉ እባክዎን ድመትን ይመልከቱ።
ስለዚህ, ትንሽ ዳይሬሽን, አንድ ሰው የማያውቅ ከሆነ. “ኤልብሩስ” እንደዛ ነው።
ሌላ ትንሽ የግዳጅ ማፈግፈግ. እውነታው አንድ ጊዜ እንደ MSVS እና Baguette RTOS ካሉ የሀገር ውስጥ ሶፍትዌሮች ጋር ተገናኝቻለሁ። ከMCST የመጣ ፕሮሰሰርን ጨምሮ ከአገር ውስጥ አካላት ጋር የመሥራት ልምድ ነበረኝ። ስለዚህ, በዚህ አካባቢ ውስጥ የተወሰነ ልዩነት እንዳለ በሙሉ ሃላፊነት መናገር እችላለሁ እና በአንቀጹ ውስጥ እሱን ላለመንካት እሞክራለሁ. የምር ስፈልግ መለያውን [TBD] አኖራለሁ። እንግዲያውስ ያለምንም መጎተቻ እና ባናል ማቃሰት ለማድረግ እንሞክራለን። በመጨረሻም የሩስያ የመከላከያ ኢንዱስትሪ እና የመንግስት ኤጀንሲዎች መረዳት አለባቸው. ትልቅ አገር - ትንሽ በጀት.. [TBD].
ዜሮ ደረጃ - ማውረድ. የኤልብሩስ ስርዓተ ክወና መገኘቱን የሚገልጸው ዜና ከፍተኛ ድምጽ ማሰማቱ ትኩረት የሚስብ ነው, ይህም ስርጭት አገልጋዩ እስከ ታች ድረስ. [TBD] ለ Yandex ምስጋና ይግባውና ወደዚያ ለማንቀሳቀስ ያሰበውን መሐንዲስ። ስለዚህ የማውረድ ፍጥነት ጥሩ ነው.
የመጀመሪያ ደረጃ - መጫን. በነጻ ጥቅም ላይ የዋለው የመጀመሪያው ሃይፐርቫይዘር ላይ ጫንኩት። ሁለት ኮሮች፣ ሁለት ጊጋ ራም 32 ሜባ ለቪዲዮ መደብኩኝ (የግራፊክ በይነገጽ ይኖራል ብዬ አስቤ ነበር።) ዲስኩ እንደተለመደው - 32 ጂቢ.
መጫኑን ጀመርኩ. የመጫኛ መመሪያዎችን አልተጠቀምኩም, ስለዚህ በእሱ ላይ አስተያየት መስጠት አልችልም. የ TUI መጫኛ በይነገጽ በጣም አናሳ ነው።
ደህና ፣ ጥሩ ፣ ያለ መዳፊት ማድረግ እንችላለን።
በሁለተኛው ሙከራ የሚቀጥለውን መስኮት ቻልኩ። ከዲስክ ሲጫኑ ለምን ነባሪውን መሳሪያ sr0 [TBD] አይመርጡም?
የሲዲ-ሮምን ምንጭ ይምረጡ እና ይቀጥሉ።
የሰዓት ሰቅን በምመርጥበት ጊዜ ስርዓቱ የመግቢያ ሂደቱን እንደሚጠቀም በድንገት ተገነዘብኩ እና እኔ ከ TTY0 እየሰራሁ ነው።
እሺ፣ እንግዲያውስ “ኤልብሩስ”ን እንደ ማህበረሰብ እንመድበው
ቀሪው ማለት ይቻላል አስፈላጊ አይደለም: ሁሉንም ነገር አስቀምጠናል እና ተስማምተናል. በመንገድ ላይ, ከርነል 3.14.79-13.84 ጥቅም ላይ እንደዋለ እናገኘዋለን. እም፣ ዴቢያን 7 3.2 [TBD] ነበረው።
በመቀጠል ነባሪውን የዲስክ ክፍልፍል ይምረጡ እና... ማስጠንቀቂያ እናያለን፡-
ሆ፣ በሆነ መንገድ አውቶማቲክ ክፍፍሉ ከ 32 ጂግ ዲስክ ጋር በደንብ አልተቋቋመም። ዲስኩን አልቀየርኩትም፤ ፍለጋውን የጨረስኩት በእጅ የዲስክ ክፍፍል በ"ሁሉንም በአንድ" ዘይቤ ነው። /boot ext3 ውስጥ መሆን ስላልቻለ ext4 መጫን ነበረብኝ።
ስርዓቱ ያለምንም ችግር መጣ.
ሁለተኛ ደረጃ - አማራጮችን ይፈልጉ.
የሁለተኛውን ዲስክ ይዘት ካጣራሁ በኋላ፣ ይህ ተጨማሪ ያለው ማከማቻ እንደሆነ ተገነዘብኩ። በጥቅሎች ውስጥ. እና /etc/apt/sources.list ስመለከት፣ በ /mnt/cdrom ውስጥ መጫን እንዳለበት ተገነዘብኩ። ግን አላገኘሁም /etc/os-release. ግን ከይዘቱ 3.0-rc36 ጋር /etc/mcst-ስሪት አለ። 3.0 ምናልባት ስሪቱ ነው - ተስማሚ ይመስላል, ግን rc36? በአጠቃላይ፣ የሶስተኛ ወገን ሶፍትዌሮች ይህንን ስርጭት በጥንታዊው መንገድ ሊያውቁት አይችሉም።
በስር ክፍልፍል ውስጥ፣ የ/mcst ማውጫው ዓይኔን ይስባል፣ እና እዚያ፣ እየሰመጠ ባለው ልብ፣ /mcst/backup አገኘሁ። ያም ማለት, የመጠባበቂያ መሳሪያ አለ, እና በስርዓቱ ውስጥ ተገንብቷል! "በጣም ጥሩ" ብዬ አሰብኩ, "ይህ እንዴት እንደሚሰራ እንይ!"
የፋይል ቅጂን የሚያቀርብ 4Kb bash script /mcst/bin/backup እንዳለ ታወቀ። በነባሪ - ወደ /mcst/መጠባበቂያ ማውጫ። በምንጭ ኮድ ውስጥ የ 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
ምንም እንኳን, ምናልባት የሆነ ነገር አልገባኝም? ምናልባት አንድ ሰው በአስተያየቶቹ ውስጥ ሊያብራራ ይችላል-ይህ ስክሪፕት ደህንነቱ የተጠበቀ እና አስተማማኝ የውሂብ ምትኬን እንዴት ያረጋግጣል? [ቲቢዲ]
በነገራችን ላይ rsync በ add-on ውስጥ ተካትቷል. ማከማቻዎች. ስሪት 3.1.3. rsyncን መጠቀም አሁንም ለ /mcst/bin/backup መተግበሪያ የተሻለ አማራጭ ይመስለኛል።
በመቀጠል, አዲስ ለማስቀመጥ ወሰንኩ Veeam ወኪል ለሊኑክስ. አንድ ሰው እንዲህ ብሎ ይጠይቃል፡- “Veam እና የማስመጣት ምትክ ከእሱ ጋር ምን አገናኘው?” አዎ, በመመዝገቢያ ውስጥ የለም, ነገር ግን በ FSTEC የተረጋገጠ ነው, ይህም ማለት አማራጮች በሌሉበት ጊዜ ጥቅም ላይ ሊውል ይችላል. ከ አማራጮች ላይ አሥራ አምስት ደቂቃ በማጥፋት
ደረጃ ሶስት ፡፡ - የ Veeam ወኪል ለሊኑክስ መጫን።
ስለዚህ የ Veeam ወኪል ለሊኑክስ ሁለት ፓኬጆችን ያቀፈ ነው፡ የ veeamsnap kernel module (በነገራችን ላይ፣
የከርነል ሞጁሉን በመጫን ላይ አንድ ትንሽ ችግር ነበር - የጎደለው dkms ጥቅል። ይህ የከርነል ሞጁሎችን ከምንጩ እንዲገነቡ የሚያስችልዎ አገልግሎት ነው። እንደ ደንቡ በሁሉም የደብዳቤ ስርጭቶች ላይ ይገኛል. ከሶስተኛ ወገን ዴብ ማከማቻ ማውረድ ነበረብኝ። እኔን ያስደሰተኝ አንድ ነገር ጥቅሉ በህንፃው ላይ የተመሰረተ ስላልሆነ እንደ ተወላጅነት ይስማማል። ለምን በተገኙ ጥቅሎች ዝርዝር ውስጥ አልተካተተም ወይም ይልቁንም [TBD] ያልዳበረው? ምናልባት ማንም ሰው ማናቸውንም MCST ያልሆኑ የከርነል ሞጁሎችን መገንባት እና ማስኬድ እንደሌለበት ይታሰባል። እዚህ በእርግጥ አለመግባባት አለ - ሊኑክስ-ራስጌዎች ስላሉት። ያም ማለት ሞጁሉን ከተፈለገ ማሽኑ ሲጀምር በእጅ ሊሰበሰብ እና በስክሪፕት ሊጀምር ይችላል. ከMCST [TBD] ተደጋጋሚ ዝማኔዎችን መጠበቅ የለብህም ብዬ አስባለሁ።
“እሺ፣ ሞጁሉ ተጭኗል - ከባዱ ክፍል አልቋል” ብዬ አሰብኩ... የ veeam ጥቅል ለደብዳቤ ማከማቻው ለ amd64 መድረክ ነው፣ እና Elbrus OS x86_64 [TBD] መድረክ አለው። ልዩነቱ፣ በእርግጥ፣ በስም ብቻ ነው፣ ነገር ግን ይህ ልዩነት ከሶስተኛ ወገን ዴብ ማከማቻዎች የመጡ ሁሉንም ፓኬጆች ከኤልብሩስ ኦኤስ ጋር ተኳሃኝ እንዳይሆኑ ያደርጋል። ይህ የሚያበሳጭ አለመግባባት በቀላሉ ሊወገድ ይችላል: ጥቅሉን ብቻ ይሰብስቡ, ስለ ስነ-ህንፃው መረጃን ያርሙ እና መልሰው ያስቀምጡት. እንዴት ማድረግ እንደሚቻል
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
ሌላው ችግር ጥገኝነት ነው። አስፈላጊዎቹ ፋይሎች እዚያ ያሉ ይመስላሉ, ነገር ግን ጥቅሎቹ አይደሉም. ግንዛቤው የፓኬጆቹ ስሞች ከ "ከውጪ ከሚመጡ አናሎግ" የሚለያዩ ናቸው. ምናልባት ቤተ-መጻሕፍቶቹ በተለያየ መንገድ የታሸጉ ናቸው. በጣም ብዙ ዝርዝር ውስጥ አልገባሁም, ሁሉንም ጥገኛዎች ከሞላ ጎደል አስወግድ, እና መጫኑ ቀጠለ.
ከዚያ በአገልግሎት ጅምር ኮድ ላይ ችግሮች ታዩ። ስክሪፕቱ /lib/init/vars.sh ጠፍቷል። በሆነ ምክንያት ኤልብራስ ያለ እሱ ያስተዳድራል, ስለዚህ እኛም እናስወግደዋለን. በመቀጠል የመልእክት ውፅዓት ተግባርን መተካት ነበረብን፡የሎግ_ዳሞን_msg እና log_end_msg ተግባራት ጠፍተዋል። በ /lib/lsb/init-functions ፋይል ውስጥ ከተዘዋወርኩ በኋላ፣ log_success_msg ተግባርን አገኘሁ - ለሙከራዎች ይጠቅመናል። በነገራችን ላይ በ / lib/lsb/init-functions ፋይል ውስጥ "# Source SuSE`s rc ተግባራት" የሚለው መስመር በ [TBD] ፋይል መጀመሪያ ላይ ነው.
ፓኬጁን በፋይል ከተሰራ በኋላ በኤንኤፍኤስ ድርሻ ላይ ያለው ሙሉ የማሽን ምትኬ በተሳካ ሁኔታ ተጀመረ። የመጠባበቂያ ማፈናጠጥም ስኬታማ ነበር። ስለዚህ፣ ማሽንን በኤልብሩስ ፒዲኬ ለመደገፍ፣ ያለ ምንም ግዴታ “ልክ እንደዛ” የወረደውን፣ Veeam Agent for Linux በእርግጠኝነት ተስማሚ ነው ብዬ አምናለሁ። በፋይል ከተደረጉት ማሻሻያዎች በኋላም እንኳ።
በእርግጥ የኤልብሩስ ስርዓተ ክወና ማከፋፈያ ኪት በሚደገፉ ሰዎች ዝርዝር ውስጥ ስላልተካተቱ በመደበኛነት አይደገፍም። በተጨማሪም ፣ የቪም ወኪል ለሊኑክስ በ QA ክፍል አልተሞከረም ፣ ስለዚህ እነዚያ። ምንም ድጋፍ የለም (ቢያንስ ጽሑፉ በሚታተምበት ጊዜ)።
ጽሑፉ ሰኔ 334 ቀን 29.06.2017 ትዕዛዝ ቁጥር XNUMX ተግባራዊ ለማድረግ ለሚሞክሩ ሰዎች ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ። የኔ ለአንተ... [TBD]።
ምንጭ: hab.com