এক্স 2 ধারাবাহিক-স্ন্যাপশটের সাথে তোলা স্ন্যাপশটগুলি থেকে একটি আমাজন ইবিএস RAID0 অ্যারে পুনরুদ্ধার করা


8

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

এখন, আপনি কীভাবে এই স্ন্যাপশটগুলি থেকে দ্রুত কোনও নতুন উদাহরণে অ্যারে পুনর্নির্মাণ করবেন?

আপনি যখন একাধিক ভলিউমের স্ন্যাপশট তৈরি করতে ec2- ধারাবাহিক-স্ন্যাপশট ব্যবহার করেন, তখন আপনাকে RAID- র প্রতিটি ডিভাইসের জন্য কোন ভলিউম ব্যবহৃত হয়েছিল তা বলার উপায় নেই। আমি পুরোপুরি ভুল, কিন্তু যেহেতু আপনি খণ্ডগুলি জুড়ে ডেটা ছড়িয়ে দিচ্ছেন, এটি কারণ হিসাবে দাঁড়াবে যে আপনাকে প্রতিটি নতুন ভলিউম একই স্থানে RAID তে একই ভলিউমটি যে ভলিউম থেকে তৈরি করা হয়েছিল ঠিক একই স্থানে রাখতে হবে।

একটি উদাহরণ:

  • একটি RAID0 কনফিগারেশনে 3x200gb ভলিউম।
  • RAID- র মধ্যে ভোল্ট -1 হ'ল / ডিভ / এসডিএইচ ডিভাইস 0
  • RAID- এ ভোল -2 হ'ল / dev / sd1 ডিভাইস 1
  • RAID- এ ভোল -3 হ'ল / dev / sd2 ডিভাইস 2

আপনার সাথে একটি EC2 স্ন্যাপশট তৈরি করুন: ec2-consistent-snapshot <options> vol-1 vol-2 vol-3

আপনার কাছে এখন 3 টি স্ন্যাপশট রয়েছে এবং তারা কোন ডিভাইসটি তা আবিষ্কার করার একমাত্র উপায় হ'ল উত্স ভলিউম আইডিটি অনুসন্ধান করা, তারপরে উদাহরণস্বরূপ উত্স ভলিউম আইডিটি কোন ডিভাইসটি মাউন্ট করা আছে তা দেখুন এবং তারপরে RAID- র বিশদটি দেখুন উত্স ভলিউমের উদাহরণে কনফিগারেশন।

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

সুতরাং, উপসংহারে:

  • আমি কীভাবে ec2- ধারাবাহিক-স্ন্যাপশট এবং একটি সফ্টওয়্যার RAID0 অ্যারে কাজ করে কিছু অনুভব করছি?
  • যদি তা না হয় তবে র‌্যাড অ্যারেতে কোন ডিভাইস / অবস্থান স্ন্যাপশটের অন্তর্ভুক্ত তা না জানার সমস্যাটির আশেপাশে কোনও জ্ঞাত সমাধান / সেরা অনুশীলন রয়েছে কি?

আমি আশা করি এটি পরিষ্কার ছিল, এবং আপনার সহায়তার জন্য ধন্যবাদ!

উত্তর:


5

যেহেতু আপনি ভলিউম জুড়ে ডেটা ছড়িয়ে দিচ্ছেন, এটির কারণ দাঁড়াবে যে আপনি প্রতিটি নতুন ভলিউম একই স্থানে RAID এ একই ভলিউমটি যে ভলিউম থেকে স্ন্যাপশটটি তৈরি করা হয়েছিল ঠিক একই স্থানে রাখতে হবে।

আমি আপনার ভিত্তি পরীক্ষা করেছি, এবং এটি যৌক্তিক হিসাবে মনে হচ্ছে, পর্যবেক্ষণ অন্যথায়।

আমাকে এটি বিশদ করতে দাও: আপনার মতো
আমারও ঠিক একই চাহিদা রয়েছে। যাইহোক, আমি যে RAID0 ব্যবহার করছি তার কেবলমাত্র 2 টি ভলিউম রয়েছে।

