নেটওয়ার্কের মাধ্যমে একটি সার্ভার থেকে অন্য সার্ভারে লজিক্যাল ভলিউমটি সরানো হচ্ছে?


13

আমার একটি কেভিএম হোস্ট মেশিন রয়েছে এতে বেশ কয়েকটি ভিএম রয়েছে। প্রতিটি ভিএম হোস্টে একটি লজিকাল ভলিউম ব্যবহার করে। আমার অন্য হোস্ট মেশিনে এলভিগুলি অনুলিপি করা দরকার।

সাধারণত, আমি এই জাতীয় কিছু ব্যবহার করব:

dd if=/the/logical-volume of=/some/path/machine.dd

এলভিটিকে কোনও চিত্র ফাইলে পরিণত করতে এবং এটি স্থানান্তর করতে এসসিপি ব্যবহার করুন। তারপরে নতুন হোস্টের নতুন এলভিতে ফাইলটি অনুলিপি করতে ডিডি ব্যবহার করুন।

এই পদ্ধতির সমস্যাটি হ'ল ভিএম উভয় মেশিনের দ্বিগুণ ডিস্ক স্পেস প্রয়োজন। অর্থাত। একটি 5 জিবি এলভি এলভিটির জন্য 5 গিগাবাইট স্পেস ব্যবহার করে এবং ডিডি কপিটি চিত্রের জন্য অতিরিক্ত 5 জিবি স্থানও ব্যবহার করে। এটি ছোট এলভিগুলির পক্ষে ভাল, তবে যদি (আমার ক্ষেত্রে হিসাবে) আপনার কাছে একটি বড় ভিএমের জন্য 500 জিবি এলভি থাকে তবে কী হবে? তাই এটি একটি 500GB ইমেজ ফাইল dd রাখা যাবে না নতুন হোস্ট মেশিনের, একটি 1TB হার্ড ড্রাইভ রয়েছে এবং কপি করার জন্য একটি 500GB লজিক্যাল ভলিউম এবং হোস্ট OS এর জন্য রুম আছে এবং অন্যান্য ছোট গেস্ট সিস্টেমের জন্য রুম।

আমি যা করতে চাই তা হ'ল:

dd if=/dev/mygroup-mylv of=192.168.1.103/dev/newvgroup-newlv

অন্য কথায়, একটি লজিকাল ভলিউম থেকে সরাসরি অন্যটিকে ডেটা অনুলিপি করুন এবং মধ্যবর্তী চিত্র ফাইলটি এড়িয়ে যান ip

এটা কি সম্ভব?


উত্তর:


24

অবশ্যই, এটা সম্ভব।

dd if=/dev/mygroup-mylv | ssh 192.168.1.103 dd of=/dev/newvgroup-newlv

গম্ভীর গর্জন।

যদিও নিজের পক্ষ থেকে কিছু করুন এবং ডিফল্ট ব্লক সাইজের চেয়ে বড় কিছু ব্যবহার করুন। হতে পারে বিএস = 4 এম যোগ করুন (4 এমবি অংশে পড়ুন / লিখুন) আপনি মন্তব্যগুলিতে ব্লক আকারগুলি সম্পর্কে কিছুটা নিটপিক করছে তা দেখতে পাচ্ছেন; যদি আপনি নিজেকে প্রায়শই প্রায়শই এই কাজটি করতে দেখেন তবে বিভিন্ন ব্লক সাইজের সাথে কয়েকবার চেষ্টা করার জন্য কিছুটা সময় নিন এবং নিজের সেরা ট্রান্সফার রেট কী পান তা নিজেই দেখুন।

মন্তব্যগুলি থেকে একটি প্রশ্নের উত্তর:

স্থানান্তর সম্পর্কে পরিসংখ্যান পেতে আপনি পিভি এর মাধ্যমে স্থানান্তরটি পাইপ করতে পারেন । এটা তোলে আউটপুট আপনাকে সংকেত পাঠানো পেতে তুলনায় অনেক nicer এর dd

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


1
বিএসগুলি কি কেবল অনুলিপিটির গতিতে প্রভাব ফেলবে, বা ডেটা কীভাবে সংরক্ষণ করা হয় তার কোনও প্রভাব আছে?
নিক

