আমি কি ওএস এক্স-এ র‌্যামডিস্কে / টিএমপি এবং / ভার / লগ লাগাতে পারি?


20

অ-সমালোচনামূলক লিনাক্স সিস্টেমগুলির জন্য, আমি প্রায়শই কিছু ডিস্ক রাইটিং সংরক্ষণ করার জন্য / tmp এবং / var / log এর মতো জিনিসগুলি tmpfs এ সরিয়ে রাখি। আমি এটি এক বছর বা তার জন্য করে চলেছি এবং যদি আমার কখনও পুনরায় বুট করার জন্য লগগুলি প্রয়োজন হয় তবে আমি কেবল / etc / fstab এ একটি লাইন মন্তব্য করি এবং তারপরে ডিবাগিং শুরু করি।

যাইহোক, আমি ওএস এক্সেও একই জিনিসটি করতে চাই OS আমি ওএস এক্সের জন্য র‌্যামডিস্ক তৈরির পোস্টগুলি দেখেছি, তবে আমি আরও স্থায়ী সমাধানের সন্ধান করছি যা প্রতিটি বুটে কাজ করে। আমি সর্বদা চাই / টিএমপি এবং / ভার / লগটি একটি র‌্যামডিস্কে মাউন্ট করে রেখেছি, যদি আমার vi থাকে তবে কিছুটা কমান্ড-লাইন সম্পাদনা করে তা বন্ধ করার ক্ষমতা দিয়ে।


এটি আমার কাছে অকাল অপ্টিমাইজেশনের মতো শোনাচ্ছে। আপনি কি সত্যিই এমন অনেক পরিস্থিতিতে চলে যাচ্ছেন যেখানে আপনি ডিস্ক আই / ও-আবদ্ধ তাই আপনার যখনই পারে ডিস্ক রাইটগুলি সংরক্ষণ করা দরকার?
স্পিফ

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

6
আরেকটি ন্যায়সঙ্গত ^ ডি ^ ডি ^ ডি ... ভুল ... যুক্তিযুক্তকরণ: আমার ম্যাকবুকের একটি এসএসডি রয়েছে এবং আমি যদি এলোমেলোভাবে লিখতে পারি যা আমি বেশি যত্ন করি না তবে পুরো সিস্টেমটি আরও ভাল। কীভাবে?
kbyrd

উত্তর:


6

ওএস এক্স-এ রামডিস্ক তৈরি করার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে Sorry দুঃখিত, এটি আপনার প্রশ্নের উত্তর দেয় না। আপনি এটি বুট চলমান এমন কিছু তৈরিতে এবং তারপরে / টিএমপি এবং / ভার / লগ মাউন্ট করতে ব্যবহার করতে পারেন।

#!/bin/bash  
ramfs_size_mb=1024  
mount_point=~/volatile  

ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))  
ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`  
newfs_hfs -v 'Volatile' ${ramdisk_dev}  
mkdir -p ${mount_point}  
mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}  

echo "remove with:"  
echo "umount ${mount_point}"  
echo "diskutil eject ${ramdisk_dev}"  

@ সালভাতোর থেকে http://pastie.textmate.org/pastes/1417478/text?key=igcxuzqqvlmlbavxooj2uw


আপনাকে অনেক ধন্যবাদ, এই স্ক্রিপ্টটি ওএস এক্সে র‌্যাম ডিস্ক তৈরি করতে খুব কার্যকর
hanxue

6

সম্পাদনা: আমি কেবল আমার নিজের উত্তরটি গ্রহণ করতে যাচ্ছি, কারণ এটি আমার জন্য সমস্যার একটি অংশ সমাধান করেছিল। যদি কেউ লিনাক্সে --bind এর মতো আরও কিছু পোস্ট করেন তবে আমি এই উত্তরটি গ্রহণ করব।

আরও উত্তর জাগ্রত করার প্রয়াসে, আমি আমার নিজের প্রশ্নের উত্তর আমি যা খুঁজে পেয়েছি তার সাথে দেওয়া শুরু করব।

পদক্ষেপ 1 হ'ল প্রতিবার বুটে মাউন্ট করা একটি র‌্যামডিস্ক। এটি করার জন্য, আমি বুশে স্ক্রিপ্টটি কল করতে একটি ব্যাশ স্ক্রিপ্ট এবং তারপরে একটি লঞ্চ করা এন্ট্রি তৈরি করি।

এটির মতো একটি বাশ স্ক্রিপ্ট লিখুন:

RD=ramdisk
if [ ! -e "/Volumes/$RD" ];  then
    diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount`
fi

mkdir -p /Volumes/$RD/private/tmp
mkdir -p /Volumes/$RD/private/var/log
mkdir -p /Volumes/$RD/private/var/tmp

