ব্লক ডিভাইস হিসাবে আমি কীভাবে একটি কম্পিউটার থেকে অন্য কম্পিউটারে একটি ব্লক ডিভাইস মাউন্ট করতে পারি?


40

ডিভিডি বা সিডিআরওমের মতো কোনও ব্লক ডিভাইস রফতানি করা এবং এটি এমনভাবে তৈরি করা সম্ভব যে এটি অন্য কোনও কম্পিউটারে একটি ব্লক ডিভাইস হিসাবে মাউন্ট করার যোগ্য?

দ্রষ্টব্য: আমি এনএফএস বা সাম্বা ব্যবহার করে এটি করতে আগ্রহী নই, আমি আসলে অপ্টিকাল ড্রাইভকে একটি দূরবর্তী কম্পিউটারে অপটিকাল ড্রাইভ হিসাবে প্রদর্শিত করতে চাই।

উত্তর:


33

আমি মনে করি আপনি নেটওয়ার্ক ব্লক ডিভাইস (এনবিডি) ব্যবহার করে যা করতে চান তা অর্জন করতে সক্ষম হতে পারেন। বিষয়টির উইকিপিডিয়া পৃষ্ঠাটি দেখলে সেখানে একটি সরঞ্জামের উল্লেখ রয়েছে nbd। এটি একটি ক্লায়েন্ট এবং সার্ভার উপাদান সমন্বিত।

উদাহরণ

এই পরিস্থিতিতে আমি আমার ফেডোরা 19 ল্যাপটপে (সার্ভার) একটি সিডিআরএম সেট আপ করছি এবং আমি এটি একটি উবুন্টু 12.10 সিস্টেম (ক্লায়েন্ট) এর সাথে ভাগ করছি।

ইনস্টল করার
$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server

$ sudo apt-get install nbd-server nbd-client
একটি সিডি ভাগ করে নেওয়া

এখন সার্ভারে ফিরে আসুন (ফেডোড্রা 19) আমি এর প্যাকেজ ম্যানেজার YUM ব্যবহার করে অনুরূপ একটি কাজ করি। একবার সম্পূর্ণ হয়ে গেলে আমি একটি সিডি পপ করি এবং একটি ব্লক ডিভাইস হিসাবে ভাগ করে নেওয়ার জন্য এই আদেশটি চালিত করি:

$ sudo nbd-server 2000 /dev/sr0

** (process:29516): WARNING **: Specifying an export on the command line is deprecated.

** (process:29516): WARNING **: Please use a configuration file instead.
$

এটি চলছে কিনা তা দেখার জন্য একটি দ্রুত চেক:

$ ps -eaf | grep nbd
root     29517     1  0 12:02 ?        00:00:00 nbd-server 2000 /dev/sr0
root     29519 29071  0 12:02 pts/6    00:00:00 grep --color=auto nbd
সিডি মাউন্ট হচ্ছে

এখন আবার উবুন্টু ক্লায়েন্টের মতো আমাদের nbd-serverব্যবহারের সাথে সংযোগ স্থাপন করা দরকার nbd-clientদ্রষ্টব্য: এই উদাহরণটিতে এনবিডি-সার্ভারের নাম গ্রিনেগস।

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

(কিছু সিস্টেমে - যেমন ফেডোরা - modprobe nbdপ্রথমে একটি করতে হবে ))

আমরা নিশ্চিত করতে পারি যে উবুন্টু সিস্টেমে এখন একটি ব্লক ডিভাইস ব্যবহার করে রয়েছে lsblk:

$ sudo lsblk -l
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 465.8G  0 disk 
sda1                   8:1    0   243M  0 part /boot
sda2                   8:2    0     1K  0 part 
sda5                   8:5    0 465.5G  0 part 
ubuntu-root (dm-0)   252:0    0 461.7G  0 lvm  /
ubuntu-swap_1 (dm-1) 252:1    0   3.8G  0 lvm  [SWAP]
sr0                   11:0    1 654.8M  0 rom  
nbd0                  43:0    0   643M  1 disk 
nbd0p1                43:1    0   643M  1 part 

এবং এখন আমরা এটি মাউন্ট:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
এটা কি কাজ করেছিল?

সাসপেন্স আমাকে মেরে ফেলছে, এবং আমাদের কাছে লিফটওফ রয়েছে:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

সেন্টোসের একটি লাইভসিডিডির সামগ্রী রয়েছে যা আমি ফেডোরা 19 ল্যাপটপে রেখেছি এবং এটি উবুন্টুতে নেটওয়ার্কের একটি ব্লক ডিভাইস হিসাবে মাউন্ট করতে সক্ষম হয়েছি।