আমি উবুন্টু 10 ব্যবহার করছি এবং এক্সএফএস দিয়ে ফর্ম্যাট করা একটি RAID0 ডিভাইস গঠনের জন্য 2 টি ইবিএস ডিভাইস রয়েছে।

RAID0 ডিভাইসটি নিম্নলিখিত কমান্ডটি ব্যবহার করে তৈরি করছিল:
sudo mdadm --create /dev/md0 --level 0 --metadata=1.1 --raid-devices 2 /dev/sdg /dev/sdh

আমি এমওয়াইএসকিউএল এবং অন্যান্য সফ্টওয়্যারগুলির একটি গুচ্ছ ইনস্টল করেছি যা তাদের ডেটা ফাইল সঞ্চয় করতে / dev / md0 ব্যবহার করার জন্য কনফিগার করা হয়েছে।

একই খণ্ডগুলি ব্যবহার করে : একবার হয়ে গেলে, আমি সমস্ত কিছু ছাপিয়েছি, রেইডটি থামাব এবং এটিকে আবার পুনরায় sudo mdadm --assemble /dev/md0 /dev/sdh /dev/sdg সাজিয়ে তুলব: জিনিসটি হ'ল আদেশের নির্বিশেষে /dev/sdg /dev/sgh, RAID নিজেকে সঠিকভাবে পুনর্গঠন করে।

স্ন্যাপশট ব্যবহার করে : এটি পোস্ট করুন, আমি ec2-consistent-snapshotএকসাথে 2 টি ইবিএস ডিস্কের স্ন্যাপশট তৈরি করতে ব্যবহার করি । আমি তখন এই ডিস্কটি থেকে ভলিউম তৈরি করি, এটি একটি নতুন উদাহরণের সাথে সংযুক্ত করি (এটি ইতিমধ্যে সফ্টওয়্যারটির জন্য কনফিগার করা হয়েছে), রেডকে পুনরায় সংযুক্ত করুন (আমিও ইবিএস ভলিউমের ক্রমটি বিনিময় করার চেষ্টা করেছি), এটি মাউন্ট করুন এবং আমি প্রস্তুত যাও.

অদ্ভুত লাগছে, তবে তা কাজ করে।


সুতরাং, মূলত, আপনি অ্যারে পুনর্নির্মাণ করার সময়, আপনি এটি কোন অর্থে তৈরি করেন তা বিবেচনা করে না। আমার ধারণা, এটি ডিস্কগুলিতে লেখা সুপারব্লক ডেটার কারণে, সুতরাং RAID কন্ট্রোলার এটি কীভাবে একসাথে রাখা যায় তা জানেন। এটি চমৎকার! আপনার উত্তরের জন্য ধন্যবাদ, এটি আমার প্রয়োজনের তুলনায় অনেকটা ঠিক!
জিম রুবেনস্টাইন

4

আমি একটি অনুরূপ কনফিগারেশন চালিয়েছি ( 4 টি ইবিএস ভলিউমের ওপরে RAID0 ), এবং ফলস্বরূপ ec2- ধারাবাহিক-স্ন্যাপশটের সাহায্যে তৈরি হওয়া স্ন্যাপশটগুলি থেকে RAID অ্যারের পুনর্গঠন করার জন্য একই উদ্বেগ ছিল ।

সৌভাগ্যক্রমে, একটি রেইড অ্যারেতে প্রতিটি ডিভাইসে মেটাডেটা (একটি সুপারব্লকের মধ্যে) থাকে যা অ্যারেতে তার অবস্থান, অ্যারের ইউআইডি এবং অ্যারের স্তর (যেমন RAID0) রেকর্ড করে। যে কোনও ডিভাইসে এই সুপারব্লোকটি জিজ্ঞাসা করতে নিম্নলিখিত কমান্ডটি চালান ( '^ এটি'র সাথে মেলে লাইনটি কোয়েড ডিভাইস বর্ণনা করে):

$ sudo mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : 2ca96b4a:9a1f1fbd:2f3c176d:b2b9da7c
  Creation Time : Mon Mar 28 23:31:41 2011
     Raid Level : raid0
  Used Dev Size : 0
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Mon Mar 28 23:31:41 2011
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : ed10058a - correct
         Events : 1

     Chunk Size : 256K

      Number   Major   Minor   RaidDevice State
