RE:NODE

სახელმძღვანელოები11 წუთის საკითხავი

Valheim სერვერის backup-ები და სამყაროს დაზიანება

სად ინახავს Valheim-ის სერვერი სამყაროს და backup-ებს, რას აკეთებს backup-ის არგუმენტები, როგორ აღადგინო ძველი save და როგორ გადაარჩინო დაზიანებული ან განულებული სამყარო.

0 მკითხველი

Valheim-ის სამყარო ორი ფაილია - Name.db და Name.fwl - და სერვერი მათ სამი სახის ასლს ინახავს: .old წყვილს, რომელიც ყოველ შენახვაზე იწერება, ავტომატურ backup-ებს, რომლებსაც -backups, -backupshort და -backuplong მართავს, და ნამდვილ backup-ებს, რომლებსაც მანქანიდან გარეთ იღებ. ნებისმიერი მათგანის აღდგენა ერთი და იგივე ოპერაციაა: გააჩერე სერვერი, ჩადე სწორი .db და .fwl წყვილი worlds_local-ში სამყაროს სახელით და ხელახლა გაუშვი. დაზიანება თითქმის ყოველთვის მოდის იქიდან, რომ პროცესი კვდება ან დისკი ივსება შენახვის დროს, და გამოსავალი თითქმის ყოველთვის ბოლო კარგი წყვილია. ეს სტატია აღწერს, სად რა ინახება, რას აკეთებს თითოეული არგუმენტი, როგორ აღადგინო და როგორ გადაარჩინო სამყარო, რომელიც არასწორად იტვირთება ან საერთოდ არ იტვირთება.

სერვერის დანარჩენი დაყენება Valheim-ის გამოყოფილი სერვერის გზამკვლევშია. თუ სამყაროს სერვერზე პირველად გადაიტან და არა აღადგენ, უკეთესი საწყისი წერტილია როგორ ატვირთო Valheim-ის save.

რა არის Valheim-ის სამყარო დისკზე#

სამყაროს შესახებ ყველაფერი ორ ფაილშია ერთი და იმავე საბაზო სახელით:

ფაილიზომარას შეიცავს
Name.fwlრამდენიმე ასეული ბაიტისამყაროს სახელი, seed, გენერატორის ვერსია, სამყაროს გასაღებები
Name.dbრამდენიმე MB-დან ასეულებამდეყოველი სამშენებლო ნაწილი, ნივთი, არსება, რელიეფის ცვლილება
Name.db.oldიგივე, რაც .dbწინა შენახვა, რომელიც ახლის ჩაწერისას ინახება
Name.fwl.oldიგივე, რაც .fwlწინა მეტამონაცემები
Name_backup_auto-*.db / .fwlიგივე, რაც .dbავტომატური, დროით დაგეგმილი backup-ები

.fwl პატარაა, მაგრამ არა არასავალდებულო. ის seed-ს ატარებს, და seed-ი აგენერირებს რელიეფს, რომელზეც .db ფაილის ცვლილებები ედება. ერთი სამყაროს .db, სხვა სამყაროს .fwl-თან დაწყვილებული, იტვირთება, მაგრამ ნაგებობები არასწორ ლანდშაფტზე დგას. ორივე ყოველთვის წყვილად გადაიტანე, დააკოპირე და აღადგინე, ერთი და იმავე მომენტიდან აღებული.

Linux-ის სერვერზე ნაგულისხმევი ადგილი მომხმარებლის Unity-ის მონაცემების საქაღალდის ქვეშაა:

code
~/.config/unity3d/IronGate/Valheim/worlds_local/

Windows-ის სერვერზე ეს არის %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\. თუ სერვერი -savedir /some/path-ით ეშვება, სამყაროები მის ნაცვლად /some/path/worlds_local/-ში ხვდება, ადმინების, ბანებისა და დაშვებულების სიის ფაილებთან ერთად /some/path-ში. ჰოსტინგის სერვერები ჩვეულებრივ -savedir-ს აყენებენ, რომ სამყარო სერვერის საკუთარ საქაღალდეში იყოს, სადაც ფაილების მენეჯერი მისწვდება.