তারপরে নীচের বিষয়বস্তুগুলির সাথে /Library/LaunchDaemons/com.my.ramdisk.plist নামক একটি ফাইল তৈরি করে এটি চালু করে বুটে ডাকতে হবে:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.my.ramdisk</string>
    <key>ProgramArguments</key>
    <array>
            <string>/usr/local/sbin/ramdisk.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

আমি যেখানে আটকে আছি তা হল / tmp, / var / লগ, এবং / var / tmp এ র্যামডিস্কের অভ্যন্তরে ডিরেক্টরিগুলি সিমলিংক বা মাউন্ট করার একটি উপায়। এই তিনটি ডিরেক্টরি সমস্তই আমার সিস্টেমে / বেসরকারী / টিএমপি, / প্রাইভেট / ভের / লগ এবং / প্রাইভেট / ভার / টেম্পে একত্রে যুক্ত থাকে। আমি যখন সিমলিংকগুলি / ভলিউম / রামডিস্ক / ... তে নির্দেশিত করেছি তখন সিস্টেমটি বুট হবে না। আমি এটি প্রত্যাশা করি কারণ বুট করার সময়, আমার com.my.ramdisk স্ক্রিপ্টটি র‌্যামডিস্কটি মাউন্ট করার পূর্বে কিছু / tmp এবং / var / লগ চায়। রুট মাউন্ট হওয়ার ঠিক পরে র্যামডিস্কটি মাউন্ট করার জন্য আমার একটি উপায় দরকার, অন্য কিছু চালানোর আগে।

দ্রষ্টব্য আপনি যদি অস্থায়ী স্থানে / var / লগ (কার্নেল, ডেমন এবং অন্যান্য সমালোচক ব্যবহারকারী-স্পেস লগগুলি) মাউন্ট করেন তবে আপনি পরবর্তী পুনরায় বুটটিতে এর সামগ্রীগুলি হারাবেন। এটি আপনার নির্ণয়ের ক্ষমতা বাধা দিতে পারে।


প্রতিক্রিয়াগুলি ভাল যে আপনি এটি করতে সক্ষম হচ্ছেন না, এবং আপনি যদি এটি করতে পারেন তবে এটি সময় ব্যয় করার পক্ষে একেবারেই উপযুক্ত হবে না। আপনি যদি চেষ্টা করতে সত্যিই বাঁকা থাকেন তবে বুটচক্রের
হাসান চপ

@ এনএনএসডি: লিঙ্কটির জন্য ধন্যবাদ। মানুষ, আমি সত্যিই চাই - বাঁধা মাউন্ট।
kbyrd

আপনি সম্ভবত কার্নেল এক্সটেনশন না লিখে লগারের আউটপুটটিকে পুনর্নির্দেশ করতে পারেন , তবে আমি বাস্তবে কখনও চেষ্টা করি নি।
হাসান চপ

2
আমি বুঝতে পারি এটি একটি পুরানো সমস্যা, এবং আমি সঠিক উত্তর পোস্ট করতে পারে বলে মনে করতে পারি না, তবে এটি অনুসন্ধানে বিশিষ্টভাবে উঠে আসে। প্রশ্নের উত্তর দেওয়ার জন্য, আপনি hdik -drivekey system-image=yes -nomount ram://262144একটি 128mb র‌্যাম-ডিস্ক তৈরি করতে ব্যবহার করতে চান , তারপরে newfs_hfsএটি ফর্ম্যাট করতে পারেন, তারপরে mount -o union,nobrowse,noatimeভলিউমটি ওভার করতে ব্যবহার করতে পারেন /tmp। এইভাবে, বিদ্যমান ফাইলগুলি /tmpছোঁয়াচে থাকলেও নতুন ফাইলগুলি আপনার রাম ডিস্কে যায়।
হারাভিক্ক

1
আমার কেবল অন্য মন্তব্যটি হ'ল আপনার এটি করা থেকে সাবধান হওয়া উচিত; যদিও tmpfsপ্রয়োজনে অদলবদল ব্যবহার করবে, একটি র‌্যাম ডিস্ক হ'ল না, তাই আপনি সক্রিয় র‌্যামের একটি অংশ হারাবেন, এর অর্থ আপনি এটিকে ছোট রাখতে চাইবেন, তবে কিছু কাজগুলিতে /tmpআরও মেমরির প্রয়োজন হতে পারে এবং ব্যর্থ হবে, তাই হোন আপনার বরাদ্দের চেয়ে আরও বেশি জায়গার প্রয়োজন হলে আপনি কী চালাবেন তা সাবধান করুন।
হারাভিক্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.