ফাইলগুলি মুছে ফেলা হচ্ছে তবে ডিস্কের স্থানটি এখনও পূর্ণ


26

পুরানো CentOS 5.6 বাক্সের সাথে লভ্য, কোনও lvm সেটআপ ছাড়াই, আমার রুট ফাইল সিস্টেমটি / পূর্ণ রয়েছে, আমি অনেক পুরানো লগ ফাইল এবং অ্যাপ্লিকেশন ফাইলগুলি সাফ করে দিয়েছি যা আমার প্রয়োজন হয় না, যা আকারের 2 -5 গিগাবাইটের চেয়ে বেশি ছিল, তবে আমার সিস্টেম তবুও রিপোর্ট করে যে ডিস্ক পূর্ণ রয়েছে।

[root@tornms1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             130G  124G     0 100% /
/dev/sdb1             264G  188M  250G   1% /data
/dev/sda1              99M   24M   71M  26% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm



[root@tornms1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdb1 on /data type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

আমার পরবর্তী কী করার চেষ্টা করা উচিত সে সম্পর্কে কোনও ধারণা? দুর্ভাগ্যক্রমে বাক্সটি রিবুট করা এখন কোনও বিকল্প নয়।


1
বোকা প্রশ্ন জিজ্ঞাসা করার জন্য দুঃখিত, কিন্তু আপনি কি নিশ্চিত যে আপনার /.Trash/খালি আছে? আপনি কি করেছেন sudo rm -Rf ~/.Trash/*?
আর্ট গার্টনার

এটি একটি সার্ভার, আমার এক্স উইন্ডো ইনস্টল নেই, সুতরাং আমার রুট অ্যাকাউন্টে। ট্র্যাশ ফোল্ডার নেই।
ব্যবহারকারী 1007727

আমার খারাপ, আমি ধরে নিয়েছি /.ট্রেশ / সমস্ত ইউনিক্স-মতো সিস্টেমে বিদ্যমান।
আর্ট গার্টনার

এছাড়াও আপনি সিঙ্কটি ব্যবহার করতে পারেন ( linux.die.net/man/8/sync ) কমান্ড সম্ভবত আপনার সমস্ত ক্রিয়াকলাপ এখনও ক্যাশেড রয়েছে।
ওয়েবারিক

উত্তর:


38

এখানে দুটি জিনিস ঘটতে পারে।

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

যদি এটি আপনার পরিস্থিতি হয় এবং আপনি মরিয়া হয়ে থাকেন তবে আপনি যে জায়গার জন্য সংরক্ষণ করেছেন তার পরিমাণ পরিবর্তন করতে পারবেন root। এটি 1% কমানোর জন্য (ডিফল্ট 5%), আপনার আদেশ হবে

# tune2fs -m 1 /dev/sda3

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


1
হ্যাঁ, দ্বিতীয়টি প্রথম হওয়া উচিত!
Mulya

এই প্রশ্নোত্তর (গুলি) আরও তথ্য যুক্ত করুন superuser.com/questions/444269/…
luka5z

18

আপনি যদি কোনও প্রক্রিয়া দ্বারা ব্যবহৃত একটি ফাইল মুছে ফেলেন তবে আপনি আর ফাইলটি দেখতে পারবেন না ls। আপনি প্রক্রিয়াটি থামিয়ে না দেওয়া পর্যন্ত প্রক্রিয়াটি এখনও সেই ফাইলটিতে লেখা রয়েছে stop

মুছে ফেলা ফাইলগুলি দেখতে, কেবল চালান lsof|grep delete


1
এটা আমার ক্ষেত্রে সমস্যা ছিল। ধন্যবাদ, খুব দরকারী তথ্য।
ড্যাগ সন্ড্রে হ্যানসেন

সম্পর্কিত উত্তর: unix.stackexchange.com/questions/34140/…
icc97

10

ডিস্কটি পাওয়ার আরও 2 টি উপায় সম্পূর্ণ ইস্যু:

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

2) দূষিত ফাইল: আমি মাঝে মাঝে এসএমবির মাধ্যমে উইন্ডোজ থেকে লিনাক্স ফাইল স্থানান্তর দেখতে পাই। একটি ফাইল ফাইল বর্ণনাকারী বন্ধ করতে ব্যর্থ হয় এবং আপনি একটি 4GB ফাইল ট্র্যাশ দিয়ে শেষ করতে পারেন।

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

cd /
du -sh ./* 

শীর্ষ স্তরের ডিরেক্টরিগুলির সংখ্যা সাধারণত সীমিত থাকে, তাই আমি মানব পাঠযোগ্য পতাকাটি সেট করে -hদেখি যে কোন সাব-ডিরেক্টরীটি স্পেস হগ।

তারপরে আপনি সমস্যা সন্তানের সিডি করুন এবং এতে থাকা সমস্ত আইটেমের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করুন। বড় আইটেমগুলি চিহ্নিত করা সহজ করার জন্য, আমরা ডুটি সামান্য পরিবর্তন করি এবং এটি একটি সাজানোর সাথে জুটি করি।

cd /<suspiciously large dir>
du -s ./* | sort -n

যা সমস্ত ফাইল এবং ডিরেক্টরিগুলির জন্য বাইট আকারের দ্বারা ছোট থেকে বৃহত্তম আউটপুট উত্পাদন করে

4          ./bin 
462220     ./Documents
578899     ./Downloads
5788998769 ./Grocery List

একবার আপনি বড় আকারের ফাইলটি সন্ধান করলে আপনি সাধারণত এটি মুছতে পারেন।


দুর্দান্ত টিপস! আমি ফোল্ডারগুলি du এর অধীনে / ব্যবহার করে সনাক্ত করেছি এবং অ্যান্ড্রয়েড এসডিকে অধীনে বেশ কয়েকটি অত্যন্ত বড় সিস্টেমের চিত্র পেয়েছি। এগুলি এবং সবকিছু মুছে ফেলা হয়েছে :)
পুতুল

4

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

# lsof | grep log$
rsyslogd   2109     syslog    0u     unix 0xffff88022fa230c0      0t0       8894      /dev/log
rsyslogd   2109     syslog    1w      REG              252,6    62393         26 /var/log/syslog
rsyslogd   2109     syslog    2w      REG              252,6   113725        122 /var/log/auth.log
rsyslogd   2109     syslog    3u     unix 0xffff88022fa23740      0t0       8921 /var/spool/postfix/dev/log
rsyslogd   2109     syslog    5w      REG              252,6    65624        106 /var/log/mail.log
/usr/sbin  2129       root    2w      REG              252,6    93602         38 /var/log/munin/munin-node.log
/usr/sbin  2129       root    4w      REG              252,6    93602         38 /var/log/munin/munin-node.log
...

1

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

#lsof +L1

এটি প্রক্রিয়া আইডি এবং ফাইল বর্ণনাকারী দেবে। ফাইল বর্ণনাকারী দ্বারা মুছে ফেলা ফাইল বাতিল করতে

#echo "" > /proc/$pid/fd/$fd 

1

কমান্ড টাইপ করুন

#lsof +L1

যা মুছে ফেলা উদ্ধৃতি সহ মেমরি ধারণ করে এমন ফাইলগুলির তালিকা প্রদর্শন করবে।

ফাইলটির পিড (প্রসেস আইডি) নোট করুন

প্রক্রিয়া হত্যা

#kill <pid>

প্রক্রিয়া দ্বারা মেমরি প্রকাশ করা হবে

কমান্ড দ্বারা এটি পরীক্ষা করুন

#df -h

0

যা ব্যাখ্যা করা হয়েছে তার অতিরিক্ত হিসাবে, সমস্যাটি হ'ল একই সার্ভারের অন্য সংযুক্ত ডিস্ক ডিভাইসে মুছে ফেলা ফাইল ডিরেক্টরিটির আর একটি মাউন্ট পয়েন্ট রয়েছে। বর্তমান মাউন্টগুলি এবং fstab এন্ট্রিগুলি পরীক্ষা করুন।


0

বন্য অঞ্চলে প্রকৃত সমস্যা লক্ষ্য করা গেছে:

নিশ্চিত করুন যে আপনি আসল ফাইলগুলি মুছছেন এবং ফাইলগুলিতে সিমলিঙ্কগুলি না । এটি বিশেষত লগ ফাইলগুলির ক্ষেত্রে হতে পারে।

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