আমি এটি পেয়েছি: "সতর্কতা কমান্ড লাইনে একটি রফতানি উল্লেখ করা হ্রাস করা হয়েছে Please পরিবর্তে একটি কনফিগারেশন ফাইল ব্যবহার করুন"। সংস্করণ: ৩.৩
গেটলি

@ গুয়েটলি - প্রতিক্রিয়ার জন্য ধন্যবাদ এ কী ডিস্ট্রো ছিল?
slm

@ সিম ওপেনসুএস 13.1
গেটল্লি

দ্রষ্টব্য: greeneggsসার্ভারের হোস্টের নাম।
ডিভাইস

1
নোট করুন যে পুরাতন স্টাইলের প্রোটোকল (অর্থাত্ প্রতিটি ডিভাইসের জন্য একটি পোর্ট ব্যবহার করা) বেশ কয়েকটি সংস্করণের জন্য অবচিত হিসাবে চিহ্নিত হয়েছে এবং এনবিডি ৩.১০ এ ফেলে দেওয়া হয়েছে
maxschlepzig

20

এর একটি বিকল্প nbd(যদি আপনি আগ্রহী হন) হ'ল আইএসসিএসআই। tgtdকোনও /devডিভাইস নির্দিষ্ট আইএসসিএসআই আইকিউএন এর ব্যাকিং স্টোরেজ হিসাবে কনফিগার করা যেতে পারে ।

আপনি যদি কোনও আরএইচইএল সিস্টেমে থাকেন তবে আপনাকে কেবল ইনস্টল করা scsi-target-utilsএবং tgtdউত্স সিস্টেমটি কনফিগার / স্টার্ট করা দরকার। কনফিগারেশন tgtdজড়িত হতে পারে তবে রেড হ্যাট বিভিন্ন পরিস্থিতিতে বিভিন্ন ধরণের উদাহরণ দেয়।

উদাহরণ স্বরূপ:

<target iqn.2008-09.com.example:server.target4>
    direct-store /dev/sdb      # Becomes LUN 1
    direct-store /dev/sdc      # Becomes LUN 2
    direct-store /dev/sdd      # Becomes LUN 3
    write-cache off
    vendor_id MyCompany Inc.
</target>

এটি ফেডোরা / আরএইচইএল শুরু করার জন্য:

# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target

আপনি iscsi-initiator-utilsক্লায়েন্ট সিস্টেমে ইনস্টল করবেন এবং iscsiadmলক্ষ্যগুলি প্রেরণের জন্য গণনা করা লক্ষ্যগুলি "লগ ইন" করতে ব্যবহার করবেন। উদাহরণ স্বরূপ:

# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>

এরপরে আইএসসিএসআই লুনগুলি নিয়মিত ব্লক ডিভাইস হিসাবে সিস্টেমে উপস্থিত হবে। আরএইচইএলে, আপনি কোনও নির্দিষ্ট ডিভাইসটি যে পরিবহণে চলেছে তা যাচাই করতে পারেন আপনি ls -l /dev/disk/by-path | grep iscsiকী স্টোরেজ আইএসসিএসআইতে এসেছেন তা দেখতে কেবল একটি করতে পারেন। পথটি উপরে আপনি লগ ইন করা লক্ষ্যটির আইকিউএন তালিকাভুক্ত করবে।

যখন ইস্কি ডিভাইসটির আর প্রয়োজন হয় না তখন কেউ এটির মাধ্যমে এটি সরিয়ে ফেলতে পারে:

# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>

2
: আপনার খুব এই এইউ প্রশ্ন আপনার একটি যোগ করতে পারেন চান, এটা কি আমার অনুরোধ জানানো আপ এই এক লিখতে এর askubuntu.com/questions/433231/...
SLM

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

1
জোয়েল আপনি সেরা ... উবুন্টু সিস্টেম 8-) না
slm

1
এনবিডির চেয়ে সেটআপ করা আসলে সহজ ছিল। বর্তমান এনবিডি-র সমস্যাটি হ'ল গুগলের মাধ্যমে আপনি যে উদাহরণগুলি / দস্তাবেজগুলি সন্ধান করেন সেগুলির বেশিরভাগগুলি পুরানো স্টাইলের কনফিগারেশন ব্যবহার করে, যেখানে বর্তমান সংস্করণগুলি এর জন্য সমর্থন সরিয়ে ফেলে। এছাড়াও, সংস্করণ <3.10 এ কেবল পঠনযোগ্য বাগ থাকতে পারে
ম্যাক্সচলেপজিগ

9

আপনি স্পষ্টতই SAN সমাধান পছন্দ করেন। ইতিমধ্যে উল্লিখিত আইএসসিএসআই এবং এনবিডি পাশাপাশি, আপনি এওই (ইথারনেট ওভার এটিএ )ও পাবেন approach

এটি করা খুব সহজ:

পরিবেশন পক্ষের আপনার প্রয়োজন

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