this     0     202       17        0      active sync   /dev/sdb1

   0     0     202       17        0      active sync   /dev/sdb1
   1     1     202       18        1      active sync   /dev/sdb2
   2     2     202       19        2      active sync   /dev/sdb3
   3     3     202       20        3      active sync   /dev/sdb4

আপনি যদি কোনও ডিভাইসে একই ক্যোয়ারী করেন যা কোনও অ্যারের অংশ নয় তবে আপনি পাবেন:

$ sudo mdadm --examine /dev/sda1
mdadm: No md superblock detected on /dev/sda1.

যা প্রমাণ করে যে এই কমান্ডটি সত্যই ডিভাইসে সঞ্চিত তথ্যের উপর নির্ভর করে এবং কোনও কনফিগারেশন ফাইল নয়।

অনুরূপ তথ্য পুনরুদ্ধার করে কেউ একটি RAID অ্যারের ডিভাইসগুলিও RAID ডিভাইস থেকে শুরু করে পরীক্ষা করতে পারে:

$ sudo mdadm --detail /dev/md0

আমি পরে ইসি 2-বর্ণনা-ভলিউমগুলির সাথে পরবর্তীতে ec2- ধারাবাহিক-স্ন্যাপটশটের জন্য খণ্ডগুলির তালিকা তৈরি করতে ব্যবহার করি ( -n এবং --debug স্ন্যাপশট তৈরি না করে এই কমান্ডটি পরীক্ষা করার অনুমতি দেয়)। নিম্নলিখিত কমান্ডটি ধরে নিয়েছে যে ডিরেক্টরি / mysql হ'ল ভলিউমের মাউন্ট পয়েন্ট এবং এডাব্লুএস অঞ্চলটি আমাদের পশ্চিম -১ :

$ sudo -E ec2-consistent-snapshot --region us-west-1 --mysql --freeze-filesystem /mysql --mysql-master-status-file /mysql/master-info --description "$(date +'%Y/%m/%d %H:%M:%S') - ASR2 RAID0 (4 volumes) Snapshot" --debug -n $(ec2-describe-volumes --region us-west-1 | grep $(wget http://169.254.169.254/latest/meta-data/instance-id -O - -q) | egrep $(sudo mdadm --detail $(awk '{if($2=="/mysql") print $1}' /etc/fstab) | awk '/ \/dev\//{printf "%s ", $7}' | sed -e 's# /#|/#g') | awk '{printf "%s ", $2}')

0

আমি জানি এটি আপনার প্রশ্নের উত্তর দেয় না, তবে আমি অ্যামাজনের বেস ইক্য 2-ক্রিয়েট-স্ন্যাপশট সরঞ্জাম এবং ক্রোন স্ক্রিপ্টের সাথে অনুরূপ কিছু করছি। এটি ইসি 2-সামঞ্জস্যপূর্ণ-স্ন্যাপশটের মতো দ্রুত নয়, তবে আমার প্রয়োজনীয় অতিরিক্ত কন্ট্রোলটি পেয়েছি: fsync, লক লিখেছেন এবং সর্বাগ্রে, স্ন্যাপশটগুলির যথাযথ নাম দিন যাতে সেগুলি সঠিক ক্রমে পুনর্গঠন করা যায়।


আমি আসলে এক্সএফএস ব্যবহার করছি, তাই আমি স্ন্যাপশট করার সময় ফাইল সিস্টেমটি স্থির করে ফেলি। মাইএসকিউএল-এ FLUSH এবং LOCK এর সাথে একত্রিত (ec2- ধারাবাহিক-স্ন্যাপশট এগুলি করে), প্রতিবার আমার একটি ধারাবাহিক স্ন্যাপশট থাকা উচিত। সমস্যাটি হ'ল নামকরণ, যার জন্য আমি কেবল আপাতত ec2- ধারাবাহিক-স্ন্যাপশট পার্ল স্ক্রিপ্টটি সংশোধন করে একটি অস্থায়ী সমাধান তৈরি করেছি।
জিম রুবেনস্টাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.