আমি কীভাবে লিনাক্স র‌্যামডিস্কসের পরিমাণ এবং আকার পরিবর্তন করতে পারি (/ dev / ram0 - / dev / ram15)?


27

লিনাক্স ব্যবহার করে, আমি বুট করার সময় আমার কাছে স্বয়ংক্রিয়ভাবে 16 এমবি র‌্যামডিস্ক থাকে তবে যাইহোক, কিছু সফ্টওয়্যার পরীক্ষার জন্য আমি একটি বড় বড় র‌্যামডিস্ক তৈরি করতে চাই।

আমি দেখতে পেয়েছি যে আমি সিস্টেমে ইতিমধ্যে ramdisk_sizeর‌্যামডিস্কগুলির আকারটি কার্নেল বুট প্যারামিটারের সাথে সামঞ্জস্য করতে পারি তবে এটি সমস্ত 16 টি র‌্যামডিস্ককে (/ dev / ram0 - / dev / ram15) নির্দিষ্ট করে দেয় makes সুতরাং আমি যদি 1 জিবি র‌্যামডিস্ক তৈরি করতে চাই তবে আমার 16 গিগাবাইট মেমরির প্রয়োজন হবে।

মূলত, আমি একটি 10 ​​জিবি র‌্যামডিস্ক তৈরি করতে চাই যা / dev / ram0 হবে be আমি কীভাবে এটি করতে যাব? আমি ধরে নিলাম একটি কার্নেল বুট প্যারামিটার আছে, তবে আমি এটি সন্ধান করি না।

উত্তর:


18

কার্নেল সময় সংকলন

আপনার .configফাইলটিতে দুটি কার্নেল কনফিগারেশন বিকল্প রয়েছে যা আপনি সেট করতে পারেন :

CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760

এটি আমার কার্নেলটি বুট করার সময় 10 জি-তে একটি র‌্যামডিস্ক তৈরি করতে কনফিগার করেছে।

নোট:

  • CONFIG_BLK_DEV_RAM_SIZE কেবিতে রয়েছে।
  • আপনার কম্পিউটারে আসলে র‌্যাম রয়েছে তার চেয়ে বেশি মেমরি নির্দিষ্ট করবেন না।
  • ইন menuconfigডিভাইস Drivers-> ব্লক ডিভাইস নীচে তাকান।

বুট করার সময়

আপনি কার্নেল বুট প্যারামিটারের সাহায্যে র‌্যাম ডিস্কগুলির আকার নির্দিষ্ট করতে পারেন ramdisk_size। উদাহরণ স্বরূপ:

kernel /vmlinuz-2.6.32.24 ro root=LABEL=/ rhgb quiet ramdisk_size=10485760

এখন আমি আমার মেশিনটি বুট করতে এবং এটিতে একটি ফাইল সিস্টেম তৈরি করতে পারি, এটি মাউন্ট করতে এবং ব্লক ডিভাইসের মতো একেবারে ব্যবহার করতে পারি।

# mkfs.xfs /dev/ram0
# mount /dev/ram0 /mnt/ramdisk

সূত্র:

  1. http://www.vanemery.com/Linux/Ramdisk/ramdisk.html [মৃত]
  2. https://www.kernel.org/doc/Documentation/blockdev/ramdisk.txt

16

পরিবর্তে আপনার জন্য tmpfs ব্যবহার করা উচিত ।

mount -t tmpfs -o size=10g none /mnt/point

আমি কি একটি tmpfs এ একটি ফাইল সিস্টেম তৈরি করতে পারি? আমার একটি ব্লক ডিভাইস দরকার যা স্মৃতিতে থাকে যা আমি একটি ফাইল সিস্টেম তৈরি করতে পারি। আমি কি এটি একটি টেম্পফেসে করতে পারি?
কেভিন এস

tmpfs হয় একটি ফাইল সিস্টেম। এটি কেবল স্মৃতিতে থাকার জন্য ঘটে।
ইগনাসিও ওয়াজকেজ-আব্রামগুলি

3
আমি উত্তরটির প্রশংসা করি এবং সাধারণত একটি tmpfs কৌশলটি করতে পারে তবে আমি যে স্মৃতিতে লিখছি তার অংশে একটি xfs ফাইল সিস্টেম তৈরি করা দরকার।
কেভিন এস

Tmpfs এর সমস্যাটি হ'ল এটি অদলবদল করে। যদি আপনি অদলবদল ব্যবহার শুরু করেন তবে আপনি খাঁটি র‍্যামে থাকার সুবিধা হারাচ্ছেন। এছাড়াও, কিছু লোক ক্রিপ্টো অ্যাপ্লিকেশনগুলির জন্য ব্যাকড নয় এমন অঞ্চল থাকতে পছন্দ করে।
drudru

সম্পর্কিত উত্তর এবং বিশদটি এখানে রয়েছে: unix.stackexchange.com/questions/66329/…
জোকুল

7

কার্নেল পরামিতিগুলির সাথে গোলযোগ না করে বুটের পরে একটি বড় র্যাম ডিস্ক তৈরি করতে To Tmpfs ব্যবহার করুন, একটি ফাইল তৈরি করুন, এটি লুপের মাধ্যমে মাউন্ট করুন এবং একটি ফাইল সিস্টেমের মাধ্যমে মাউন্ট করুন:

