কেন / ভার / রান স্থানান্তরিত / চালানো হয়েছে?


66

উবুন্টু ১১.১০ এর প্রযুক্তিগত ওভারভিউ থেকে ওয়ানিরিক :

উবুন্টু 11.10 থেকে দূরে চলে আসেন করেছে /var/run, /var/lockএবং /dev/shmএখন ব্যবহার /run, /run/lockএবং /run/shmপরিবর্তে (যথাক্রমে)।

  • আমি আমার অ্যাপ্লিকেশনগুলিতে এই পাথগুলিকে হার্ডকোড করেছি, কেন এই পরিবর্তনটি ওয়ানিরিকে করা হয়েছে?
  • আমার অ্যাপ্লিকেশনগুলি পিছনের দিকে- এবং সামনের দিকে সামঞ্জস্যপূর্ণ করতে আমি কী করতে পারি? প্রথমে অস্তিত্বের জন্য যাচাই করা ছাড়া আর কি ভাল উপায় আছে /run, এবং তারপরে /var/run?

উত্তর:


58

উদ্দেশ্যটি হ'ল tmpfsফাইল সিস্টেমের সংখ্যা হ্রাস করা । ১১.০৪- tmpfsতে /var/lock, /var/runএবং এ পৃথক পৃথক ফাইল সিস্টেম রয়েছে /dev/shm। এই ডিরেক্টরিগুলি যদি সমস্ত একক পিতামহ পরিচালকের অধীনে হত তবে কেবলমাত্র একটি একক tmpfsপ্রয়োজন। এটি আরও রানটাইম স্থিতির ডেটাগুলির জন্য একটি সুস্পষ্ট অবস্থান সরবরাহ করে যা রিবুটগুলি ধরে রাখা উচিত নয়।

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

নিম্নলিখিত লিঙ্কগুলি যুক্তি ব্যাখ্যা করতে সাহায্য করবে:


36
  1. /run ক্ষণস্থায়ী রাষ্ট্র ফাইল সংরক্ষণের জন্য একটি নতুন ক্রস-ডিস্ট্রিবিউশন tmpfs অবস্থান — অর্থাৎ, রান-টাইম তথ্য সম্বলিত ফাইলগুলি যা বুট প্রক্রিয়াতে প্রারম্ভিক লেখার প্রয়োজন হতে পারে এবং না পারে এবং যার জন্য পুনরায় বুট সংরক্ষণের প্রয়োজন হয় না।

    মেকিং /runডিরেক্টরির প্রাপ্তিসাধ্য আমাদের একটি পদক্ষেপ বিন্দু যেখানে এটি সিস্টেমের যেমন কোনো ক্লাঙ্কি সমাধান নীচে উপস্থিত ছাড়াই, রুট ফাইল সিস্টেম শুধুমাত্র পাঠযোগ্য মাউন্ট সঙ্গে স্বাভাবিকভাবে ব্যবহার করা সম্ভব কাছে নিয়ে আসে aufs/unionfsপ্রতিস্থাপক।

    /run ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ডে বর্ণিত বেশ কয়েকটি বিদ্যমান অবস্থান প্রতিস্থাপন করে:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[বর্তমানে কেবলমাত্র দেবিয়ান এটি করার পরিকল্পনা করছে]
    • /tmp/run/tmp[;চ্ছিক; বর্তমানে কেবলমাত্র দেবিয়ান এটি সরবরাহ করার পরিকল্পনা করছে]
    • /run ক্ষণস্থায়ী ফাইলগুলির জন্য ব্যবহৃত হয়েছে এমন কিছু অন্যান্য স্থান প্রতিস্থাপন করে:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • under এর অধীনে লিখনযোগ্য ফাইল /etc/run/*

    (যাতে আপনি সম্ভবত এগুলি সরে যাওয়ার আশা করতে পারেন)।

    উত্স: ডিবিয়ান রিলিজ লক্ষ্যগুলি

  2. আমি আপনার সফ্টওয়্যারটিতে এমন একটি অংশ তৈরি করার পরামর্শ দেব যেখানে আপনি এই ডিরেক্টরিগুলি ভেরিয়েবলগুলিতে স্থাপন করেছেন, এই ভেরিয়েবলগুলি ব্যবহার করার জন্য আপনার কোডটি পরিবর্তন করুন এবং তারপরে ব্যবহৃত সিস্টেমের ভিত্তিতে ভেরিয়েবলগুলি পরিবর্তন করুন (তবে আমি বাজি ধরছি যে আপনি এটি ইতিমধ্যে জানতেন)।


1
লিখিত ফাইলগুলি এর অধীনে আপনি কী বোঝাতে চাইছেন /etc। এগুলি সবই কি অতীত পুনরায় বুট করতে হবে, তাই না? এটি কেবল জেনেরিক কনফ ফাইলগুলি।
ইভান ক্যারল

6
আচ্ছা বুঝলাম. অধীনে তিনটি ফাইল /etc, /etc/lvm/cache/ /etc/mtab /etc/network/run/ifstateএবং শীঘ্রই /etc/adjtime। আমি মনে করি তাদের সাথে এটি শুরু করা খারাপ ছিল /etc
ইভান ক্যারল

5

আমি যা পড়েছি তা থেকে / রান কেন চালু হয়েছিল সে সম্পর্কে এটিই মূল ব্যাখ্যা ছিল। http://lwn.net/Articles/436012/


8
যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
স্টেফানো প্যালাজো

3

দ্রষ্টব্য: যেহেতু / চালুর পরিচিতি, ছোট কনফিগারেশনে সমস্যা হতে পারে। আমার উবুন্টু সার্ভারটি 256Mo র‌্যাম এবং / রানটি ডিফল্টভাবে 49Mo তে সেট করা আছে।
প্রারম্ভকালে, এটি পূর্ণতা না হওয়া পর্যন্ত ফাইল সিস্টেমটি পূরণ করে।
Fstab এ পরিবর্তন করা tempfs / রান আকারকে বাড়িয়ে তোলে না। জিজি-তে অন্য যে কোনও পদ্ধতিও আমি খুঁজে পাইনি।
আমি init স্ক্রিপ্টে যুক্ত করার সমাধানটি পেয়েছি: প্রারম্ভকালে প্রসারিত /etc/rc.localরেখাটি mount -t tmpfs tmpfs /run -o remount,size=85M(85 এম আমার কনফিডের জন্য।)


2

এই /runপথগুলির কোনও আপনার হার্ডকোড করা উচিত নয় !

  • ব্যবহার করুন /var/run, কারণ /runযদি প্রযোজ্য হয় তবে একটি সিমিলিংক স্থানে থাকবে
  • /var/lock উপরের মত একই
  • /dev/shmকখনও হার্ডকোড করবেন না , সর্বদা shm_openইত্যাদি ব্যবহার করুন (পিক্স এপিআই)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.