zfs সন্তানের মধ্যে রুট ফাইল সিস্টেমের নাম পরিবর্তন / সরান


9

অনুরূপ প্রশ্ন বিদ্যমান আছে তবে সমাধানটি (ব্যবহার করে mv) ভয়ঙ্কর কারণ এক্ষেত্রে এটি "অনুলিপি করুন, তারপরে বিশুদ্ধ" সরানো "এর পরিবর্তে" সরান "হিসাবে কাজ করে।

সুতরাং, আমি একটি পুল তৈরি করেছি:

zpool create tank /dev/loop0

এবং সেখানে অন্য স্টোরেজ থেকে আমার ডেটা সরাসরি সংযুক্ত করে যাতে আমার ডেটা এখন /tank

zfs list
NAME      USED  AVAIL  REFER  MOUNTPOINT
tank      591G  2.10T   591G  /tank

এখন আমি বুঝতে পেরেছি যে আমার ডেটা একটি ফাইল ফাইল সিস্টেমে থাকা দরকার, /tankসরাসরি ফাইল সিস্টেমে নয় ।

সুতরাং আমি কীভাবে বিদ্যমান রুট ফাইল সিস্টেমটিকে সরানো বা নামকরণ করব যাতে এটি পুলের মধ্যে একটি শিশু হয়ে যায়?

সাধারণ নামকরণ কাজ করবে না:

zfs rename tank tank/mydata
cannot rename to 'tank/mydata': datasets must be within same pool

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

আমি জানি যে এর সমাধান রয়েছে যাতে সমস্ত ডেটা অনুলিপি করা ( mvবা পুরো ডেটাসেট অন্য ডিভাইসে এবং পিছনে প্রেরণে জড়িত) জড়িত , তবে কি কোনও সহজ মার্জিত উপায় থাকা উচিত নয়?

কেবলমাত্র লক্ষণীয় যে আমি এই পর্যায়ে স্ন্যাপশটগুলির যত্ন নিই না (এখনও যত্ন নেওয়ার মতো কিছু নেই)।

উত্তর:


4

(মন্তব্যগুলিতে নোট দেখুন, এটি কাজ করে তবে আপনি প্রাথমিক স্ন্যাপশটটি কখনও মুছতে পারবেন না, সুতরাং এটি কোনও ভাল সমাধান নয়)

জেডএফএসের সাহায্যে এটি আশ্চর্যজনকভাবে সোজা: কেবল স্ন্যাপশট, ক্লোন এবং তারপরে আরএম। কোনও অতিরিক্ত স্থান বা কপির সময় প্রয়োজন নেই।

