ডিরেক্টরিকে কিউইএমইউ / কেভিএম ভার্চুয়াল ডিস্ক চিত্রে রূপান্তর করুন


10

আমার ডেটা ভরা একটি ডিরেক্টরি রয়েছে /var/backups/disk1যাতে আমি ভার্চুয়াল ডিস্ক চিত্রে রূপান্তর করতে চাই যা আমি তখন কিউইএমইউ বা কেভিএম ব্যবহার করে বুট করতে সক্ষম হব (ডিরেক্টরিটিতে একটি ভার্চুয়াল মেশিনের জন্য ফাইল সিস্টেম রয়েছে, আরএসসিএন এর মাধ্যমে অনুলিপি করা হয়েছে)।

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

যাইহোক, আমি জানি যে আমি qemu-imgকোনও ব্লক ডিভাইসটিকে ভার্চুয়াল ডিস্কে রূপান্তর করতে পারি (উদাহরণস্বরূপ qemu-img convert -f /dev/sdc -O qcow2 disk.qcow2), সুতরাং যদি আমি কেবল ডিরেক্টরিটি /var/backups/disk1একটি ব্লক ডিভাইস হিসাবে উপস্থিত হতে পারি তবে তাত্ত্বিকভাবে আমার লক্ষ্যটি ব্যবহার করে আমার সক্ষম হতে হবে qemu-img। আমি এনবিডি বা লুপব্যাক ডিভাইসটি ব্লক ডিভাইস হিসাবে ডিরেক্টরিটি উন্মোচন করার সৃজনশীল উপায়গুলি সম্পর্কে ভেবে দেখেছি, তবে সফল হয়নি।

উত্তর:


17

প্রথমে প্রয়োজনীয় আকারের একটি কাঁচা চিত্র তৈরি করুন। আমি ধরে নিচ্ছি 10 জি যথেষ্ট হয়েছে। ব্যবহার চাইতে একটি সৃষ্টি বিক্ষিপ্ত ফাইল , যা স্থান সংরক্ষণ করে।

dd if=/dev/null of=example.img bs=1M seek=10240

এরপরে, এটিতে একটি ফাইল সিস্টেম তৈরি করুন।

mkfs.ext4 -F example.img

(নোট করুন যে ডিস্ক বিভাজনের বিপরীতে কোনও ফাইল চালনা করার -Fজন্য আপনার বিকল্পের প্রয়োজন আছে mkfs.ext4)

তারপরে, এটি মাউন্ট করুন।

mkdir /mnt/example
mount -t ext4 -o loop example.img /mnt/example

এখন আপনি আপনার ফাইলগুলি / mnt / উদাহরণে অনুলিপি করতে পারেন। এটি হয়ে গেলে, এটি আনমাউন্ট করুন এবং আপনি ভার্চুয়াল মেশিনে ড্রাইভ হিসাবে example.img ব্যবহার করতে পারেন। আপনি যদি চান তবে আপনি এটি কাঁচা চিত্র থেকে qem2-img ব্যবহার করে অন্য কোনও ফরম্যাটে qCO2e রূপান্তর করতে পারেন, তবে এটির প্রয়োজন নেই।


1
qemu-imgএবং fallocateএর চেয়ে কিছুটা বেশি সুবিধাজনক dd
সিওরো সান্তিলি :14 病毒 审查 六四 事件

: সর্বনিম্ন প্রয়োজনীয় আকার নিরূপণ করা কিভাবে unix.stackexchange.com/questions/353156/...
সিরো Santilli冠状病毒审查六四事件法轮功


4

virt-make-fslibguestfs qcow2উদাহরণ থেকে

https://serverfault.com/a/332114/163884 এটি উল্লেখ করেছে, তবে এখানে একটি সম্পূর্ণ উদাহরণ:

sudo apt-get install libguestfs-tools

# Workarounds for Ubuntu 18.04 bugs. See section below.
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*

mkdir sysroot
# Just a test file.
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=qcow2 --type=ext2 sysroot sysroot.ext2.qcow2 

sudoইনস্টলেশন এবং উবুন্টু বাগ কাজের ক্ষেত্রগুলি বাদে কীভাবে প্রয়োজনীয় নয় তা নোট করুন ।

আমি তখন যাচাই করেছিলাম যে কিউইএমইউ এটির সাথে পড়তে পারে:

qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...

আমি তখন কিউএমইউ লিনাক্সের মধ্যে চিত্রটি মাউন্ট করতে এবং ফাইলটি পড়তে সক্ষম হয়েছি।

virt-make-fs ext উদাহরণ

এই দুর্দান্ত সরঞ্জামটি কাঁচা এক্স ফাইল ফাইলগুলিও তৈরি করতে পারে, যেমন:

virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4

যা আমরা সরাসরি হোস্টের সাথে যাচাই করতে পারি:

mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile

চিত্রের আকার হ্রাস

