প্রশ্ন ডিস্ক পূর্ণ, du বিভিন্ন বলে। আরও তদন্ত কিভাবে?


আমার একটি সার্ভারে একটি SCSI ডিস্ক রয়েছে (হার্ডওয়্যার RAID 1), 32 জি, ext3 ফাইলটাইম। df আমাকে বলে যে ডিস্ক 100% পূর্ণ। যদি আমি 1 জি মুছে ফেলি এই সঠিকভাবে দেখানো হয়।

যাইহোক, যদি আমি একটি রান du -h -x / তারপর du আমাকে বলে যে শুধুমাত্র 12 জি ব্যবহার করা হয় (আমি ব্যবহার করি -x কিছু সাম্বা মাউন্ট করার কারণে)।

তাই আমার প্রশ্নটি du এবং df কমান্ডের মধ্যে সূক্ষ্ম পার্থক্য সম্পর্কে নয় তবে এই বিশাল পার্থক্যের কারণ কী?

আমি w / আউট ত্রুটি গিয়েছিলাম যে একটি fsck জন্য মেশিন পুনরায় বুট। আমি চালানো উচিত badblocks? lsof আমাকে কোন খোলা ফাইল মুছে ফেলা হবে, lost+found খালি এবং বার্তা ফাইলের মধ্যে কোন সুস্পষ্ট সতর্কতা / ভুল / ব্যর্থ বিবৃতি নেই।

সেটআপ আরও বিস্তারিত জানার জন্য বিনা দ্বিধায়।


91
2018-05-30 12:29


উত্স


এই প্রশ্নটির খুব কাছাকাছি: linux - du vs. df পার্থক্য (serverfault.com/questions/57098/du-vs-df-difference)। ওল্ড টোল উত্তর হিসাবে সমাধান একটি মাউন্ট পয়েন্ট অধীনে ফাইল ছিল। - Chris Ting


উত্তর:


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


88
2018-05-30 12:35



আপনি ডিরেক্টরি লুকানো প্রয়োজন ছাড়া এই লুকানো ফাইল খুঁজে পেতে পারেন। মার্সেল জি এর উত্তরটি নীচে দেখুন যা ব্যাখ্যা করে। - mhsekhavat
আপনার উত্তরে এটি করার জন্য আপনাকে CLI কমান্ডগুলি দেখানো উচিত - Jonathan
আপনি যদি মনে করেন যে এটি আপনার জন্য ইন্দ্রিয় বোধ করে না তবে পরীক্ষা করুন! - Chris


স্থানীয় সার্ভারে কোনও সমস্যা নির্ণয় করার চেষ্টা করার সময় এই পৃষ্ঠাটিতে কেবল আটকা পড়ে।

আমার ক্ষেত্রে df -h এবং du -sh হার্ড ডিস্কের আকারের প্রায় 50% পার্থক্য।

এটি ক্ষতিকারক বড় লগ ফাইলগুলি ডিস্কে থেকে মুছে ফেলা হয়েছে যা অ্যাপাচি (httpd) দ্বারা সৃষ্ট হয়েছিল।

এই চলমান দ্বারা ট্র্যাক ডাউন ছিল lsof | grep "/var" | grep deleted কোথায় /var আমি পরিষ্কার করার প্রয়োজন পার্টিশন ছিল।

আউটপুট এই মত লাইন দেখিয়েছেন:
httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)

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


76
2018-03-12 11:10



