লিনাক্স সার্ভারের জায়গার বাইরে


31

পরপর দুটি সাক্ষাত্কারে আমাকে এই প্রশ্নটি জিজ্ঞাসা করা হয়েছে, তবে বিভিন্ন সিস্টেম প্রশাসকের সাথে কিছু গবেষণা ও পরীক্ষার পরেও আমি এর উত্তম উত্তর পাইনি। আমি ভাবছি যে এখানে কেউ আমাকে সাহায্য করতে পারে কিনা।

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


3
আপনার আরও ভাল সিস্টেম প্রশাসকদের সাথে কথা বলা দরকার। এটি তুচ্ছ জিনিস।
দোলা

2
তুচ্ছ, কিন্তু অবস্থা এবং প্রশ্ন প্রায়ই যথেষ্ট আসে আপ ...
ewwhite

ওপি কি এটি মেনে নিতে সক্ষম হবে?
ew white

5
তুচ্ছ বা না, যে কেউ * নিক্স অনর্গলভাবে কথা বলতে পারে না (যেমন একটি প্রাথমিকভাবে উইন্ডোজ অ্যাডমিন) এটি শেখার জন্য ভাল জিনিস।
জন গার্ডেনিয়ার্স

উত্তর:


56

এটি একটি সাধারণ সাক্ষাত্কারের প্রশ্ন এবং এমন একটি পরিস্থিতি যা বিভিন্ন উত্পাদন পরিবেশে আসে।

ফাইলের ডিরেক্টরি এন্ট্রি মুছে ফেলা হয়েছে, তবে লগিং প্রক্রিয়া এখনও চলছে। সমস্ত ফাইল হ্যান্ডলগুলি বন্ধ না করা (উদাহরণস্বরূপ, প্রক্রিয়াটি মারা গেছে) এবং সমস্ত ডিরেক্টরি এন্ট্রি অপসারণ না করা পর্যন্ত অপারেটিং সিস্টেমের মাধ্যমে স্থানটি পুনরুদ্ধার করা হবে না। ফাইলটিতে লেখার প্রক্রিয়াটি সন্ধান করতে আপনার lsofকমান্ডটি ব্যবহার করতে হবে ।

প্রশ্নের অন্য অংশটি মাঝে মাঝে হতে পারে "প্রক্রিয়াটি না মেরে আপনি যে ফাইলটি লিখেছেন তা কীভাবে সাফ করবেন?" আদর্শভাবে, আপনি ফাইলটি মুছার: > /var/log/logfile পরিবর্তে লগ ফাইলটিকে "শূন্য" বা "ছাঁটাই" করতে চান ।



1
কিছুটা প্রসারিত করা: ডিস্কের কোনও ফাইলে সমস্ত রেফারেন্স অদৃশ্য হওয়া অবধি সেই স্থানটি অন্য কোনও কিছুর দ্বারা ব্যবহার করা যায় না। এর মধ্যে ফাইল হ্যান্ডলগুলি অন্তর্ভুক্ত রয়েছে। এটি এই কৌশলটিকে কাজ করতে দেয়: কৌশলটিকেও সার্ভারফল্ট.কোশনস 45237 link
জেফ ফেরল্যান্ড

1
যদি আপনি no-clobberসেট করে থাকেন তবে চেষ্টা করুন:>| /var/log/logfile
রেখেছেন তবে বেলমিন ফার্নান্দেজ

2
আমি প্রতিটি সাক্ষাত্কারে এই প্রশ্নের একটি বৈকল্পিক জিজ্ঞাসা করি: "আপনি ডিস্কের পূর্ণ বার্তা পেয়ে যাচ্ছেন your dfআপনার স্থানের বাইরে duবলে, আপনি সবেই কোনও ব্যবহার করছেন What's এটির কারণ কী, এবং দুটি সরঞ্জাম কেন একমত হয় না?"
voretaq7

যদি > /var/log/fileডিস্কে স্থানের পরেও 100% থাকে তবে কী করবেন? লগ ফাইলটি খালি মনে হচ্ছে ... তবে এই লগ ফাইলটিতে লেখা প্রোগ্রামটি পুনরায় চালু করার পরেই স্থানটি পুনরুদ্ধার করা হবে। প্রোগ্রামটি আরম্ভ না করে ডিস্কের জায়গা পুনরুদ্ধার করার কোনও উপায় আছে কি?
আলেমানি

14

ফাইলটির আরও একটি লিঙ্ক রয়েছে (হয় হার্ড লিঙ্ক বা ফাইলের হ্যান্ডেলটি খুলুন)। একটি ফাইল মোছা কেবল ডিরেক্টরি এন্ট্রি মুছে দেয়; ফাইলের ডেটা এবং ইনোড এর সর্বশেষ রেফারেন্স অপসারণ না হওয়া অবধি স্থির থাকে।

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

লিনাক্সের অধীনে, আপনি এই মুছে ফেলা ফাইলগুলি সুবিধার্থে অ্যাক্সেস করতে পারবেন /proc/<pid>/fd/<filenumber>


8

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


2

সুস্পষ্ট হার্ড লিঙ্ক / ওপেন ফাইলের উত্তর ছাড়াও একটি বিকল্প উত্তর: সেই ফাইলটি একটি (খুব) স্পার্স ফাইল যেমন /var/log/lastlogRHEL- এ আসলে এত বেশি জায়গা নেওয়া হয়নি। এটি মোছার ফলে খুব অল্প প্রভাব পড়েছিল, সুতরাং আপনার পরবর্তী বড় ফাইলটি দেখার প্রয়োজন।


1

ফাইলটি লেখার প্রক্রিয়াটি যদি রুট হয় তবে এটি সুপার-রক্ষিত ফাইলের জায়গাতে লিখবে। কোনও ব্যবহারকারী টাস্ক ডিস্ক পূরণ করে এমন ক্ষেত্রে সিস্টেমটি চালু রাখার জন্য ফাইল সিস্টেমে এই স্থান রয়েছে। এই স্থানটি (ডিফল্ট 5% প্রতি imho) অনেক সরঞ্জামের মধ্যে অদৃশ্য।

lsof আপনাকে দেখাতে পারে, কোন প্রক্রিয়াটি ফাইলটি লক করে রেখেছে, এরগো এতে লিখে চলেছে।


1
টিউন 2 এফ ব্যবহার করে আপনি এই রিজার্ভ শতাংশটি সামঞ্জস্য করতে পারেন। আপনি ডিস্কের স্থান খালি করার সময় সার্ভারটি চালিয়ে যাওয়ার অনুমতি দেওয়ার এটি একটি দ্রুত উপায় হতে পারে।
sjbotha

1

কোনও প্রক্রিয়া দ্বারা ফাইলটি খোলা থাকা ছাড়াও, আপনার কাছে একটি ফাইল সিস্টেম থাকে যা স্ন্যাপশটগুলিকে পছন্দ করে btrfsবা সমর্থন করেZFS

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

আরো দেখুন:

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

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