რა არ არის სერვერზე: პერსონაჟები. ყოველი მოთამაშის პერსონაჟი, ინვენტარი და უნარები მის საკუთარ მანქანაზე, characters_local-ში ინახება. სამყაროს აღდგენა პერსონაჟს არასდროს ეხება, ამიტომაც rollback-მა შეიძლება მოთამაშეებს ხელში დაუტოვოს ნივთები, რომლებიც სამყაროში აღარ არსებობს - და ამიტომაცაა დაზიანებული პერსონაჟი კლიენტის პრობლემა, რომელსაც სერვერი ვერ გამოასწორებს.

როგორ ინახავს სერვერი#

სამყარო მეხსიერებაში ცხოვრობს და დისკზე ყოველ -saveinterval წამში იწერება, ნაგულისხმევად 1800. სუფთა გამორთვაც წერს მას. ყოველი შენახვა თანმიმდევრობით სამ რამეს აკეთებს:

  1. წერს სამყაროს ახალ მონაცემებს.
  2. წინა .db და .fwl ფაილებს .old-ად ინახავს.
  3. ლოგში წერს ხაზს შენახვის ხანგრძლივობით.
code
World saved ( 912.48ms )

ზუსტი ფორმულირება ვერსიებს შორის ოდნავ შეიცვალა, მაგრამ ხაზი ყოველ შენახვაზე ჩნდება. ამ თემისთვის ეს ლოგის ყველაზე სასარგებლო ხაზია, რადგან გეუბნება, როდის მოხდა ბოლო კარგი შენახვა და რამდენ ხანს სჭირდება სამყაროს ჩაწერა.

ყველაფერი, რაც პროცესს ამ ხაზის გარეშე ასრულებს - kill, მეხსიერების ამოწურვით გაჩერება, ჰოსტის crash - კარგავს ყველაფერს წინა შენახვის შემდეგ. ხოლო ყველაფერი, რაც პროცესს ამ ხაზის დროს ასრულებს, როცა ფაილი ნახევრად ჩაწერილია, სწორედ ასე ზიანდება სამყაროები.

ჩაშენებული backup-ის არგუმენტები#

Valheim-ს საკუთარი backup-ის სისტემა აქვს, რომელიც გაშვების სამი არგუმენტით კონფიგურირდება:

არგუმენტინაგულისხმევირას აკეთებს
-backups4რამდენი ავტომატური backup შეინახოს
-backupshort7200წამები გაშვებიდან პირველ backup-მდე
-backuplong43200წამები შემდგომ backup-ებს შორის
-saveinterval1800წამები სამყაროს შენახვებს შორის

ნაგულისხმევი მნიშვნელობებით პირველი backup სერვერის გაშვებიდან ორი საათის შემდეგ კეთდება, შემდეგ კი ყოველ თორმეტ საათში, და ინახება ოთხი უახლესი. Backup-ები .db და .fwl ფაილების სრული ასლებია, სახელში _backup_auto--ით და დროის ნიშნულით, და სამყაროს იმავე worlds_local საქაღალდეში ინახება.

უფრო მჭიდრო კონფიგურაცია აქტიური ჯგუფისთვის:

bash
-saveinterval 900 -backups 6 -backupshort 3600 -backuplong 21600

ეს ინახავს ყოველ თხუთმეტ წუთში, პირველ backup-ს ერთ საათში აკეთებს, შემდეგ ყოველ ექვს საათში, და ექვსს ინახავს - დღენახევრის ისტორია.

ჩაშენებული backup-ები სასარგებლოა და ჩართული უნდა დატოვო. ამავდროულად ისინი არ არის backup-ები იმ გაგებით, რომელსაც მნიშვნელობა აქვს. ისინი იმავე დისკზე, იმავე საქაღალდეში დევს, სადაც ფაილი, რომელსაც იცავენ. ისინი ცუდი შენახვისგან იცავენ; არ იცავენ წაშლილი სერვერისგან, დისკის მწყობრიდან გამოსვლისგან, ფაილების მენეჯერში შეცდომით წაშლისგან ან ფაილებზე წვდომის მქონე ვინმესგან, ვინც საქაღალდეს წაშლის. და ისინი ბრუნავენ, ამიტომ პრობლემა, რომელსაც ორი დღე არავინ ამჩნევს, ყველა მათგანშია, სანამ ვინმე შეხედავს.

