প্রশ্ন ফাইল অপসারণের পরে সঠিক ফ্রি স্পেস দেখাচ্ছে না linux মধ্যে df


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

আমি পেয়েছিলাম noatime যে কোনো পার্থক্য করে মাউন্ট করা পার্টিশন উপর পতাকা।


107
2018-02-08 07:36


উত্স


এটি কি একক পার্টিশন বা সমস্ত পার্টিশনগুলিতে ঘটছে? - Khaled
আচ্ছা, আমার প্রধান ডেটা পার্টিশনে এটি ঘটছে, যা আমার একমাত্র যত্ন, কারণ আমি এটিতে ফাইলগুলি শুধুমাত্র লিখতে / সরিয়ে ফেলি।
সমাধান, অথবা একটি লিঙ্ক সঙ্গে আমাকে আলোকিত করুন।
কি ফাইল সিস্টেম (গুলি)? ডিএফ সুপারব্লকের একটি স্ট্যাটাস করে, এটি হতে পারে যে আপনার ফাইল সিস্টেম Sb inode আপডেট করা হচ্ছে না। আপনি ক্যাশে flushing চেষ্টা করেছেন? - beans
Ext4 ব্যবহার করে। আপনি কিভাবে ক্যাশে ফ্লাশ করবেন?


উত্তর:


ফাইল নাম মুছে ফেলা আসলে ফাইল মুছে ফেলা হয় না। কিছু অন্যান্য প্রক্রিয়া ফাইল খোলা রাখা হয়, যার ফলে এটি মুছে ফেলা হবে না; ফাইল রিলিজ করার জন্য পুনরায় আরম্ভ করুন অথবা সেই প্রক্রিয়াটি খুন করুন।

ব্যবহার

lsof +L1

কোন প্রক্রিয়া একটি মুছে ফেলা (আনলিঙ্ক করা) ফাইল ব্যবহার করে তা খুঁজে বের করতে।


183
2018-02-08 07:48



যে ফাইলগুলি সরানো হয়েছে সেগুলি এক মাসের মধ্যে অ্যাক্সেস করা হয়নি এবং তাদের অ্যাক্সেস করা একমাত্র প্রক্রিয়া nginx হয়, তাই এটি সন্দেহজনক।
+1 টি। এছাড়াও, "lsof + L1" আপনাকে কোন প্রোগ্রামটি খোলা ফাইলগুলি ধরে রাখবে তা জানাবে। - pehrs
রুট চালানোর জন্য "lsof -n | grep ফাইল" হিসাবে, যে কোন কারণে যেগুলি খোলা রাখার জন্য প্রসেসগুলির কারণে ফাইলগুলি কতক্ষণ ধরে থাকতে পারে তাতে অবাক হবেন। যদি অন্য সব ব্যর্থ হয়, পুনরায় বুট করুন, আমি খারাপ পরামর্শ দিচ্ছি কিন্তু এটি অবশ্যই নিশ্চিত করবে যে ফাইলটিতে কোনও কিছুই থাকে না। প্রতি pehrs, lsof + L1 সম্ভবত যেতে ভাল উপায়। - ScottZ
তুমি শুধু আমাকে বাঁচিয়েছ! একটি 93G লগ ফাইল মুছে ফেলা হয়েছে এবং স্থান ফিরে পেতে না এবং কেন কাজ করতে পারে না। ধন্যবাদ। - Luke Cousins
একই লাইনের পাশাপাশি এবং এটি অন্যকে সাহায্য করে, আমি একটি বড় nginx access.log ফাইল মুছে ফেলেছি কিন্তু nginx পুনঃসূচনা করার পরে শুধুমাত্র স্থানটি পুনরুদ্ধার করতে সক্ষম হয়েছিল: service nginx পুনরায় শুরু করুন - Nick


ইগনাসিও উল্লেখ করে যে ফাইলটি মুছে ফেলার সময় ফাইলটি মুছে ফেলা না হওয়া পর্যন্ত আপনি সেই প্রসেসটি মুছবেন না যতক্ষণ না ফাইলটি খোলা থাকে।

