সমস্যার কারণ
এক্সএফএস কীভাবে ইনোড বরাদ্দ করে তা এই বিষয়টিতে পরিণত হয়েছে। বেশিরভাগ ফাইল সিস্টেমের বিপরীতে, নতুন ফাইল তৈরি হওয়ার সাথে সাথে বরাদ্দ গতিশীলভাবে ঘটে। যাইহোক, আপনি অন্যথায় উল্লেখ না করলে, ইনোডগুলি 32-বিট মানগুলিতে সীমাবদ্ধ থাকে যার অর্থ ফাইল সিস্টেমের প্রথম টেরাবাইট স্টোরেজের মধ্যে তাদের অবশ্যই মাপসই করা উচিত। সুতরাং আপনি যদি প্রথম টেরাবাইটটি পুরোপুরি পূরণ করে থাকেন এবং তারপরে আপনি ডিস্কটি প্রসারিত করেন তবে আপনি নতুন ফাইল তৈরি করতে অক্ষম হবেন, যেহেতু নতুন জায়গায় নতুন স্থান তৈরি করা যায় না।
সমাধান 1 - মাউন্ট বিকল্পগুলি পরিবর্তন করুন
একটি সমাধান হ'ল মাউন্ট অপশন সহ ফাইল সিস্টেমটি পুনরায় মাউন্ট করা inode64
। তবে কিছু অ্যাপ্লিকেশনগুলি (যেমন মাইএসকিউএল) এর সাথে অদ্ভুত আচরণ করবে এবং এনএফএস খুব বিভ্রান্ত হবে। সুতরাং আপনি যদি নিশ্চিত না হন যে আপনার সিস্টেমটি এই বিকল্পের সাথে কাজ করবে তবে আপনি পরবর্তী বিকল্পটিতে যেতে পারেন।
সমাধান 2 - সরান ফাইল
দ্বিতীয় সমাধানটি হ'ল বর্তমানে প্রথম টেরাবাইটে সঞ্চিত কিছু ফাইল সন্ধান করা এবং সেগুলি ফাইল সিস্টেমের অন্য একটি অঞ্চলে স্থানান্তরিত করা।
বয়স অনুসারে চলন্ত
আমাদের ক্ষেত্রে এটি সহজ ছিল - ফাইল সিস্টেমটি বছরের পর বছর ধরে ব্যবহৃত ছিল, তাই আমরা কেবল পুরানো ফাইলগুলি সন্ধান করতে পারি এবং সেগুলি ফাইল সিস্টেম থেকে সরিয়ে নিয়ে যেতে পারি এবং তারপরে তাদের আবার সরিয়ে নিতে পারি। এটি সহজেই অনুসন্ধান ব্যবহার করে করা হয়েছিল:
find /extra -mindepth 3 -maxdepth 3 -type d -mtime +730 -exec du -sh {} \; > /tmp/olddirs.txt
আমাদের মাউন্টপয়েন্টের নীচে 3 স্তরের, যা 2 বছরেরও বেশি বয়স্ক ছিল তার নীচে 3 টি ডিরেক্টরিতে সমস্ত ডিরেক্টরিতে আকার এবং ডিরেক্টরি নাম যুক্ত একটি তালিকা দিয়েছে। এরপরে আমরা বৃহত্তম ডিরেক্টরিগুলি খুঁজে পেতে তালিকাটিকে বাছাই mv
করতে পারি এবং সেগুলি অন্য ফাইল সিস্টেমে সরানোর জন্য এবং আবারও ব্যবহার করতে পারি।
বরাদ্দ গ্রুপ দ্বারা চলমান
আপনি যদি বয়স অনুসারে সহজেই যেতে না পারেন, উদাহরণস্বরূপ যখন একই সাথে প্রচুর ফাইল তৈরি করা হয়েছিল তখনও আপনি সরানোর জন্য সঠিক ফাইলগুলি খুঁজে পেতে পারেন তবে এতে আরও কিছুটা সময় লাগে।
XFS দ্বারা বরাদ্দ গ্রুপ (ওরফে হয়েছে এজি 0. দিয়ে শুরু আপনি অবরোধ আকার এবং প্রতিটি এজি ব্লক সংখ্যা পরীক্ষা জিনিসটা যা গ্রুপ প্রথম টেরাবাইট উপর হতে পারে, ব্যবহার করে, গুলি) xfs_info /path/to/mountpoint
। অথবা কোনটি পূর্ণ রয়েছে তা দেখতে আপনি কেবল প্রথম কয়েকটি এজি পরীক্ষা করতে পারেন এবং তারপরে সেগুলি সাফ করতে পারেন।
- প্রথম চারটি এজি-তে বিনামূল্যে স্থান পরীক্ষা করা:
ag seq 0 1 5` এগ এর জন্য; এজি-এগ্রোতে ইকো ফ্রিস্পেস করুন; xfs_db -r -c "freesp -s -a $ ag" / dev / CACHE / CACHE; গ্রেপ "সম্পূর্ণ বিনামূল্যে"; সম্পন্ন
যদি কোনও গ্রুপে মোট ফাঁকা স্থান 40 এরও কম হয় তবে আপনি এতে নতুন ফাইল তৈরি করতে পারবেন না।
- এজি তে ফাইলগুলি সন্ধান করুন
এটি ফাইল সিস্টেমে প্রতিটি ফাইলের জন্য মেটাডেটা পরীক্ষা করার পুনর্বিবেচনা করে। এটি দীর্ঘ সময় নিবে ... এখানে একটি পরামর্শ:
সন্ধান / অতিরিক্ত-মাইন্ডেপথ 3-প্রকারের f -exec xfs_bmap -v {} \; > /tmp/agfilelist.txt
এরপরে আপনি " 0 "
এজি 0 এ সমস্ত ফাইল সন্ধানের জন্য (এটি একটি স্পেস, শূন্য এবং অন্য একটি স্থানের জন্য) গ্রেপ " 1 "
করতে পারেন, এজি 1 তে ইত্যাদি খুঁজে পেতে গ্রেপ করুন ... এজি 0 দিয়ে শুরু করুন, বৃহত্তম ফাইলগুলি সরিয়ে ফেলুন (ব্যবহার করে mv
, না cp
!) এবং তারপরে আবার ফিরে আসুন। আপনার কাছে মোটামুটি পরিমাণ জায়গা মুক্ত না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।
ফলাফল
একবার আমরা অতিরিক্ত ফাইলগুলি অতিরিক্ত / অতিরিক্ত থেকে সরিয়ে নিয়ে আবার যেতে চাইলে এজি 0 তে প্রচুর জায়গা ছিল এবং নতুন ফাইলগুলি তৈরি করা আবার সম্ভব হয়েছিল।