-backups-ის გაზრდა დისკის ადგილი ჯდება - თითოეული .db-ის სრული ასლია - ამიტომ 150 MB სამყაროზე ოცი backup სამი გიგაბაიტია. შეინახე იმდენი, რამდენიც ფარავს იმ დროს, რაც შენს ჯგუფს პრობლემის შესამჩნევად სჭირდება, და არა მეტი.

ნამდვილი backup-ები: მანქანის გარეთ და განრიგით#

ნამდვილი backup არის სამყაროს ასლი ისეთ ადგილას, სადაც სერვერს ჩაწერა არ შეუძლია, განრიგით აღებული და დროდადრო აღდგენილი, რომ დაამტკიცო, რომ მუშაობს. Backup-ები, რომლებიც ნამდვილად აღდგება ამ არგუმენტის გრძელ ვერსიას აყალიბებს; მოკლე ვერსია ის არის, რომ backup, რომელიც არავის აღუდგენია, ჰიპოთეზაა.

Valheim-თან უხერხული ნაწილი თანმიმდევრულობაა. vanilla სერვერს არ აქვს კონსოლი, რომელსაც თამაშის გარედან save ბრძანებას გაუგზავნი - save თამაშის შიგნით ადმინის ბრძანებაა. ამიტომ სერვერის მუშაობისას აღებული backup ფაილებს ბოლო შენახვის მდგომარეობით იჭერს, რაც ნორმალურია, თუ იმ მომენტში შენახვა არ მიმდინარეობს. სუფთა ნიმუშია, გააჩერო სერვერი, აიღო ასლი და ხელახლა გაუშვა:

  1. გააჩერე სერვერი. სუფთა გაჩერება სამყაროს წერს.
  2. დაელოდე, სანამ პროცესი დასრულდება.
  3. დააკოპირე worlds_local - ან მინიმუმ მიმდინარე .db და .fwl - სხვაგან.
  4. გაუშვი სერვერი.

RE:NODE-ზე Schedules ჩანართი ამას შენ გარეშე აკეთებს: განრიგი cron გამოსახულებით, თანმიმდევრული დავალებებითა და დაყოვნებებით - stop power action, backup ერთი წუთის შემდეგ, შემდეგ start. Backup-ის სლოტები ყოველ Valheim-ის გეგმაში შედის, ინახება იმ მანქანის გარეთ, რომელსაც იცავს, ჩამოტვირთვადია და შეგიძლია ჩაკეტო, რომ ცნობილად კარგი ასლი როტაციით არ წაიშალოს. აღდგენა ერთი ღილაკია. ერთი გაფრთხილება, რომელიც ღირს იცოდე: სერვერის წაშლა მის backup-ებსაც შლის, ჩაკეტილებსაც, ამიტომ გაუქმებამდე ჩამოტვირთე ყველაფრის ასლი, რისი შენახვაც გინდა.

Schedule: nightly backup at 05:00
cron:   0 5 * * *task 1: power action - stoptask 2: backup (delay 60 seconds)task 3: power action - start (delay 30 seconds)

თუ restart-ებს ისედაც გეგმავ, backup გაჩერების მერე პირდაპირ დასვი და ორივეს ერთ მშვიდ ფანჯარაში მიიღებ. დაგეგმილი დავალებები, რომლებიც ღირს და cron გამოსახულებების ახსნა სინტაქსს აღწერს.

ყოველ თამაშის განახლებამდე, მოდის დამატებამდე ან წაშლამდე და სამყაროს მოდიფიკატორების შეცვლამდე ხელით აიღე დამატებითი backup. სწორედ ამ მომენტებში ფუჭდება სამყარო.

ძველი save-ის აღდგენა#