তবুও, আপনি প্রসেস হত্যা ছাড়া স্থান পুনরুদ্ধার করতে পারেন। আপনি সমস্ত ফাইল descriptors অপসারণ করতে হবে।

প্রথমে lsof execute | grep ফাইল ধারণকারী প্রক্রিয়া সনাক্ত করতে মুছে ফেলা হয়েছে

[hudson@opsynxvm0055 log]$ /usr/sbin/lsof |grep deleted
java       8859   hudson    1w      REG              253,0 3662503356    7578206 /crucible/data/current/var/log/fisheye.out (deleted)

তারপর চালানো:

cd /proc/PID/fd

তারপর

[hudson@opsynxvm0055 fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb  7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)

"1" ফাইল বর্ণনাকারী হতে হবে। এখন যে স্থানটি পুনরুদ্ধার করতে "> FD" টাইপ করুন

> 1

ফাইল ধারণকারী অন্যান্য প্রক্রিয়া আছে যদি আপনি অপারেশন পুনরাবৃত্তি প্রয়োজন হতে পারে।


21
2018-02-07 01:24



কি কি > FD না? - Pred
এটা ফাইল বর্ণনাকারী মুছে ফেলা হয় - Adrián Deccico
এই আছে > কমান্ড একটি নাম আছে? এটি ব্যবহার করতে সক্ষম হবার জন্য আমি zsh থেকে bash থেকে সুইচ করতে হয়েছিল। এটা zsh এটা চালানো সম্ভব? - ariera
এটি একটি আউটপুট পুনঃনির্দেশিত এবং অতএব ফাইল ছিন্ন করে। দীর্ঘ "echo-n> 1" বা "true> 1" হবে। এটি সত্যিই FD সরানো হয় না, এটি শুধুমাত্র পরে একটি খালি ফাইল নির্দেশ করে। - eckes


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

ফাইলগুলি যদি অন্য কোথাও উল্লেখ করা হয়ে থাকে তবে আমি অনুমান করি যে আপনাকে ls -i ফাইলে (গুলি) ইনডোড-সংখ্যাটি খুঁজে বের করতে হবে এবং তারপরে এটি অনুসন্ধান করতে -inum <inode-number> সহ একটি অনুসন্ধান করুন। সেই ফাইলের অন্যান্য রেফারেন্সগুলি (আপনি সম্ভবত একই ফাইল সিস্টেমে থাকার জন্যও -মাউন্টটি ব্যবহার করতে চান)।


8
2018-02-08 10:01





ফাইল এখনও খোলা প্রক্রিয়া দ্বারা লক করা হয়। স্থান মুক্ত করতে, এই পদক্ষেপগুলি করুন:

  1. চালান sudo lsof | grep deleted এবং দেখুন কোন প্রক্রিয়া ফাইল ধারণ করা হয়। উদাহরণ ফলাফল:

    $ sudo lsof | grep deleted
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
    cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
    
  2. ব্যবহার করে প্রক্রিয়া হত্যা sudo kill -9 {PID}। উপরের নমুনায়, পিআইডি 1623।

    $ sudo kill -9 1623
    
  3. চালান df স্থান ইতিমধ্যে মুক্ত করা হয়েছে কিনা তা পরীক্ষা করার জন্য। এটি এখনও পূর্ণ হলে, আপনাকে কয়েক সেকেন্ড অপেক্ষা করতে হবে এবং আবার চেক করতে হবে।


3
2018-02-16 05:31





পার্টিশনটি শুধুমাত্র রুট ব্যবহারের জন্য ডিস্কে স্থান নির্দিষ্ট অংশ সংরক্ষণ করার জন্য কনফিগার করা হয়েছে, df উপলব্ধ হিসাবে এই স্থান অন্তর্ভুক্ত করা হবে না।

[root@server]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

ফাইল / ডিরেক্টরি মুছে ফেলার পরেও স্থানটি পুনরায় দাবি করা হবে, এমনকি অ-রুট ব্যবহারকারী নির্দিষ্ট পার্টিশনে লিখতে পারবেন না।