এর সত্যই একটি ভাল বৈশিষ্ট্য virt-make-fsহ'ল এটি যদি আমরা চান তবে এটি স্বয়ংক্রিয়ভাবে চিত্রের আকার হ্রাস করার চেষ্টা করে:

অতিরিক্ত স্থান কমানোর জন্য ভার্ট-মেক-এফএস ডিফল্ট, তবে আপনি যদি চাইলে ফাইল সিস্টেমে স্থান ছেড়ে দিতে --size পতাকাটি ব্যবহার করতে পারেন।

তাই:

df -h

আমাকে জানান যে চিত্রটি 82% ভরাট:

/dev/loop17    1.5M  1.1M  244K  82% /home/ciro/test/guestfs/mnt

আমরা সহজেই এর সাথে সর্বনিম্নের উপরে কিছু অতিরিক্ত স্থান যুক্ত করতে পারি --size-=+:

virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2

ext4 জার্নাল ওভারহেড

ম্যানুয়ালটিতে আরও উল্লেখ করা হয়েছে:

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

এবং এটি দিয়ে যাচাই করা আকর্ষণীয়:

du -bs *

যা উত্পাদন করে:

1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4

সুতরাং আমরা দেখতে পাচ্ছি যে ext4 উল্লেখযোগ্যভাবে বড় হয়েছে।

libguestfs উবুন্টু বাগ

এখন ডাউনসাইডের জন্য: বর্তমানে কোনও উবুন্টু রক্ষণাবেক্ষণকারী উপস্থিত নেই এবং গ্রন্থাগারটি সাধারণত উবুন্টুতে বগি।

sudoতাত্ত্বিকভাবে প্রয়োজনীয় নয়, তবে এটি উবুন্টু প্যাকেজিং বাগের কারণে প্রয়োজনীয় যদি না হয় আমরা যদি কাজ না করি তবে: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- হলে virt-মেক-FS-ছাড়া-উবুন্টু / 1046829 # 1046829

libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
  export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again.  For further information, read:
  http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.
    libguestfs: error: /usr/bin/supermin exited with error status 1.

এরপরে, আমাদের কর্মসীমা ছাড়াই 18.04 (তবে 16.04 নয়) এর সাথে ব্যর্থ হয়: https://bugzilla.redhat.com/show_bug.cgi?id=1591617

libguestfs: error: tar_in: write error on directory: /: 

ইতিমধ্যে প্রবাহের স্থির করা একটি বাগের কারণে।

উবুন্টু 18.04 তে পরীক্ষা করা হয়েছে, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3।


1

ফেডোরায় 23 তে মাইকেলস কৌশলটি ব্যবহার করে:

# dnf install -y libguestfs-tools-c
# virt-make-fs --format=raw --label mylabel the_directory myfs.raw

এটি ext2 ফাইল সিস্টেম তৈরি করে যে আপনি কিছু ডিরেক্টরিতে মাউন্ট করতে পারেন:

# mount file.fs /mnt 

এখন / mnt এ আপনার সমস্ত ফাইল রয়েছে


তাহলে file.fsএকটি ফাইল, করা উচিত নয় mountকমান্ড হতে: mount -o loop file.fs /mnt?
ক্যাস্পারড

0

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


এটি কাজ করা উচিত এবং এটি আমার বর্তমান কৌশলের অনুরূপ, যা একটি ভিএম তৈরি করতে এবং ডেটাটি রিসাইঙ্ক করা It যদিও আরও দ্রুত এবং ক্লিনার সমাধান পাওয়া গেলে এটি দুর্দান্ত হবে were একটি নতুন মেশিনে ডেটা অনুলিপি করা খুব অগোছালো হয়ে যায় কারণ আপনাকে নিশ্চিত করতে হবে যে আপনি কিছু ফাইল নকল করবেন না, যেমন fstab এবং বেশিরভাগ জিনিস / বুটে
ক্রিস

"fstab এবং / বুটে থাকা বেশিরভাগ জিনিসগুলির মতো অনুলিপি করা উচিত নয় এমন কিছু ফাইল বাদ দিন" যখন ভিএম টার্গেট অতিরিক্ত ভলিউম হয় তখন সমস্যাটি এতটা নাও হতে পারে।
ব্যবহারকারী 48838

0

আমি সিরো স্যান্টিলির উত্তর পছন্দ করি (এবং ব্যবহার করি) তবে এখানে guestfishশেল দিয়ে কাজ করে এমন কিছু রয়েছে :

# assumes extant directory "rootfs"
tar -cf rootfs.tar -C rootfs .
guestfish <<EOF
disk-create rootfs.qcow2 qcow2 "$((2 * $(stat -c%s rootfs.tar)))"
add-drive rootfs.qcow2
run
part-disk /dev/sda gpt
mkfs ext4 /dev/sda
mount /dev/sda /
tar-in rootfs.tar /
umount-all
exit
EOF
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.