পুনরায় চালু করা কেভিএম অতিথিকে কীভাবে হালনাগাদ দিয়ে সময় দেওয়া যায়?


18

আমার হোস্টে আমি livvirt এবং একটি কেভিএম অতিথি ব্যবহার করছি। হোস্টটি যখন বন্ধ হয়ে যাচ্ছে, তখন libvirt অতিথিকে স্থগিত করে। হোস্ট শুরু করার সময়, libvirt অতিথিটিকে পুনরায় শুরু করে। সমস্যাটি হল, উদাহরণস্বরূপ অতিথিকে যদি 24 ঘন্টা পরে স্থগিত করা এবং পুনরায় চালু করা হয়, তবে অতিথির সময় অতীতে 24 ঘন্টা is

আমি ভেবেছিলাম যে সমস্যাটি ক্লকসোর্সটিতে রয়েছে তবে এটি ইতিমধ্যে "কেভিএম-ক্লক" এ সেট করা আছে।

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc hpet acpi_pm 

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

উত্তর:


11

সমস্যাটি

আমি একই সমস্যা পেয়েছি এবং আমি ভাল সমাধান খুঁজে পাইনি। আমি যা পেয়েছি তা এখানে:

সমস্যাটি হ'ল পুনরায় শুরু হওয়ার পরে, অতিথির সিস্টেম এবং হার্ডওয়্যার ঘড়ির সময়গুলি আলাদা হয়:

রুট @ অতিথি: ~ # তারিখ; hwclock
শনিবার অক্টোবর 11 13:09:38 ইউটিসি 2014
শনিবার 11 অক্টোবর 13:10:42 2014 -0.454380 সেকেন্ড

হোস্টে, তারা সম্মত:

মূল @ চার: ~ # তারিখ; hwclock
শনিবার অক্টোবর 11 13:11:35 ইউটিসি 2014
শনিবার অক্টোবর 11 13:11:36 2014 -1.000372 সেকেন্ড

সমাধানটি hwclock --hctosysআবার শুরু হওয়ার পরে অতিথির উপর চালানো হবে। তবে, অতিথি সিস্টেমে পরিবর্তনগুলির সাথে এটি করার কোনও উপায় আমি খুঁজে পাইনি, কারণ অতিথির নজরে নেই যে এটি স্থগিত করা হয়েছে এবং পুনরায় শুরু হয়েছে।

কিউমু গেস্ট এজেন্ট

অতিথির জন্য কিউমু গেস্ট এজেন্ট নামে একটি সফ্টওয়্যার চালানোর এবং অতিথির হার্ডওয়ার ক্লক থেকে অতিথি সিস্টেমের ঘড়িটি আপডেট করার জন্য হোস্টের পক্ষ থেকে অবহিত করার সম্ভাবনা রয়েছে । তবে পৃষ্ঠায় উল্লেখ করা হয়েছে যে অতিথি এজেন্ট একটি জেএসএন পার্সার সম্পর্কিত সমস্যার কারণে হোস্ট এবং অতিথিকে একে অপরের আক্রমণে ঝুঁকিপূর্ণ করে তোলে (কমপক্ষে আমি বিশ্বাস করি যে আক্রান্ত কোডটি হোস্টেও চালিত হয়েছে, আমি সে সম্পর্কে নিশ্চিত নই )। যাইহোক, এটি সেট আপ করার পদ্ধতি এখানে রয়েছে:

  1. Libvirt উইকিতে উল্লিখিত হিসাবে এজেন্টটির জন্য একটি ভিরিও সিরিয়াল চ্যানেল সেট আপ করুন ( ডোমেন ফর্ম্যাট ডকুমেন্টেশনও libvirt দেখুন )।

  2. সিরিয়াল চ্যানেল উপলভ্য হওয়ার পরে, অতিথির উপর কিউমু গেস্ট এজেন্ট ইনস্টল করুন এবং শুরু করুন। (দেবিয়ান:। apt-get install --no-install-recommends qemu-guest-agent)

  3. স্থগিতকরণ, প্রতীক্ষা এবং পুনরায় শুরু করে ঘড়িটিকে অফসেট ট্রিগার করুন। তারপরে এটি সংশোধন করার জন্য হোস্টটিতে নিম্নলিখিত কমান্ডটি চালান: virsh qemu-agent-command backup '{"execute":"guest-set-time"}'যে উইকি পৃষ্ঠাটি ব্যবহার করছে virsh qemu-agent-commandএটি অসমর্থিত , তবে কাজটি করে এমন কোনও কমান্ড আমি পাইনি।