რომელი ასლიდანაც არ უნდა აღადგინო, პროცედურა ერთია.

  1. გააჩერე სერვერი და დაელოდე, სანამ სრულად დასრულდება.
  2. გადადე მიმდინარე ფაილები გვერდზე წაშლის ნაცვლად. გადაარქვი Midgard.db და Midgard.fwl რამე ისეთად, როგორიცაა Midgard.db.broken და Midgard.fwl.broken. თუ აღდგენა უარესი გამოდგება, შეგიძლია დაბრუნდე.
  3. ჩადე არჩეული წყვილი ადგილზე სამყაროს ზუსტი სახელით: Midgard.db და Midgard.fwl. ავტომატური backup-ისთვის ეს ნიშნავს Midgard_backup_auto-...db-ის და მისი შესაბამისი .fwl-ის დაკოპირებას და გადარქმევას. წინა შენახვისთვის გადაარქვი Midgard.db.old Midgard.db-ად და Midgard.fwl.old Midgard.fwl-ად.
  4. შეამოწმე სამყაროს სახელი გაშვების არგუმენტებში, რომ ისევ ემთხვევა, დიდი ასოების ჩათვლით.
  5. გაუშვი სერვერი და ლოგში დააკვირდი, რომ სამყარო სახელით იტვირთება და არა ახალი სამყარო გენერირდება.
  6. შედი და შეამოწმე ბოლოდროინდელი ნაგებობა, რომელიც გახსოვს, რომ დარწმუნდე, სწორი მომენტი მიიღე.

რომელი ასლი გამოიყენო, დამოკიდებულია იმაზე, რა წავიდა არასწორად:

პრობლემასაიდან აღადგინო
ბოლო შენახვა დაზიანებულია, მანამდე ყველაფერი რიგზე იყო.db.old / .fwl.old
შეცდომა რამდენიმე საათის წინ (griefing, მოდიფიკატორის ცუდი ცვლილება)უახლესი ავტომატური backup მანამდე
მთელი საქაღალდე გაქრა ან სერვერი თავიდან აიწყომანქანის გარეთ არსებული backup
მოდის განახლებამ სამყარო დღეების წინ გააფუჭამანქანის გარეთ არსებული backup განახლებამდე

პანელიდან აღდგენა სერვერის ფაილებს backup-ის ფაილებით ერთ ნაბიჯში ანაცვლებს, რაც 2-დან 3-მდე ნაბიჯებს ფარავს. ის backup-ში ყველაფერს აღადგენს და არა მხოლოდ სამყაროს, ამიტომ თუ მას შემდეგ მოდების კონფიგები შეცვალე, ისინიც უკან დაბრუნდება.

როგორ ამოიცნო დაზიანებული სამყარო#

დაზიანება რამდენიმე ამოსაცნობი ფორმით ვლინდება.

სერვერი ახალ სამყაროს აგენერირებს. ლოგი ახალი სამყაროს შექმნას აფიქსირებს შენის ჩატვირთვის ნაცვლად. ჩვეულებრივ ეს საერთოდ არ არის დაზიანება: სამყაროს სახელი ფაილის სახელს არ ემთხვევა, ამიტომ სერვერმა ძველის გვერდით ახალი სამყარო შექმნა. ყველაფერზე ადრე სახელი შეამოწმე; შენი ორიგინალი ფაილები ისევ იქ არის.

სერვერი ვერ ეშვება, სამყაროს ჩატვირთვისას exception-ით. .db დაზიანებულია - როგორც წესი, მოკვეთილია, რადგან პროცესი მოკვდა ან დისკი შენახვის შუაში გაივსო. .db ფაილი შეიძლება გაცილებით პატარა იყოს, ვიდრე უნდა იყოს, ან ნული ბაიტი.

სამყარო იტვირთება, მაგრამ რაღაც არასწორია. რელიეფი ნაგებობებს არ ემთხვევა (.db არასწორ .fwl-თანაა დაწყვილებული), ან დიდი ტერიტორია უკან დაბრუნდა (სერვერი საათობით მუშაობდა წარმატებული შენახვის გარეშე, შემდეგ გადაიტვირთა). ეს მკაცრი გაგებით დაზიანება არ არის, მაგრამ წამალი იგივეა: აღადგინე ცნობილად კარგი წყვილი.