3
ডেটা কীভাবে সংরক্ষণ করা হয় তাতে এর কোনও প্রভাব নেই, তবে এটি পড়ার এবং লেখার জন্য ডিফল্ট ব্লকসাইজ (512 বাইটের) ব্যবহার করার চেয়ে অনেক বেশি দক্ষ।
লারস্ক করুন

3
@ নিক: লিনাক্সে, আপনি স্থানান্তরিত পরিমাণের সাথে স্থিতি রেখা প্রদর্শন করার জন্য ddপ্রক্রিয়াটি USR1সংকেতটি প্রেরণ করতে পারেন । আপনার ddপ্রসেসের প্রসেস নম্বরটি এর মতো কিছু দিয়ে পান ps aux | grep ddএবং তারপরে কমান্ডটি দিয়ে এই পিআইডি ব্যবহার করুন kill -USR1 $PID। আপনি যে শুরুটি করেছিলেন সেখানে বার্তাটি মূল টার্মিনালে প্রদর্শিত হবে dd
সেভেন

3
আপনি সম্ভবত এমন কোনও বিএস ব্যবহার করতে চান না যেহেতু এটি কেবল পাইপকে লেখার জন্য ব্লক করে দেবে যতক্ষণ না এটি তার বেশিরভাগটি নেটওয়ার্ক সকেটে স্থানান্তর করতে পারে, এই সময়টিতে ডিস্কটি নিষ্ক্রিয় হয়ে যাবে। যেহেতু ডিফল্ট রিডহেডের আকার 128k, আপনি সম্ভবত এটির সাথে থাকতে চান। অথবা ডিস্ক রিডহেডের আকার বাড়ান।
psusi

1
@ পিপুসি: প্রশ্নের নীচে মন্তব্যে জোড়াদেচি লিঙ্কটি বিপরীতভাবে দেখিয়েছে, তারা ১M এম ব্লক আকারের সাথে দ্রুততম ফলাফল পেয়েছে, তবে স্থানান্তর পদ্ধতি হিসাবে এসএসএসের পরিবর্তে নেটক্যাট ব্যবহার করেছে, যখন এনক্রিপশন প্রয়োজন হয় না, যা সর্বদা একটি ভাল বিকল্প option
সেভেন

19

এখানে একটি অপ্টিমাইজড সংস্করণ রয়েছে, যা pvবিএস ব্যবহার করে অগ্রগতি দেখায় এবং বড় অংশগুলির জন্য বিএস ব্যবহার করে এবং gzipনেটওয়ার্ক ট্র্যাফিক কমাতেও ব্যবহার করে।

ইন্টারনেট সার্ভারের মতো ধীর সংযোগের মধ্যে ডেটা সরিয়ে দেওয়ার সময় এটি সঠিক। আমি একটি পর্দা বা tmux সেশনের ভিতরে কমান্ড চালানোর পরামর্শ দিই। আপনি কমান্ডটি নির্বাহ করেন সেখান থেকে হোস্টের সাথে ssh সংযোগটি ঝামেলা ছাড়াই সংযোগ বিচ্ছিন্ন হতে পারে।

$ dd if=/dev/volumegroupname/logicalvolume bs=4096 | pv | gzip | \
    ssh root@78.46.36.22 'gzip -d | dd of=/dev/volumegroupname/logicalvolume  bs=4096'

2
আপনি ssh -Cপরিবর্তে ব্যবহার করতে পারে gzip। পারফরম্যান্সের প্রভাব আছে কিনা তা আমি নিশ্চিত নই, তবে এটি টাইপিং অনেক কম।
স্যামুয়েল এডউইন ওয়ার্ড

1
আমি জিগিপের পরিবর্তে পিগজ বা পক্সজ -1 ব্যবহার করার পরামর্শ দিই, মাল্টিথ্রেডিং যে কোনও আধুনিক সার্ভারে সত্যই সহায়তা করে।
এস সিফ্রে

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

4

এটি করার জন্য কোনও পুরানো ফ্রিইন্ড ব্যবহার সম্পর্কে কীভাবে। NetCat।

যে সিস্টেমে লজিকাল ভলিউমের ধরণ হারাচ্ছে On

  • $ dd if=/dev/[directory]/[volume-name] | nc -l [any high number port]