আমার জন্য, লক যেখানে আমি প্রোগ্রাম বন্ধ করার পরে মুক্তি না (Zombies?)। আমি বাধ্য ছিলাম kill -9 'pid' লক মুক্তি। উদাহরণস্বরূপ: আপনার httpd এর জন্য এটি হয়েছে kill -9 32617। - Micka
ক্ষুদ্র নোট: আপনি চালাতে হতে পারে lsof যেমন sudo বা না সব খোলা ফাইল বর্ণনাকারী প্রদর্শন করা হবে - ChrisWue
আমি H2 সঙ্গে এই মধ্যে দৌড়ে, যা প্রতিদিন একটি logfile কয়েকটি gigs যোগ করা হয়েছিল। H2 (ধীরে ধীরে) পুনরায় শুরু করার পরিবর্তে, আমি ব্যবহার করি sudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd)। - Desty
আমার ক্ষেত্রে, এমনকি পুনরায় আরম্ভ করার সময় httpd স্থান মুক্তি না। যখন আমি দৌড়ে /etc/init.d/rsyslog restart এটা কাজ করেছে: ডি - Thanh Nguyen Van
আপনি greps এড়িয়ে যেতে এবং শুধু করতে পারেন lsof -a +L1 /var, কোথায় -a মানে এবং সমস্ত শর্ত (ডিফল্ট হয় OR) +L1 এর অর্থ শুধুমাত্র 1 টিরও কম লিঙ্কের সাথে তালিকাগুলির তালিকা (অর্থাত, খোলা ফাইল বর্ণনাকারীর সাথে মুছে ফেলা ফাইলগুলি), এবং /var যে মাউন্ট পয়েন্ট অধীনে ফাইল সীমাবদ্ধ - kbolino


আমি আপনার "অনুপস্থিত" স্থানটির জন্য সম্ভাব্য সম্ভাব্য কারণ হিসাবে ওল্ড টোল এর উত্তরের সাথে একমত।

লিনাক্সে আপনি সহজেই সম্পূর্ণ রুট পার্টিশন (অথবা যে কোনও পার্টিশনটি অন্য যে কোনও পার্টিশন) অন্য স্থানে স্থানান্তর করতে পারেন ফাইল সিস্টেম বলতে / mnt উদাহরণস্বরূপ

mount -o bind / /mnt

তারপর আপনি একটি করতে পারেন

du -h /mnt

এবং আপনার স্থান ব্যবহার করে দেখুন।

Ps: একটি নতুন উত্তর যোগ করার জন্য দুঃখিত এবং একটি মন্তব্য না কিন্তু আমি এই পোস্টটি পড়ার যোগ্য কিছু ফর্ম্যাট প্রয়োজন।


40
2018-05-30 13:54



এই টিপ জন্য অনেক ধন্যবাদ। আমাকে খুঁজে পেতে এবং আমার বড়, "লুকানো" ফাইল ডাউন ডাউনটাইম মুছে ফেলার অনুমতি দেওয়া! - choover
ধন্যবাদ - এই দেখায় যে ডকার diffs সঙ্গে আমার হার্ড ড্রাইভ ভর্তি ছিল /var/lib/docker/aufs/diff/ - naught101


কি দেখো df -i বলেছেন। এটি এমন হতে পারে যে আপনি ইনডক্সের বাইরে থাকবেন, যদি ফাইল ফাইলটিতে বড় সংখ্যক ছোট ফাইল থাকে তবে সমস্ত উপলভ্য স্থান গ্রহণ না করে সমস্ত উপলব্ধ ইনডোকে ব্যবহার করে।


23
2018-05-30 14:10



একটি ফাইলের আকার এবং ফাইল সিস্টেমে এটি কত পরিমাণ স্থান নেয় তা দুটি পৃথক জিনিস। ফাইলগুলি ছোট হতে থাকে, তাদের মধ্যে বড় বৈপরীত্য। যদি আপনি একটি স্ক্রিপ্ট লিখেন যা ফাইলগুলির মাপ আপ করে এবং এটির সাথে তুলনা করে du -s একই subtree, যদি আপনি এখানে একটি ভাল ধারণা পেতে যাচ্ছেন। - Marcin


আমার ক্ষেত্রে এই বড় মুছে ফেলা ফাইল দিয়ে কি ছিল। আমি এই পৃষ্ঠাটি খুঁজে পেতে আগে এটি সমাধান করার জন্য মোটামুটি বেদনাদায়ক ছিল, যা আমাকে সঠিক পথে স্থাপন করেছিল।