სამყარო იტვირთება, მაგრამ მოთამაშეები დაკარგულ ნივთებზე ჩივიან. შეამოწმე, სამყაროა თუ მათი პერსონაჟები. სკივრები და ნაგებობები სამყაროშია; ინვენტარი ყოველი მოთამაშის მანქანაზეა. მოთამაშეს, რომლის ინვენტარიც განულდა, კლიენტის მხარეს პერსონაჟის პრობლემა აქვს.

საეჭვო ფაილის ყველაზე სწრაფი შემოწმება მისი ზომაა. ჩამოთვალე worlds_local ზომებით და შეადარე .db .db.old-ს და უახლეს ავტომატურ backup-ს. მიმდინარე .db, რომელიც მეზობლებზე გაცილებით პატარაა, დაზიანებულია.

bash
$ ls -lh ~/.config/unity3d/IronGate/Valheim/worlds_local/

რა იწვევს დაზიანებას და როგორ შეაჩერო#

Valheim-ის თითქმის ყოველი დაზიანებული სამყარო შეწყვეტილ შენახვამდე მიდის.

  • პროცესის მოკვლა. სერვერის იძულებით მოკვლა - პანელის Kill Stop-ის ნაცვლად, ან kill -9 - შენახვის შუაში ნახევრად ჩაწერილ ფაილს ტოვებს. გამოიყენე Stop და დაელოდე.
  • მეხსიერების ამოწურვა. მეხსიერების ლიმიტზე გაჩერებული კონტეინერი იქ კვდება, სადაც შემთხვევით იმყოფება, შენახვის შუაშიც. შენახვას მოკლე ხნით დამატებითი მეხსიერება სჭირდება, ამიტომ ლიმიტთან ახლოს მომუშავე სერვერი სწორედ მაშინ შეიძლება გაჩერდეს. RE:NODE-ზე ლიმიტზე მისული სერვერი ჩერდება და სუფთად ირთვება swap-ის ნაცვლად, რაც მანქანისთვის სწორი ქცევაა, მაგრამ მაინც შეუნახავი გაჩერებაა; ადევნე თვალი მეხსიერების გრაფიკს და მანამდე გადადი უფრო მაღალ დონეზე, ხოლო თუ უკვე ხდება, წაიკითხე რატომ იტვირთება შენი თამაშის სერვერი ხელახლა.
  • სავსე დისკი. შენახვა, რომელიც ჩაწერას ვერ ასრულებს, მოკვეთილ ფაილს ქმნის. მბრუნავი backup-ები და ძველი ლოგები დისკებს ნელა ავსებს; -backups-ის გაზრდისას თავისუფალი ადგილი შეამოწმე.
  • მოდები, რომლებიც სამყაროში წერენ. მოდებმა, რომლებიც საკუთარ მონაცემებს ამატებენ, შეიძლება დატოვონ სამყარო, რომელიც მხოლოდ იმ მოდით იტვირთება. ასეთი მოდის მოშორებამ შეიძლება ობიექტები გააქროს ან სამყარომ ჩატვირთვაზე უარი თქვას. მოდების სიის შეცვლამდე გააკეთე backup - Valheim-ის მოდები BepInEx-ით უსაფრთხო გზას აღწერს.
  • სამყაროს ფაილების რედაქტირება გარე ხელსაწყოებით. სამყაროს რედაქტორები სასარგებლოა, მაგრამ მოძველებული ხელსაწყოთი დარედაქტირებული და შენახული ფაილი შეიძლება თამაშის მიმდინარე ვერსიისთვის წაუკითხავი იყოს. ასლი დაარედაქტირე.

-saveinterval-ის შემცირება დაზიანებას არ აჩერებს, მაგრამ ამცირებს, რა უჯდება ცუდი გაჩერება, და .old წყვილს უფრო ახალს ხდის.

backup-ის შემოწმება, სანამ დაგჭირდება#