mount -t tmpfs -o size=200M tmpfs temp/
cd temp/
dd if=/dev/zero of=disk.img bs=1M count=199
losetup /dev/loop0 disk.img
mkfs.ext4 /dev/loop0
cd ..
mount /dev/loop0 temp2/

সম্ভবত বেশ কয়েকটি পারফরম্যান্স পেনাল্টি একাধিক বিভিন্ন স্তর দিয়ে যাচ্ছে ... তবে কমপক্ষে এটি কার্যকর হয়।


6

আরেকটি বিকল্প হ'ল লুপ ডিভাইসগুলি (পূর্বে উল্লিখিত হিসাবে মাউন্টটির লুবপ্যাক বৈশিষ্ট্যের বিপরীতে):

dd if=dev/zero of=myfs.img bs=1M count=1024
losetup /dev/loop0 myfs.img
mkfs.xfs /dev/loop0

এখন / ডেভ / লুপটি একটি বৈধ ব্লক ডিভাইস যা আপনার অ্যাপ্লিকেশনটি কোনও ফিজিকাল ডিভাইস বা রামডিস্কের মতো কাজ করবে, ব্যাক ফাইল ব্যতীত। আপনি কোথাও মাউন্ট করতে পারেন বা আপনার অ্যাপ্লিকেশনটি ডিভাইস নোডের উপরে কাজ করেছে, যা মানক ব্লক আইকটিএলএস প্রয়োগ করে। আপনার সিস্টেমে র‌্যাম সংরক্ষণ করে এবং টেস্টকেসগুলি ইত্যাদির জন্য রাখার জন্য দরকারী etc.

(আপনি এমনকি myfs.img এফডিস্ক করতে পারেন, এটিতে পার্টিশন তৈরি করতে পারেন এবং চিত্রের প্রতিটি পার্টিশনগুলিতে প্রতি / dev / লুপএক্স নির্দেশ করতে লসআপ দিয়ে - অফসেট এবং --sizelimit ব্যবহার করতে পারেন, সুতরাং লুপ 0, লুপ 1 এসডিসি 1, এসডিসি 2 ইত্যাদির মতো হয়ে যায়) )


এটির জন্য কার্নেলটি পুনরায় সংশোধন করার প্রয়োজন হবে না এমনভাবে +1
মি-ধনী

3

পরিবর্তে আপনি একটি লুপ ফাইল ব্যবহার করতে পারেন। আপনি যে আকারটি চান তা কেবল একটি লুপ ফাইল তৈরি করুন (আপনি যদি এটি টিএমপিএস র‌্যামডিস্কে রাখতে চান তবে ভাল), এবং তারপরে লুপ ফাইলটি ফর্ম্যাট করে মাউন্ট করুন।

dd if=/dev/zero of=myfile bs=1G count=10
mkfs.xfs -d file myfile
mount -t xfs -o loop myfile mymntpoint

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

2
লুপব্যাক ডিভাইসগুলি হ'ল ব্লক ডিভাইস, সুতরাং কীভাবে সম্ভব তা আমি নিশ্চিত নই?
pjc50

2

একটি রামড্রাইভের বস্তুটি গতি। Tmpfs ড্রাইভ নয়। লুপ ডিভাইসগুলি ড্রাইভ নয়, তবে আপনি কোনও লুপ ডিভাইসে একটি ড্রাইভ চিত্র রাখতে পারেন। রাম ডিস্কগুলি "ড্রাইভ" এবং খুব দ্রুত ড্রাইভগুলি হয়। চালানোর চেষ্টা করুন:

hdparm -t /dev/sda 

এবং তারপর:

hdparm -t /dev/ram0

তুমি কী বোঝাতে চাইবে! তবে এইচডিপার্ম কখনও কখনও রাম ড্রাইভটি ধ্বংস করে দেয়। সুতরাং, আপনি এটি আবার করতে হবে।

কখনও কখনও কোনও / dev / ram ডিভাইস নেই। একটি তৈরি করতে:

mknod -m 0777 /dev/ram0 b 1 0 

তবে এর কোনও আকার হবে না। এটি আকার দিতে:

dd if=/dev/zero of=/dev/ram0

এবং ড্রাইভ পূর্ণ হলে এটি থামবে। সর্বাধিক মাপ কার্নেল কনফিগ parm দ্বারা নির্ধারিত হয়: CONFIG_BLK_DEV_RAM_SIZE

তারপরে, কেবল এটি ফর্ম্যাট করুন, অর্থাৎ

mke2fs /dev/ram0

এবং এটি মাউন্ট করুন:

mount /dev/ram0 /mnt/ramdrive

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


1

বাতিঘর 64 এ (স্ল্যাকওয়ারের ভিত্তিতে পুতুল লিনাক্স) আমি এটি করেছি;

mke2fs /dev/ram1 4096000 # nearly 4G ramdisk, choose the size of ramdisk less than actual ram!
mount /dev/ram1 /mnt/dvd # dvd on my laptop is unused choose your device from /mnt/

আপনি একটি র‌্যামডিস্ক একটি ডিরেক্টরি হিসাবে মাউন্ট করেছেন /mnt/dvdযেখানে আপনি র‌্যাম ব্যতীত এইচডি ডিরেক্টরিতে যাবেন ঠিক তেমন কিছুই করতে পেস্ট সংরক্ষণের কপি করতে পারবেন। শাটডাউন করার আগে আপনার ফাইলগুলি এইচডি তে সংরক্ষণ করতে ভুলবেন না।

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