ক্লায়েন্ট পক্ষের

modprobe aoe
aoe-discover
aoe-stat
e0.0      1000.204GB       eth0 1024  up

আপনার ডিভাইসগুলি ভিতরে আছে

ls -l /dev/etherd/
c-w--w----  1 root disk 152, 3 Mar 12 22:47 discover
brw-rw----  1 root disk 152, 0 Mar 12 22:47 e0.0
brw-rw----  1 root disk 152, 1 Mar 12 22:47 e0.0p1
cr--r-----  1 root disk 152, 2 Mar 12 22:47 err
c-w--w----  1 root disk 152, 6 Mar 12 22:47 flush
c-w--w----  1 root disk 152, 4 Mar 12 22:47 interfaces
c-w--w----  1 root disk 152, 5 Mar 12 22:47 revalidate

কোথায় e0.0আপনার /dev/sdcএবং e0.0.p1হল/dev/sdc1

dmesg সার্ভারে:

[221384.454447] aoe: AoE v85 initialised.

dmesg ক্লায়েন্ট উপর আউটপুট:

[ 1923.225832] aoe: AoE v85 initialised.
[ 1923.226379] aoe: e0.0: setting 1024 byte data frames
[ 1923.226910] aoe: 38607725d8b1 e0.0 v4014 has 1953525168 sectors
[ 1923.653820]  etherd/e0.0: p1

বেশ সহজ.

অতিরিক্ত নোট

  • vbladedvbladeফেডোরা এবং উবুন্টুতে প্যাকেজের অংশ , সম্ভবত অন্যান্য ডিস্ট্রোজেও একইরকম।
  • aoe-discoverএবং ফেডোরা এবং উবুন্টুতেও aoe-statপ্যাকেজের অংশ aoetools
  • ডিভাইস fdiskএকটি ব্লক ডিভাইস হিসাবে প্রদর্শিত হয়, উদাহরণস্বরূপ /dev/etherd/e0.0,।
  • vbladeএফ 19 এবং এফ 20 স্টোরগুলির মধ্যে যে সংস্করণটি পাওয়া যায় তা বেশ তারিখের, এটির 14 version সংস্করণ AT এটিএওই প্রকল্পের পৃষ্ঠাতে 21 সংস্করণ উপলব্ধ। ফেডোরা 19 x86_64 এর জন্য এখানে একটি আপডেট হওয়া আরপিএম উপলব্ধ

ফেডোরা এবং উবুন্টু এই বি / ডাব্লু করার চেষ্টা করেছে, এটি কাজ করছে না।
slm

আমি পোস্ট করার আগে আমি সব কিছু যাচাই করে নিই। প্রশ্ন: আয়ে বোঝা হয়? আপনি সঠিক যুক্তি দিয়েছিলেন? রিসিভারে: আও কি প্রতিপক্ষকে খুঁজে পেয়েছেন? কি বলে dmesg?

আমি জানি আপনি করছেন, আমি বোঝাইচ্ছিলাম না যে এটি কেবল ভুল ছিল যে কিছু অতিরিক্ত পদক্ষেপ 8-) হতে পারে
স্ল্যাম

তবে কোনও অতিরিক্ত পদক্ষেপ নেই, এটি সত্যিই একটি সহজ কাজ।

1
ROTFL, এবং আপনি স্মার্টফোনও গণনা করেছেন?

1

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

এই সেটআপের জন্য আমাদের ব্লক ডিভাইসটি হোস্ট করার জন্য একটি ইউনিক্স অনুপ্রেরণামূলক সিস্টেম এবং সিস্টেমটি দেখার জন্য লুপ ব্যাক ব্লক ডিভাইস সহ একটি সিস্টেম দরকার। লিনাক্স উভয়ের জন্য কাজ করবে।

এর পরে সাম্বা বা ওয়েবড্যাভের মতো আমাদের বোবা নেটওয়ার্ক ফাইল সিস্টেমটি (এটি ডেটা স্টোরেজটির অপ্টিমাইজেশন করা উচিত নয়) দরকার। বিশেষত এনএফএস, এবং এএফএস কাজ করবে না।

রফতানি করা একটি ফোল্ডারে ব্লক ডিভাইসটি রাখুন। ( man mknodসহায়তা করবে)) প্রযোজ্য হলে ব্লক ডিভাইস চেকিং অক্ষম করুন। ক্লায়েন্ট কম্পিউটারে রফতানি হওয়া ফাইল সিস্টেমটি মাউন্ট করুন, আমদানিকৃত ফাইলটিকে স্টোর সমর্থন করে ব্যবহার করে একটি লুপ ডিভাইস তৈরি করুন এবং স্বাভাবিক হিসাবে মাউন্ট করুন। ( losetupবা mount -o loop)

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

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