guest-set-timeস্থগিতাদেশ থেকে পুনরায় শুরু করার জন্য কলটি লিবারভার্টের মধ্যে স্বয়ংক্রিয়করণ নিয়ে দুটি আলোচনা পেয়েছি :

তবে যতদূর আমি দেখতে পেলাম কিছুই কার্যকর করা হয়নি।

স্টোনি-ক্লাউড . org এর উইকিতে অতিথি এজেন্টের কাছে কীভাবে কমান্ড জমা দিতে হবে তার তথ্য আমি পেয়েছি ।

আমিও সেটিং চেষ্টা করেছি tickpolicy="catchup"জন্য libvirt দ্বারা টাইমার কনফিগারেশন কিন্তু এই সমস্যার সমাধান হয়নি।

এনটিপি

এজেন্ট ব্যবহারের বিকল্প হ'ল এনটিপি ডিমন ব্যবহার করা বা ক্রোন জব থেকে পর্যায়ক্রমে এনটিপিডেট কল করা। আমি পরেরটির সুপারিশ করব না, কারণ এটি সময়কে পিছনের দিকে যেতে পারে, যা প্রোগ্রামগুলিকে বিভ্রান্ত করতে পারে (উদাহরণস্বরূপ, ডোভকোট আইএমএপি সার্ভার পিছনের দিকে যাওয়ার সময় হ্যান্ডেল করার চেষ্টা করে না এবং শেষ হতে পারে)।

আমি নিম্নলিখিত এনটিপি ডিমন চেষ্টা করেছি:

  • ওপেনটিপিডি : আমার পরীক্ষায় 60 মিনিট প্রতি 2 সেকেন্ডের হারে খুব ধীরে ধীরে সময় সংশোধন করে। অফসেটের সময়টি ছিল 120 ​​সেকেন্ড। এছাড়াও, ওপেনটিপিডি একটি ত্রুটি ছুঁড়ে দেয় যদি টাইম অফসেটটি খুব বেশি হয় এবং আমার পরীক্ষায়, সেই ক্ষেত্রে সময় ঠিক করতে পুরোপুরি ব্যর্থ হয়। ওপেনটিপিডির সুবিধা: ক্রুটে নিয়মিত ব্যবহারকারী হিসাবে চালানো যেতে পারে।

  • chrony : কারেক্টস একটা সময় আমার পরীক্ষা 30 মিনিটের মধ্যে 120 সেকেন্ডের অফসেট। ক্রোনিকে নিয়মিত ব্যবহারকারী হিসাবে চালানোর জন্য কনফিগার করা যায়। chroot সমর্থন কার্যকর করা হয় না। প্রতিটি এনটিপি সার্ভারের জন্য এনটিপি সার্ভারের পোলিং বিরতি কনফিগার করা যায়।

  • systemd-timesyncd : আমার পরীক্ষায় 30 সেকেন্ডে 120 সেকেন্ডের অফসেট সংশোধন করে। ডিফল্ট হিসাবে নিয়মিত ব্যবহারকারী হিসাবে চালায়। তবে এনটিপি সার্ভারের পোলিংয়ের ব্যবধান 2048 সেকেন্ড পর্যন্ত বেড়ে যায়, যাতে সবচেয়ে খারাপ অবস্থায় পুনরারম্ভের 34 মিনিটের পরে কোনও স্থগিত / পুনরারম্ভ সনাক্ত করা যায় না। এটি কনফিগারযোগ্য বলে মনে হয় না। এছাড়াও, আমি টাইমসিএনসিডিটিকে সময়টি পিছনে পিছনে পর্যবেক্ষণ করেছি, যা ক্রোন-এ এনটিপিডেট কল করার মতো একই সমস্যার কারণ হতে পারে (উপরে দেখুন)।