backup-ის პირველად აღდგენა საგანგებო სიტუაციაში სწორედ ის გზაა, რომლითაც ხალხი აღმოაჩენს, რომ მათი backup-ები ცარიელი იყო, ან არასწორი სამყარო, ან ექვსი კვირის. შეამოწმე ერთი მშვიდ საღამოს:

  1. ჩამოტვირთე backup პანელიდან ან დააკოპირე სერვერიდან.
  2. შენს კომპიუტერზე ჩადე .db და .fwl წყვილი შენს ლოკალურ worlds_local საქაღალდეში სატესტო სახელით - ორივე ფაილს ერთნაირად გადაარქვი სახელი.
  3. გაუშვი Valheim, აირჩიე Start Game, აირჩიე სამყარო და მონიშნე Start Server, რომ ლოკალურად გაეშვას.
  4. მიდი მთავარ ბაზამდე და შეამოწმე, რომ ის იმ მდგომარეობაშია, რასაც ელოდები.

ამას ათი წუთი სჭირდება და იმედს ფაქტად აქცევს. აღდგენის შემოწმება, სანამ დაგჭირდება ნებისმიერი თამაშისთვის უფრო სრულ ვარჯიშს გთავაზობს.

FAQ#

რამდენად შორს შემიძლია Valheim-ის სამყაროს უკან დაბრუნება?

იმდენად, რამდენადაც შენი უძველესი ასლი. .old წყვილი ერთი შენახვით უკანაა; ავტომატური backup-ები -backups-ჯერ -backuplong წამით უკან აღწევს, ნაგულისხმევად ორი დღე; მანქანის გარეთ არსებული backup-ები იმდენად შორს აღწევს, რამდენ ხანსაც ინახავ. ყველაფერი, რაც სამივეზე ძველია, დაკარგულია.

შეიცავს თუ არა backup-ები მოთამაშეების პერსონაჟებს?

არა. პერსონაჟები ყოველი მოთამაშის კომპიუტერზე ცხოვრობს და არა სერვერზე. აღდგენა სამყაროს აბრუნებს უკან - ნაგებობებს, სკივრებს, რელიეფს, მოშინაურებულ ცხოველებს - მაგრამ ყოველი მოთამაშე ინარჩუნებს იმ ინვენტარსა და უნარებს, რაც ახლა აქვს.

შემიძლია აღვადგინო მხოლოდ ერთი ბაზა და არა მთელი სამყარო?

vanilla ხელსაწყოებით არა. სამყარო ერთი ფაილია და აღდგენა მთლიანად ხდება. სამყაროს რედაქტორებს შეუძლიათ ტერიტორიების ფაილებს შორის კოპირება, მაგრამ ეს წვრილმანი და სარისკოა; ცდამდე მიმდინარე მდგომარეობის backup გააკეთე.

რატომ არ არის ავტომატური backup-ები საკმარისი?

ისინი იმავე დისკზე და იმავე საქაღალდეში დევს, სადაც სამყარო. ისინი ცუდ შენახვას გადაურჩებიან, მაგრამ არა წაშლილ სერვერს, დისკის მწყობრიდან გამოსვლას ან საქაღალდის შეცდომით წაშლას, და იმდენად სწრაფად ბრუნავენ, რომ გვიან შემჩნეული პრობლემა ყველა მათგანშია.

სერვერმა განახლების შემდეგ ახალი სამყარო შექმნა. ჩემი დაიკარგა?

თითქმის ნამდვილად არა. შეამოწმე worlds_local - ძველი ფაილები ჩვეულებრივ ისევ იქ არის და გაშვების არგუმენტებში სამყაროს სახელი მათ აღარ ემთხვევა. გაასწორე სახელი და გადატვირთე.

რამდენად დიდი ხდება Valheim-ის backup-ები?

თითოეული .db-ის სრული ასლია, ასე რომ დაახლოებით შენი სამყაროს ზომისაა: თავიდან რამდენიმე მეგაბაიტი, დიდხანს არსებული სამყაროსთვის ხშირად 50-დან 150 MB-მდე. გაამრავლე იმ რაოდენობაზე, რამდენსაც ინახავ.


კომენტარები

სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000