zfs snapshot tank@mydata
zfs clone tank@mydata tank/newname
zfs set mountpoint=/beep/boop tank/newname
rm -rf /tank/*

আপনার জেপুলে যদি অন্য ফাইল সিস্টেম থাকে তবে আপনি যদি মাউন্ট পয়েন্টটি পরিবর্তন না করেন তবে আরএম-আরএফ চালানোর সময় দেখুন। আপনি দুর্ঘটনাক্রমে নতুন ফাইল সিস্টেম (/ ট্যাঙ্ক / নতুন নাম) বা অন্য কোনও শিশু ফাইল সিস্টেমের (ট্যাঙ্ক / *) সামগ্রীগুলি পুনরাবৃত্তভাবে মুছে ফেলতে চান না। একবার আপনি নিশ্চিত করে ফেললেন যে আপনার ফাইলগুলি মূল Fs (/ ট্যাঙ্ক /) এ নেই এবং কেবলমাত্র আপনার নতুন ফাইল সিস্টেমে নেই, আপনি সেই প্রাথমিক স্ন্যাপশটটিও মুছতে পারেন।

zfs delete tank@mydata

কলুষিত উত্তরের মতো দেখে মনে হচ্ছে (ডেটাটি সরিয়ে না নিয়ে কোনও নতুন ডেটাশেটে আনার কোনও উপায় আমি ভাবতে পারি না) তবে দুর্ভাগ্যক্রমে আপনি এই আসল স্ন্যাপশটটি মুছতে পারবেন না। ক্লোনগুলির কয়েকটি বিশ্রী পার্শ্ব প্রতিক্রিয়া রয়েছে। নতুন ডেটাसेट এটির উপর নির্ভর করে আপনি @ মাইটাটাটা ট্যাঙ্ক মুছতে পারবেন না। আপনি নতুন ডেটাসেটকে প্রচার করতে পারেন, যা @ মায়াডাটাটিকে ট্যাঙ্ক / নতুন নাম @ মাইডাটাতে স্থানান্তরিত করবে, তবে এখন আপনি আশেপাশের নির্ভরতা বদলে ফেলেছেন এবং নতুন ডেটাসেটটি সরিয়ে ফেললে আপনি মজার 'ডেটাসেট ইতিমধ্যে বিদ্যমান' ত্রুটি পেয়ে যাবেন (কমপক্ষে ফ্রিবিএসডি-তে, যদিও আমি ধরে নিই এটি সম্ভবত ওএসের চেয়ে জেডএফএস নির্দিষ্ট specific
ইউএসডি ম্যাট

@ ইউএসডি ম্যাট: আপনি পুরোপুরি ঠিক বলেছেন। আপনি যদি সাবফিলিস্টেমগুলি (ট্যাঙ্ক / এ -> ট্যাঙ্ক / একটি @ স্ন্যাপ -> ট্যাঙ্ক / অ্যাস্ন্যাপ-ক্লোন -> ট্যাঙ্ক / নামকরণ-অ্যাস্ন্যাপ-ক্লোন) নিয়ে কাজ করছেন তবে এটি পুরোপুরি কাজ করে তবে আপনি যদি মূলের সাথে কাজ করছেন না তবে zpool। ত্রুটির মতো মনে হয়, আপনার পুলের মূল ফাইল সিস্টেমটি কখনও পূরণ না করার জন্য এটি অন্য এক কারণ হিসাবে চক আপ করুন।
Notepter

4

@ ইউএসডিম্যাট দ্বারা নথিভুক্ত সমস্যাটি দেওয়া, জেডএফএস প্রেরণ / গ্রহণ করা সম্ভবত সবচেয়ে ভাল উপায়।

zfs snapshot tank@snap
zfs send tank@snap | zfs receive tank/anotherfs
zfs set mountpoint=/beep/boop tank/anotherfs
rm -rf /tank/*
zfs destroy tank@snap

আপনি যদি আপনার ট্যাঙ্কের zpool এ অন্য ফাইল সিস্টেম আছে তবে এর মাউন্ট পয়েন্টটি পরিবর্তন না করলে rm -rf চালানোর সময় দেখুন। আপনি নতুন ফাইল সিস্টেমের (/ ট্যাঙ্ক / নতুন নাম) বা অন্য কোনও শিশু ফাইল সিস্টেমের (/ ট্যাঙ্ক / *) দুর্ঘটনাক্রমে পুনরাবৃত্তভাবে মুছে ফেলতে চান না।


0

আমি মনে করি না একটি সহজ মার্জিত উপায় আছে ... যদিও আপনি কেবল নিজের মাউন্টপয়েন্টটি পরিবর্তন করতে পারেন ...

mkdir /tank
zfs set mountpoint=/tank/mydata <possibly renamed tank set>

অথবা সম্ভবত ট্যাঙ্কটির নাম পরিবর্তন করুন এবং তারপরে আপনার যেখানে প্রয়োজন সেখানে এটি মাউন্ট করুন ...

হয় যেটি, বা সঠিক জায়গায় একটি ফাইল সিস্টেম তৈরি করুন এবং সিপি, এমভি, বা জেডএফএস প্রেরণ / গ্রহণ করুন ...

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