ক্রনি সমস্যা সমাধান করে। ওপেনটিপিডি উপযুক্ত নয় কারণ এর সংশোধন হার খুব কম এবং কনফিগারযোগ্য বলে মনে হচ্ছে না। systemd-timesyncd সমস্যাটি পুরোপুরি পুরোপুরি সমাধান করে না, কারণ এটির ভোটদানের ব্যবধানটি কনফিগারযোগ্য নয়।

আমি এনটিপি ডেমনের নিম্নলিখিত ডিবিয়ান সংস্করণগুলি পরীক্ষা করেছি: ওপেনটিপিডি 20080406p-10, ক্রোনি 1.30-1 এবং সিস্টেমড 215-5 + বি 1।


3

অতিথির অনেক ভার্চুয়ালাইজেশন হোস্ট ক্রিয়াকলাপ বিরতি - পুনঃসূচনা হতে পারে। এটি গেস্ট সিস্টেমের ঘড়িতে নেতিবাচক প্রভাব ফেলবে। উদাহরণস্বরূপ, ক্লোনিং করার সময় কোনও ভিএম ক্লোনিংয়ের বিরতি ঘটে। অতিথির ঘড়ির পরে। ঘড়ি সিঙ্ক করতে এনটিপি পেতে আপনাকে অতিথির পুনরায় আরম্ভ করতে হবে - এটি অবশ্যই সমস্ত ক্ষেত্রে ভাল সমাধান নয়। বিকল্প হিসাবে আপনি কেবল অতিথিতে এনটিপিডি পুনরায় চালু করতে পারেন তবে এটি সর্বোত্তম নয়। আদর্শভাবে কোনও ইভেন্ট (ভিএম পুনঃসূচনা) উপলভ্য হওয়া দরকার যা আপনি অতিথির কাছে এই ধরণের সংশোধনের জন্য optionচ্ছিকভাবে ব্যবহার করতে পারেন।

এটি নিয়ে কিছুটা সময় ব্যয় করার পরে আমি হোস্ট ক্লকটি সরাসরি সেন্টোস 7 অতিথি ওএস সিস্টেমের ঘড়ির জন্য একটি রেফারেন্স হিসাবে ব্যবহার করার সিদ্ধান্ত নিয়েছি।

অতিথিতে এনটিপিডি চালানোর পরিবর্তে, আমি স্থির করেছি যে প্রতি 15 মিনিটের মধ্যে আমি অতিথির হার্ডওয়্যার ক্লক থেকে অতিথি সিস্টেমের ঘড়িটি ক্রোনটবের মাধ্যমে সেট করব। অতিথির হার্ডওয়ার ক্লকটি ভার্চুয়ালাইজেশন হোস্টের সময়টিকে প্রতিফলিত করে যা ভার্চুয়ালাইজেশন হোস্টে চলমান এনটিপিডির মাধ্যমে নিয়ন্ত্রণ করা হয়। এটি আমাকে অতিথি ওএসে নির্ভরযোগ্য সময় দেয়। সবচেয়ে খারাপ ক্ষেত্রে, অতিথিটিকে পুনরায় শুরু করার পরে উপযুক্ত সময়টিতে এটি সুসংগত হওয়ার আগে ঘড়িটি 15 মিনিটের জন্য বন্ধ থাকে।

# crontab -e

0,15,30,45 * * * * /sbin/hwclock --hctosys

অতিথির এমন কোনও অনুষ্ঠানের উপস্থিতি আরও ভাল হবে যে অতিথির পুনরায় শুরু করার সময় একটি সময় সিঙ্ক্রোনাইজেশন শুরু করবে, তবে দৃশ্যত এটি উপলভ্য নয়। ক্রোনট্যাব পন্থাটি একেবারে কার্যকরী যে এটি প্রতি 15 মিনিটের মধ্যে একটি এইচডব্লিউ কল করে। এটি কাজটি সম্পন্ন করে, তবে আমি যেমন চাই তেমন মার্জিতভাবে নয়।


2

