একটি ভার্চুয়াল ফাইল যা অন্যান্য ফাইলগুলির সংমিশ্রণ ধারণ করে


13

এর সাথে মেলে এমন কোনও ফাইল সিস্টেমের অবজেক্ট তৈরি করার উপায় কি:

mknod files p
cat file1 file2 ... fileN > files

তবে এটি এমনভাবে সন্ধান করা যেতে পারে, যেন এটি কোনও নিয়মিত ফাইল?

উত্তর:


18

লিনাক্স-ভিত্তিক অপারেটিং সিস্টেমগুলিতে, এটি নেটওয়ার্ক ব্লক ডিভাইস বা ডিভাইস ম্যাপার ডিভাইসগুলির সাহায্যে করা যায়। আপনার প্রাপ্ত ফাইলটি একটি ব্লক ডিভাইস।

সহ nbd:

ln -s /path/to/first-file file.0
...
ln -s /path/to/last-file file.19
nbd-server -C /dev/null -m 127.0.0.1:12345 file

sudo nbd-client localhost 12345 /dev/nbd0

(সংক্ষিপ্তকরণ হয় /dev/nbd0)।

ডিভাইস ম্যাপার সহ (ফাইলের আকারগুলি 512 এর একাধিক হতে হবে):

sudo losetup /dev/loop0 file1
sudo losetup /dev/loop1 file2
s0=$(sudo blockdev --getsize /dev/loop0)
s1=$(sudo blockdev --getsize /dev/loop1)
printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" |
  sudo dmsetup create mybundle

(সংক্ষিপ্তকরণ হয় /dev/mapper/mybundle)।


8

আজ একটি ফিউজ ড্রাইভার লিখেছেন, যদি কেউ ফিউজ সমাধানটিতে আগ্রহী হন (ডিভাইস ম্যাপার পাশাপাশি উপরের এনবিডি-সলিউশনটি নিয়মিত ফাইল নয় ব্লক ডিভাইসগুলি তৈরি করবে - যা ভেঙে যাবে, যদি আপনি ভিডিও সম্পাদনার মাধ্যমে ফলাফলের আউটপুট সরাসরি ব্যবহার করতে চান) সফ্টওয়্যার বা অন্যান্য সরঞ্জাম যা কোনও ব্লক ডিভাইস থেকে সরাসরি পড়ার জন্য প্রস্তুত নয়)

https://github.com/schlaile/concatfs


সোর্সকোড ব্যবহার করার জন্য খুব শিক্ষামূলক এবং সাধারণ! এটি তৈরি এবং ভাগ করে নেওয়ার জন্য ধন্যবাদ!
গ্রেজগোর্জ ওয়েয়ারজোইকিকি

3

আপনি প্রশ্নের প্রথম বাক্যে এটির উত্তর দিয়েছেন: হ্যাঁ, এটি করা যেতে পারে। তবে আপনাকে কাস্টম ফাইল সিস্টেম ড্রাইভার লিখতে হবে। যদি এটি কোনও ফাইল সিস্টেমের অবজেক্ট বলে মনে করা হয় তবে এটি কার্নেল দ্বারা কিছু স্তরের (যার মধ্যে FUSE অন্তর্ভুক্ত ) পরিচালনা করতে হবে । চালক মান ফাইল সিস্টেম syscalls API- এর জন্য ব্যাকএন্ড উপলব্ধ করার জন্য (হবে stat(), open()ইত্যাদি সচেষ্ট সহ)। আপনি এটি পুরোপুরি ব্যবহার করতে পারবেন না ইউজার স্পেসে (কমপক্ষে একঘেয়ে কার্নেলের সাহায্যে নয় - তবে একটি মাইক্রোকারেল দিয়ে আপনাকে এখনও একটি ফাইল সিস্টেম ড্রাইভার সরবরাহ করতে হবে, যদিও নিয়মিত ইউজারস্পেস প্রক্রিয়া হিসাবে চলমান)।


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

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