আমি অবশেষে ব্যবহার করে সমস্যা সমাধান lsof | grep deleted, যা আমাকে দেখায় কোন প্রোগ্রামটি দুটি খুব বড় লগ ফাইল ধারণ করে (আমার উপলব্ধ 8GB রুট বিভাজনের 5GB টি)।


16
2017-11-14 18:15



এই উত্তরটি আমাকে অবাক করে দেয় কেন আপনি রুট পার্টিশনে লগ ফাইলগুলি সংরক্ষণ করছেন, বিশেষত একটি ছোট ... কিন্তু নিজের প্রতিটিকে আমি মনে করি ... - α CVn
আমারও অনুরূপ সমস্যা ছিল, আমি মুছে ফেলা ফাইলটি ব্যবহার করে এমন সমস্ত অ্যাপ্লিকেশন পুনরায় চালু করেছিলাম, আমার মনে হয় সেখানে একটি জুম্বি প্রক্রিয়া এখনও একটি বড় মুছে ফেলা ফাইলটিতে রাখা হয়েছে - user1965449
এটি আমাদের ক্ষেত্রে ছিল, ফাইলবিট হিসাবে পরিচিত একটি লগ প্রসেসিং লিনাক্স অ্যাপ্লিকেশন ফাইল খোলা রাখা। - Pykler


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


5
2018-05-30 12:51



ওপি বলেন, তিনি সিস্টেম পুনরায় বুট করবেন এবং সমস্যাটি স্থির থাকবে। - OldTroll
আমি zombies ছিল যে ফাইল লক প্রকাশ না, আমি kill -9 'pid' তাদের লক মুক্তি এবং ফিরে ডিস্ক স্থান পেতে। - Micka


বড় ফাইলগুলি সন্ধান করার জন্য এটি আমার কাছে সবচেয়ে সহজ পদ্ধতি!

আপনার রুট মাউন্টটি পূর্ণ / (মাউন্ট / রুট) হলে এখানে একটি উদাহরণ দেওয়া হল উদাহরণ:

সিডি / (তাই আপনি রুট হয়)

ls | xargs du -hs

উদাহরণ আউটপুট:

 9.4 এম বিন
 63 মি বুট
 4.0 কে cgroup
 680 কে ডিভি
 31 এম ইত্যাদি
 6.3 জি বাড়িতে
 313 এম lib
 32 এম lib64
 হারিয়ে 16 + খুঁজে পাওয়া যায় নি
 61 জি মিডিয়া
 4.0K mnt
 113 এম অপ্ট
 du: `proc / 6102 / task / 6102 / fd / 4 'অ্যাক্সেস করতে পারবেন না: কোনও ফাইল বা ডিরেক্টরি নেই
 0 পি
 19M রুট
 840 কে রান
 19 এম sbin
 4.0 কে selinux
 4.0 কে srv
 25 জি দোকান
 26M tmp

তারপর আপনি যে লক্ষ্য করবে দোকান বড় একটি না সিডি / দোকান

এবং আবার চালানো

ls | xargs du -hs

উদাহরণ আউটপুট:
 109 এম ব্যাকআপ
 358 এম FNB
 4.0 জি আইএসও
 8.0 কে কে
 হারিয়ে 16 + খুঁজে পাওয়া যায় নি
 47 মি রুট
 11M স্ক্রিপ্ট
 79 এম tmp
 21 জি ভিএমএস

এই ক্ষেত্রে ভিএমএস ডিরেক্টরি স্থান হগ হয়।


4
2018-06-26 13:05



কেন সহজ সরঞ্জাম ব্যবহার করে না baobab? (দেখুন marzocca.net/linux/baobab/baobab-getting-started.html) - Yvan
হুঁ ls + + xargs overkill মত মনে হয়, du -sh /* নিজেই ঠিক সূক্ষ্ম কাজ করে - ChrisWue
যদি আপনি ncdu সম্পর্কে জানেন না ... আপনি আমাকে পরে ধন্যবাদ দেবেন: dev.yorhel.nl/ncdu - Troy Folger