কেভিএম-ক্লক অতিথি প্রারম্ভকালে অতিথি সময়টিকে হোস্ট করার জন্য সিঙ্ক করে । আপনার অতিথিতে ক্লায়েন্ট ব্যবহার করা উচিত এবং স্থগিত / পুনঃসূচনা ব্যবহারের পরিবর্তে শাটডাউন / স্টার্টআপ করা উচিত start


হ্যাঁ, আমি এটি স্টার্টআপে সিঙ্ক হওয়ার বিষয়টি নিশ্চিত করতে পারি, কারণ যখন আমি অতিথিটির শাটডাউন / স্টার্টআপ করি তখন সবকিছু ঠিক থাকে। এনটিপি ব্যবহার করা অনেক কারণেই সমাধান নয় (এটি একটি কার্যকরী বিষয়, সময় পার্থক্য যখন বিশাল হয় তখন এটি আতঙ্কিত হয়, এটির সময় সার্ভারে অ্যাক্সেস প্রয়োজন)। আমি স্থগিত / পুনঃসূচনা সহ সমস্যাটি সমাধান করার একটি উপায় অনুসন্ধান করছি, কারণ এটি লিবারভিটের একটি আকর্ষণীয়, সুন্দর এবং ডিফল্ট বিকল্প।
হিস্তো হ্রিস্টভ

স্থগিতাদেশ হ'ল 1) ভিএম রাষ্ট্র ফাইল করতে মাইগ্রেট করুন এবং 2) ধ্বংস করুন। আপনি যখন সাসপেন্ড থেকে পুনরায় শুরু করেন, ভিএম অবস্থা পুনরুদ্ধার করা হয় (ফাইল থেকে ভিএম মেমরিতে ফিরে যায়)। এই রাষ্ট্রটি বর্তমান টাইমস্ট্যাম্প অন্তর্ভুক্ত করবে। সুতরাং হ্যাঁ, এটি ডিফল্ট, তবে না, সময় নির্ধারণের বিষয়টি এখনও গুরুত্বপূর্ণ and
dyasny


4
@ ব্রায়ান কেইন এটি অত্যন্ত তর্কযোগ্য, বিশেষত বিবৃতিটির পিছনে কোনও ব্যাখ্যা বা যুক্তি ছাড়াই। একটি প্রোফাইলিংক সরবরাহ করতে: docs.redhat.com/docs/en-US/…
dyasny

2

libvirt 2015 সাল থেকে অতিথি সময় সিঙ্ক সমর্থন করে । ডেবিয়ান স্ট্রেচে এবং পরে বিকল্পগুলির SYNC_TIMEসন্ধান করুন /etc/default/libvirt-guests:

# If non-zero, try to sync guest time on domain resume. Be aware, that
# this requires guest agent with support for time synchronization
# running in the guest. For instance, qemu-ga doesn't support guest time
# synchronization on Windows guests, but Linux ones. By default, this
# functionality is turned off.
#SYNC_TIME=1

আপনি এর সাথে হোস্ট সিস্টেমের মধ্যে থেকে সময় সিঙ্ক পরীক্ষা করতে পারেন:

virsh qemu-agent-command INSERT_YOUR_DOMAIN_HERE '{"execute":"guest-set-time"}'

এই আদেশটি {"return":{}}সাফল্যে ফিরে আসা উচিত ।


0

আমি ভিএম স্থগিত / পুনরায় শুরু করার পরে সময় সিঙ্ক করার জন্য একইভাবে ব্যবহার করি, তবে আমি অনুমান করার চেষ্টা করা ভাল বলে মনে করি যে এটি সঠিক দিকে সিঙ্ক করা উচিত এবং এটি এনটিপিডি দ্বারা স্থির হতে পারে সংক্ষিপ্ত পার্থক্যের চেয়ে দীর্ঘ।

https://gist.github.com/jhrcz/7138803

পুনশ্চ. নতুন সেন্টোস 7.7 চেঞ্জলগ বলছে এটি কেবল কেভিএম-ক্লক ক্লক সোর্সের সাথে স্বয়ংক্রিয়ভাবে করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.