তারপরে রিসিভিং সিস্টেমে। আদর্শ

  • $ nc -w 10 [ip or name] [port] | dd of=/dev/[directory/[volume name]

অনুবাদ করা, orgin বক্স এই ফাইলটি ডিডি করুন এবং এটি এনসি (নেটক্যাট) এ পাইপ করুন যা এই পোর্টটি শুনবে। রিসিভিং সিস্টেমে নেটক্যাট 10 সেকেন্ড অপেক্ষা করবে যদি এটি [পোর্ট] এ [আইপি বা নাম] বন্ধ করার আগে কোনও তথ্য না পেয়ে থাকে তবে ডেটাটি লেখার জন্য এটি ডিপ করুন।


2
নেটক্যাট এই বিকল্পগুলির সাথে ইউডিপি ব্যবহার করে না।
স্যামুয়েল এডউইন ওয়ার্ড

3

প্রথমে আমি lv এর একটি স্ন্যাপশট নেব:

lvcreate --snapshot --name my_shot --size <thesize> /dev/<name of vg>/<name of lv>

এর পরে আপনাকে একই আকারের সাথে নতুন হোস্টে (যেমন lvcreate ব্যবহার করে) একটি নতুন lv তৈরি করতে হবে। তারপরে আপনি সরাসরি নতুন হোস্টে ডেটা অনুলিপি করতে পারেন। এখানে আমার অনুলিপি আদেশ উদাহরণ:

dd if=/dev/vg0/my_shot bs=4096 | pv | ssh root@some_host -C 'dd of=/dev/vg1/<created lv> bs=4096'

আমি একটি প্রক্সমক্স pve অন্য হোস্টে রক্ষণাবেক্ষণ করা ভিএম অনুলিপি করতে প্রক্রিয়াটি ব্যবহার করেছি। লজিক্যাল ভলিউমে বেশ কয়েকটি অতিরিক্ত এলভি থাকে যা ভিএম নিজেই রক্ষণাবেক্ষণ করে।


3

প্রথমে নিশ্চিত করুন যে লজিকাল ভলিউম মাউন্ট করা হয়নি। যদি এটি হয় এবং আপনি একটি "হট কপি" বানাতে চান তবে প্রথমে একটি স্ন্যাপশট তৈরি করুন এবং পরিবর্তে এটি ব্যবহার করুন: lvcreate --snapshot --name transfer_snap --size 1G

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

আপনার কি এসএসএইচ ব্যবহার করা উচিত?

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

সংকোচনের ব্যবহার

কাঁচা ডিস্ক চিত্রগুলি স্থানান্তরিত করার সময়, এটি সর্বদা সংক্ষেপণ ব্যবহার করার পরামর্শ দেওয়া হয়। তবে আপনি চান না যে সংক্ষেপটি কোনও বাধা হয়ে উঠবে। গিজিপের মতো বেশিরভাগ ইউনিক্স সংকোচনের সরঞ্জামগুলি সিঙ্গল-থ্রেডযুক্ত, তাই যদি সংক্ষেপণগুলি একটি সিপিইউ স্যাটারুয়েটে করে তবে এটি একটি বাধা। সেই কারণে, আমি সবসময় পিগজ ব্যবহার করি, একটি জিজিপ বৈকল্পিক যা সংকোচনের জন্য সমস্ত সিপিইউ কোর ব্যবহার করে। এবং এটি আপনার পক্ষে গিগাবাইট গতির উপরে এবং উপরে যেতে চান necessary

এনক্রিপশন ব্যবহার করা হচ্ছে

যেমন আগেই বলা হয়েছিল, ssh ধীর গতির হয়। আপনার যদি AES-NI সিপিইউ থাকে তবে এটি কোনও বাধা হওয়া উচিত নয়। সুতরাং ssh ব্যবহারের পরিবর্তে আমরা সরাসরি ওপেনসেল ব্যবহার করতে পারি।

গতি

আপনাকে উপাদানগুলির গতির প্রভাব সম্পর্কে ধারণা দিতে, এখানে আমার ফলাফল রয়েছে। এগুলি দুটি উত্পাদনের সিস্টেমের পড়া এবং মেমরিতে লেখার মধ্যে গতি স্থানান্তর করে। আপনার প্রকৃত ফলাফল নেটওয়ার্কের গতি, এইচডিডি গতি এবং উত্স সিপিইউ গতির উপর নির্ভর করে! আমি এটি দেখানোর জন্য করছি যে কমপক্ষে কোনও বিশাল পারফরম্যান্স ড্রপ নেই। Simple nc dd: 5033164800 bytes (5.0 GB, 4.7 GiB) copied, 47.3576 s, 106 MB/s +pigz compression level 1 (speed gain depends on actual data): network traffic: 2.52GiB 5033164800 bytes (5.0 GB, 4.7 GiB) copied, 38.8045 s, 130 MB/s +pigz compression level 5: network traffic: 2.43GiB 5033164800 bytes (5.0 GB, 4.7 GiB) copied, 44.4623 s, 113 MB/s +compression level 1 + openssl encryption: network traffic: 2.52GiB 5033164800 bytes (5.0 GB, 4.7 GiB) copied, 43.1163 s, 117 MB/s উপসংহার: সংক্ষেপণ ব্যবহার করা একটি লক্ষণীয় স্পিডআপ দেয় কারণ এটি ডেটার আকারকে অনেক হ্রাস করে। আপনার নেটওয়ার্কের গতি যদি ধীর হয় তবে এটি আরও বেশি গুরুত্বপূর্ণ। সংক্ষেপণ ব্যবহার করার সময়, আপনার সিপিইউ ব্যবহারটি দেখুন। যদি ব্যবহারটি সর্বোচ্চ হয়ে যায়, আপনি এটি ছাড়া চেষ্টা করতে পারেন। AES-NI সিস্টেমে সংক্ষিপ্ত প্রভাব হিসাবে কেবল সংক্ষেপে ব্যবহার করা, কেবলমাত্র এটি সংক্ষেপ থেকে 30-40% সিপিইউ চুরি করে ho

স্ক্রিন ব্যবহার

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

কপি দেয়

কিছু নির্ভরতা ইনস্টল করুন (উত্স এবং গন্তব্য উপর): apt install pigz pv netcat-openbsd

তারপরে উত্স হিসাবে একই আকারের সাথে গন্তব্যে একটি ভলিউম তৈরি করুন। যদি অনিশ্চিত হয় তবে আকারটি পেতে এবং লক্ষ্য তৈরি করতে উত্সটিতে lvdisplay ব্যবহার করুন: lvcreate -n lvname vgname -L 50G

এরপরে, ডেটা পাওয়ার জন্য গন্তব্য প্রস্তুত করুন:

nc -l -p 444 | openssl aes-256-cbc -d -salt -pass pass:asdkjn2hb | pigz -d | dd bs=16M of=/dev/vgname/lvname

এবং প্রস্তুত হওয়ার পরে, উত্সটিতে স্থানান্তর শুরু করুন:

pv -r -t -b -p -e /dev/vgname/lvname | pigz -1 | openssl aes-256-cbc -salt -pass pass:asdkjn2hb | nc <destip/host> 444 -q 1

দ্রষ্টব্য: আপনি যদি স্থানীয়ভাবে ডেটা স্থানান্তর করে থাকেন বা এনক্রিপশনের বিষয়ে যত্নশীল না হন তবে কেবল উভয় পক্ষের ওপেনসেল অংশটি সরিয়ে দিন। আপনি যদি যত্নশীল হন তবে এস্যাসকেজএন 2 এইচবি হ'ল এনক্রিপশন কী, আপনার এটি পরিবর্তন করা উচিত।


এটি কোনও প্রক্সমক্স সার্ভারে কখনও করবেন না: অ্যাপ্লিকেশন নেটক্যাট-ওপেনএসডি ইনস্টল করা নেটক্যাট-ওপেনএসডি সার্ভার থেকে সম্পূর্ণভাবে মুছে ফেলা প্রক্সমক্স এবং 5+ ঘন্টা ডাউনটাইম এবং কাজের কারণে ঘটেছে !!!
জুলটান

0

বাকি উত্তরগুলি ভালভাবে কাজ করে না এবং প্রশ্নের প্রয়োজনীয়তা পূরণ করে না, কারণ এটি লক্ষ্যযুক্ত সার্ভারে লজিক্যাল ভলিউম তৈরি করে না, পরিবর্তে রুট ডিস্কে / dev / mygroup / myvol এর অধীনে একটি ফাইল তৈরি করে, যা এছাড়াও LV সরঞ্জামগুলিতে অনুলিপি করা ভলিউমটি প্রদর্শিত না হতে পারে lvdisplay

আমি একটি বাশ স্ক্রিপ্ট তৈরি করেছি যা পুরো প্রক্রিয়াটিকে স্বয়ংক্রিয় করে তোলে: https://github.com/daniol/lvm-ssh-transfer

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