একটি ডিভাইসে রুট এবং নন-রুট ব্যবহারকারী হিসাবে ফাইল তৈরি করার চেষ্টা করে এটি আপনার কেস কিনা তা আপনি সহজে পরীক্ষা করতে পারেন।

উপরন্তু আপনি চলমান দ্বারা ফাইল সিস্টেম কনফিগারেশন চেক করতে পারেন

tune2fs -l <device> | egrep "Block count|Reserved block count

এবং আপনার নিজস্ব প্রকৃত% গণনা।

ডিস্ক% র root-only ব্যবহারের জন্য সংরক্ষিত, সঞ্চালন করুন

tune2fs -m <percentage> <device>

2
2018-05-08 10:31





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

সমস্যা সমাধান করার জন্য, ড্রাইভ স্থানটি কোথায় ব্যয় হচ্ছে তা আপনাকে বলে এমন একটি সরঞ্জাম ব্যবহার করুন: আপনি ব্যবহার করতে পারেন du স্থান যেখানে যাচ্ছে একটি ওভারভিউ পেতে। এমনকি ভাল, মত গ্রাফিকাল টুল ব্যবহার করুন xdiskusage (এই মত অনেক আছে) অপরাধী খোঁজা। xdiskusage এবং বন্ধুদের আপনি স্থান যেখানে যাচ্ছে খুঁজে পেতে বৃহত্তম স্থান hogs মধ্যে ড্রিল করা যাক।

এই ভাবে, আপনি দ্রুত ফাইলগুলি খুঁজে পাবেন যা এখনও একটি দ্বিতীয় হার্ডলিঙ্কের কারণে স্থান দখল করে। এটি মুছে ফেলা স্থানটিও দেখাবে, কিন্তু ফাইল খুলবে (যেমন (অনুমতি অস্বীকার করা হয়েছে), আমি বিশ্বাস করি, এটি ফাইলের নামটি পড়তে পারে না)।


1
2018-02-08 10:11





যেহেতু আমি জানি যে আপনি একটি টন এই redhat জন্য করছেন /var এবং gzipping ফাইলগুলিকে সঙ্কুচিত করার জন্য FS ফাইলগুলি প্রত্যাশা করে, কিন্তু পরিবর্তে এটি বৃদ্ধি পায়, কেবল নিশ্চিত করুন যে আপনি পরিষেবা syslog পুনরায় আরম্ভ করুন। এবং

lsof -v file

আপনি যে কোনোভাবে এই দেখাবে।


1
2018-03-23 15:02



এটি সত্যিই অনেক যোগ করা হয় না; গৃহীত উত্তরটি 2001 এর পিছনে যুক্তিটি আচ্ছাদিত করে। যখন আপনার 50 টি রেপ থাকে, আপনি যদি বিদ্যমান উত্তরগুলিতে যোগ্যতা যোগ করতে চান তবে মন্তব্য ব্যবহার করুন। - Andrew B


আরও একটি বিকল্প: ক্রমাগত ডেটা তৈরি করে এমন একটি প্রক্রিয়ার কারণে ডিস্কটি পূর্ণ হতে পারে: লগ, কোর এবং পছন্দ। স্থানটি প্রকৃতপক্ষে মুক্ত করা সম্ভব কিন্তু তা অবিলম্বে পূরণ করা সম্ভব। আমি আসলে যেমন একটি মামলা দেখা যায়। df এই ক্ষেত্রে কেবল গর্ত ছবি দিতে না। ব্যবহার du আরও জানতে.


0
2017-07-17 12:01





আমি EXT2 ব্যবহার করছি, FSCK এই পরিস্থিতিতে আমাকে সাহায্য করেছে। Shudown -F এখন চেষ্টা করুন, কিছু পুনরায় আরম্ভ এবং fscks পরে, আমি অর্ধ ব্যবহৃত স্থান দেখতে।


0
2018-01-16 09:00



প্রিয় মার্সেলাস, আপনার সমাধান গৃহীত উত্তর দ্বারা আবৃত হয়; এবং কখনও কখনও আপনি যদি বাধ্য না হন তবে আপনি পুনরায় বুট করতে চান না ... - Deer Hunter