আমি কীভাবে / var / লগ ডিরেক্টরি সরাতে পারি


16

আমাদের প্রোডাকশন সার্ভারে মূল মাউন্ট পয়েন্টের জন্য একটি ছোট ড্রাইভ রয়েছে /, /var/logখুব বেশি জায়গা নিচ্ছে এবং আমাকে কয়েকটি ফাইল নিজেই মুছতে হবে। আমি কীভাবে রিবোট ছাড়া /var/log/বলতে /home/logপারি?

আমি যা ভাবলাম তা এখানে:

$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart

তবে আমি জানি যে কিছু পরিষেবা ফাইল বর্ণনাকারী ব্যবহার করে তাই তারা ব্যবহার /var/logবা ইনোডগুলি চালিয়ে যাবে ।


AskUbuntu এ মূলত একই প্রশ্নটির বিশদ উত্তর রয়েছে আসলউবুন্টু. com
a

এটি কোনও উত্তর নয় বরং একটি পরামর্শ। লগের জন্য সম্ভব হলে বিআরটিএফের মতো রিয়েলটাইম সংকলন সহ একটি ফাইল সিস্টেম system আপনি যখন এই পার্টিশনটি মাউন্ট করবেন তখন মাউন্ট অপশনটি "কমপ্রেস = lzo" বা "কমপ্রেস = zlib" ব্যবহার করুন। lzo আরও ভাল পারফরম্যান্স দেয়, zlib আরও ভাল কম্প্রেশন দেয়।
ম্যাসিমো

উত্তর:


26

সঠিক নকশা

আমি ধরে নিয়েছি আপনি কেবল প্রশ্ন (ফাইলিং lvextend && ext2online) এ ফাইল সিস্টেমটি প্রসারিত করতে অক্ষম , কারণ আপনি এলভিএম ব্যবহার করেন না বা ভুল ফাইল সিস্টেম টাইপ ব্যবহার করেন না।

আপনার পন্থা

আপনি প্রস্তাবনাটি কী কাজ করতে পারে যদি আপনি সিঘুপের সাথে ডেমনগুলি সিগন্যাল করেন (কিল -1 পিড)। স্পষ্টতই আপনাকে পরে "মাউন্ট-ও বাইন্ড / / কোথাও" নেওয়ার প্রয়োজন হবে এবং মাউন্ট / ভের / লগের নীচে যা রেখে গেছে তা পরিষ্কার করতে হবে। তবে এটির আমার বিশেষত উত্পাদনের জন্য দুর্গন্ধ রয়েছে।

ডাউনটাইম এড়িয়ে চলুন, একটি পরিষ্কার ফলাফল নিন (তবে এটি করা জটিল)

"মাউন্ট-ও বাঁধাই" ধারণাটি ভুলে যান, একটি নতুন এলভি / পার্টিশন তৈরি করুন, তবে এটি এখনও মাউন্ট করবেন না।

lsof | grep /var/log             # lists open files in /var/log

যে কোনও ডেমনটির জন্য যে কোনও মুক্ত ফাইল রয়েছে (আমি কমপক্ষে সিসলগ, ইনএটেড, এসএসডি আশা করব):

  • / var / লগতে লগ না করার জন্য ডেমন নংটি পুনরায় কনফিগার করুন
  • ডিমন রিফ্রেশ ( kill -1 বা /etc/init.d/script reload)
  • lsof | grep /var/log ডিমন এর ফাইলগুলি বন্ধ করে দিয়ে তা নিশ্চিত করুন

মাউন্ট ওভার / ভার / লগ। পুরানো কনফিগারেশন পুনরুদ্ধার করুন, আবার ডিমনগুলি সিগআপ / পুনরায় লোড করুন।

সহজ উপায় (ডাউনটাইম)

একটি নতুন এলভি / পার্টিশন তৈরি করুন এবং এটি / var বা / var / লগের উপর সঠিকভাবে মাউন্ট করুন। সহজ উপায় হ'ল সার্ভারটিকে রক্ষণাবেক্ষণ মোডে (সিঙ্গল-ইউজার মোড) নামানো, এবং অপারেশনের জন্য আসল কনসোল (ssh নয়) ব্যবহার করা।


8

অন্য প্রত্যেকের উত্তরগুলি দুর্দান্ত এবং সঠিক, এবং আপনার অবশ্যই অবশ্যই সেগুলি প্রথমে পড়া উচিত।

আমি কেবল ভেবেছিলাম আমি এটি ভাগ করে নিই কারণ এটি অনুলিপি-আটকানো সহজ করে তোলে, যদি আপনার কেসটি আমার মতো সাধারণ একটি সাধারণ হিসাবে প্রমাণিত হয়:

সিসলগ বন্ধ করুন এবং বর্তমান লগগুলি অনুলিপি করুন:

service rsyslog stop
mkdir -p /tmp/varlog
cp -r /var/log/* /tmp/varlog

তারপরে আপনার নতুন অবস্থানটি মাউন্ট করুন /var/log। বলুন এটি একটি নতুন ডিভাইস বলে/dev/sdb

mount /dev/sdb /var/log

এখন আপনি ফাইলগুলি অনুলিপি করতে এবং সিসলগ পুনরায় চালু করতে পারেন:

cp -r /tmp/varlog/* /var/log
rm -rf /tmp/varlog
service rsyslog start

আপনার মেশিনের জীবনে এই সমস্ত ঘটেছিল তা ধরে নিলে rsyslogসম্ভবত একমাত্র ডেমন চলবে। YMMV!

পিএস - আপনি এটি fstabসম্ভবত আপনার যুক্ত করতে চাইবেন । এটি করার একটি উপায় এখানে আবার খুব সোজাসাপ্টা মাউন্ট ধরে নিলাম:

cat /etc/mtab |grep /var/log >>/etc/fstab

( সিটিএফ /server//a/267610/80606 Mtab কে fstab এ ক্যাটিং সম্পর্কে)


5
সুন্দর সমাধান। আমি যে জিনিসটি পরিবর্তন করব তা হ'ল আপনার cp -rসাথে প্রতিস্থাপন করা sudo tar cpfএবং sudo tar xpfফাইলের মালিকানা এবং অনুমতি বন্ধ রাখার অফ সুযোগে রুট ব্যতীত অন্য কোনও ব্যবহারকারী দ্বারা তৈরি হওয়া লগগুলি।
ব্রেন্ডা বেল

2

আর একটি জিনিস যা আপনি করতে পারেন তা হ'ল:

  • খোলা ফাইল রয়েছে এমন প্রক্রিয়াগুলি বন্ধ করুন /var/log
  • ওপেন ফাইলগুলি নিয়ে কোনও প্রক্রিয়া নেই তা যাচাই করুন /var/log( lsofকুবঙ্কম্যাক প্রস্তাবিত হিসাবে ব্যবহার করা)
  • /var/logপর্যাপ্ত ফাঁকা জায়গা সহ আপনার অন্য পার্টিশনে স্থানান্তর করুন (আপনার উদাহরণ অনুসরণ করে, এটি হবে /home/log)
  • / Var / লগ থেকে / হোম / লগ ( ln -s /home/log /var/log) থেকে একটি প্রতীকী লিঙ্ক তৈরি করুন
  • আপনি প্রথম পদক্ষেপে যে প্রক্রিয়াগুলি থামিয়ে দিয়েছিলেন তা পুনরায় চালু করুন

দয়া করে মনে রাখবেন যে এটি আমি একটি ভাল অনুশীলন হিসাবে বিবেচনা করি না far এটি কেবলমাত্র একটি কর্মক্ষেত্র যাতে আপনাকে সার্ভারটি বন্ধ করতে না হয়। সঠিক সমাধানটি হ'ল পর্যাপ্ত স্থান (বা বর্তমান প্রসারিত) সহ একটি নতুন /varবা /var/logবিভাজন তৈরি করা ,


লোগ্রোটেটটি চালানো থাকলে লিঙ্ক আইডিয়াটি করা থেকে কোনও প্রভাব পড়তে পারে? আমি জানতাম না যে এটির আগে থেকে লিঙ্ক না থাকলে ফাইলগুলির স্থানগুলি ওভাররাইট বা স্ক্রু আপ হবে কিনা ... এর অর্থ পরে আরও রক্ষণাবেক্ষণের মাথা ব্যথা হতে পারে।
বার্ট সিলভারস্ট্রিম

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

0

@Hwjp এর উপর ভিত্তি করে আরেকটি সমাধান, যদি আপনি সেগুলি চালনার জন্য অন্য ড্রাইভের ভলিউম ব্যবহার করতে না পারেন, তবে আপনি আরও একটি ভলিউমে ভার্চুয়াল ড্রাইভ ভলিউম তৈরি করতে পারেন যার কাছে আরও জায়গা উপলব্ধ (এটি আমার ক্ষেত্রে):

ভার্চুয়াল ভলিউম তৈরি করুন:

ক) করুন: sudo dd if=/dev/zero of=VHD-log.img bs=1M count=1200

  • if = / dev / শূন্য: ইনপুট ফাইল ডেটা স্টোরেজ আরম্ভের জন্য একটি অক্ষর প্রবাহ সরবরাহ করতে
  • of = VHD.img: / thevolumeofyourchoice এ স্টোরেজ ভলিউম হিসাবে তৈরি করতে ইমেজ ফাইল
  • বিএস = 1 এম: একবারে 1 এম পর্যন্ত পড়ুন এবং লিখুন
  • গণনা = 1200: অনুলিপিগুলি কেবল 1200 এম (1 জিবি) ইনপুট ব্লক

খ) করবেন: sudo mkfs -t ext4 /thevolumeofyourchoice/VHD-log.imgএমকেএফএস ইউটিলিটি সহ ভিএইচডি-লগ চিত্র ফাইলটিতে EXT4 ফাইল সিস্টেম প্রকার বিন্যাস করুন।

সি) করুন: sudo mkdir /thevolumeofyourchoice/vlogএকটি ডিরেক্টরিতে মাউন্ট ভিএইচডি-লগ করুন (মাউন্ট পয়েন্ট)

ঘ) কর: sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /thevolumeofyourchoice/vlog

ডি 1) সিস্টেম বুট-এ চূড়ান্ত ডিরেক্টরিতে ভিএইচডি-লগ মাউন্ট করতে, / etc / fstab ফাইলে এই এন্ট্রি যুক্ত করুন।

/thevolumeofyourchoice/VHD-log.img  /var/log/  ext4    defaults        0  0

পুরানো লগ ফাইলগুলি সরান:

ঙ) করুন:

  • service rsyslog stop
  • lsof | grep /var/log / var / লগ-এ খোলা ফাইলগুলি তালিকাভুক্ত করতে এবং প্রয়োজনীয় ডেমনকে স্যুইচ অফ করতে (apach2, আমার ক্ষেত্রে ফ্রেশক্ল্যাম)
  • cp -rp /var/log/* /thevolumeofyourchoice/vlog (সিপি-পি একইরূপে - প্রप्रेজার = মোড, মালিকানা, টাইমস্ট্যাম্প)

চ) করুন:

  • sudo umount /thevolumeofyourchoice/vlog
  • sudo mv /var/log /var/log-old
  • sudo mkdir /var/log
  • sudo chgrp syslog /var/log
  • sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /var/log

ছ) করুন: service rsyslog startএবং আপনার বন্ধ হওয়া অন্য পরিষেবাদি পুনরায় চালু করুন

শেষ পর্যন্ত ডাবল চেক:

আপনি / সি lsof | grep /var/log/ এ / লগ-এ খোলা ফাইলগুলি তালিকাভুক্ত করতে এবং / var / লগের দিকে নির্দেশ করেছেন এবং / var / লগ-পুরানো নয় যাচাই করে

ঠিক আছে, আপনি mv, ব্যাকআপ বা / var / লগ-পুরানো মুছে ফেলতে পারেন।


-1

আমি শুধু চাই:

apt install lsyncd
mv /var/log /varlog.root
mkdir /var/log /home/log
mount --bind /home/log /var/log

# set up lsyncd appropriately to sync real-time between /varlog.root & /var/log
service lsyncd start
sleep 3m

service rsyslog restart
# Proceed with all the other daemons
# to switch them over to the new /var/log and release /varlog.root
sleep 3m

# Then do this a few times until no processes use the old dir
lsof +D /varlog.root && rm -rf /varlog.root

এটি কি /var/logমাউন্ট মাউন্ট ছেড়ে ভাল /home/log? আমি অনুমান করি যে এই পুরো প্রশ্নটি পাকা প্রশাসকদের নয়।
kubanczyk

আপনি কি বোঝাতে চেয়েছেন? / হোম / লগ মাউন্ট করা হয় / var / লগের উপরে, অন্যভাবে নয়। এবং হ্যাঁ, এটি যেমন আছে তেমন ছেড়ে যাওয়া কোনও সমস্যা নয়, খালি / ভার / লগ মাউন্ট পয়েন্টে কিছু নতুন লগ তৈরির চেষ্টা না করার জন্য সমস্ত প্রক্রিয়া স্বয়ংক্রিয়ভাবে এবং তাড়াতাড়ি পর্যাপ্ত পর্যায়ে পৌঁছেছে তা নিশ্চিত করুন।
আলেকজান্ডার শ্যাচব্লিকিন

প্রকৃত পৃথক মাউন্ট পয়েন্টগুলিতে সুরক্ষা প্রয়োজনীয়তার জন্য অনেক বার / ভার / লগ এবং / ভার / লগ / নিরীক্ষণের প্রয়োজন হয়। অন্যথায় এগুলি ছেড়ে দিন এবং অযথা ডিস্কের ব্যবহার এড়াতে উপযুক্ত লগ রোটেশন সেটআপ করুন।
ব্র্যাড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.