क्यों लिनक्स kdump / var / दुर्घटना के लिए लिख नहीं है?


10

यह फिर से हुआ है! मेरे पास 4 सर्वर हैं जो समय-समय पर दुर्घटनाग्रस्त हो रहे हैं, और सिस्टम लॉग या सीरियल कंसोल पर कोई सूचना मुद्रित नहीं है।

इसके अलावा, Linux kdump सेवा डिफ़ॉल्ट स्थान पर कोर डंप नहीं लिख रही है /var/crash

  • क्या आप मुझे यह पता लगाने में मदद कर सकते हैं कि क्यों?
  • क्या इससे कोई फर्क नहीं पड़ता कि मेरा रूट फाइल सिस्टम LVM वॉल्यूम है?

यहाँ मैंने कोशिश की है।

  1. मेरा सिस्टम नवीनतम कर्नेल के साथ वैज्ञानिक लिनक्स 6.5 है।

    [root@host1 ~]# uname -r
    2.6.32-431.11.2.el6.x86_64
    [root@host1 ~]# cat /etc/issue
    Scientific Linux release 6.5 (Carbon)
    
  2. फ़ाइल /etc/kdump.confवेनिला फ़ाइल है जिसमें डिफ़ॉल्ट सेटिंग्स हैं। अधिकांश लाइनों पर टिप्पणी की जाती है, के लिए केवल दो सक्रिय लाइनें हैं pathऔर core_collector

    #net my.server.com:/export/tmp
    #net user@my.server.com
    path /var/crash
    core_collector makedumpfile -c --message-level 1 -d 31
    #core_collector scp
    
  3. मैं यह सुनिश्चित करता हूं कि kdumpसेवा चल रही है, और kdumpमुझे अपने पुनर्निर्माण की आवश्यकता नहीं है initrd

    [root@host1 ~]# chkconfig --list kdump
    kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
    [root@host1 ~]# /etc/init.d/kdump restart
    Stopping kdump:                                            [  OK  ]
    Starting kdump:                                            [  OK  ]
    [root@host1 ~]# 
    
  4. फिर, मैं आरएचईएल 6 तैनाती गाइड से उधार ली गई इन कमांडों का उपयोग करके एक कर्नेल क्रैश को बल देता हूं : अध्याय 29। kdump क्रैश रिकवरी सेवा :

    फिर शेल प्रॉम्प्ट पर निम्न कमांड टाइप करें:

    echo 1 > /proc/sys/kernel/sysrq
    echo c > /proc/sysrq-trigger
    

    यह लिनक्स कर्नेल को क्रैश करने के लिए मजबूर करेगा

  5. सिस्टम क्रैश हो गया। मैं अपने सीरियल कंसोल पर प्रगति देख सकता हूं। मैं संदेश देखता हूं Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2, लेकिन इसके तुरंत बाद मुझे अजीब संदेश दिखाई देता है Usage: fsck.ext4, जो कुछ ऐसा दिखता है जो गलती से कॉल कर रहा है fsckबजाय इसके कि वह क्या कर रहा है। मुझे आउट-ऑफ-मेमोरी त्रुटि या किसी भी चीज का कोई उल्लेख नहीं दिखता है।

    host1.example.org login: SysRq : Trigger a crash
    BUG: unable to handle kernel NULL pointer dereference at (null)
    ...
    ... skipping 50 lines of output
    ...
    Creating block device ram8
    Creating block device ram9
    Creating Remain Block Devices
    Making device-mapper control node
    Scanning logical volumes
      Reading all physical volumes.  This may take a while...
      No volume groups found
      No volume groups found
    Activating logical volumes
      No volume groups found
      No volume groups found
    Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 )
    Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2
    Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize]
            [-I inode_buffer_blocks] [-P process_inode_size]
            [-l|-L bad_blocks_file] [-C fd] [-j external_journal]
            [-E extended-options] device
    
    Emergency help:
     -p                   Autom
    
  6. और फिर सिस्टम रिबूट (जो डिफ़ॉल्ट है)।

  7. जब सिस्टम ऑनलाइन वापस आता है, तो इसमें कुछ भी नहीं होता है /var/crash। मुझे लगता है कि क्रैश डंप नहीं लिखा गया था।

    [root@host1 ~]# ls -lA /var/crash/
    total 0
    [root@host1 ~]#
    
  8. मुझे पता है कि दुर्घटना डंप सामान्य रूप में काम कर सकते हैं। यदि मैं kdumpनिम्नलिखित विन्यास के साथ कोर डंप को किसी अन्य सिस्टम में कॉपी करना बताता हूं , तो kdump कोर होस्ट को सफलतापूर्वक अन्य होस्ट में लिख देगा:

    path vmcore
    ssh user@hostb.example.org
    sshkey /root/.ssh/kdump_id_rsa
    
  9. अगर मैं सेट default shellमें /etc/kdump.confऔर initrd के पुनर्निर्माण, और फिर प्रणाली दुर्घटना फिर मैं के बारे में एक से थोड़ा अधिक सूचनात्मक त्रुटि मिलती हैmount: can't find /mnt in /etc/fstab

    Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 )
    Saving to the local filesystem UUID=e720481b-1987-4c69-a867-f2b4cba3b312
    Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize]
    [-I inode_buffer_blocks] [-P process_inode_size]
    [-l|-L bad_blocks_file] [-C fd] [-j external_journal]
    [-E extended-options] device
    
    Emergency help:
     -p                   Automatic repair (no questions)
     -n                   Make no changes to the filesystem
     -y                   Assume "yes" to all questions
     -c                   Check for bad blocks and add them to the badblock list
     -f                   Force checking even if filesystem is marked clean
     -v                   Be verbose
     -b superblock        Use alternative superblock
     -B blocksize         Force blocksize when looking for superblock
     -j external_journal  Set location of the external journal
     -l bad_blocks_file   Add to badblocks list
     -L bad_blocks_file   Set badblocks list
    mount: can't find /mnt in /etc/fstab
    dropping to initramfs shell
    exiting this shell will reboot your system
    /sys/block #
    
  10. लेकिन अब, मैं फंस गया हूं।


सर्वर का मेक / मॉडल क्या है?
इविहित

यह एक X9DRW4 मदरबोर्ड और नवीनतम बायोस के साथ एक सुपरमाइक्रो है।
स्टीफन लासिवस्की

ओह। मैं HP PROLiants पर नवीनतम RHEL6 कर्नेल के साथ एक समान दुर्घटना कर रहा हूं । मैं सोच रहा था कि यह एक गहरा मुद्दा है।
ewwhite

मेरे लिए, यह एक बग की तरह थोड़ा सा दिखता है। लेकिन मुझे याद नहीं है कि आउटपुट कैसा दिखना चाहिए।
स्टेफन लासिवस्की

1
नमस्ते। क्या आपने इस मुद्दे को हल किया? मैं इसी तरह की समस्या का सामना कर रहा हूं।
चुल-वोओंग यांग

जवाबों:


5

खेल के लिए थोड़ा देर से लेकिन अगर आपको भविष्य के लिए kdump को कॉन्फ़िगर करने की आवश्यकता है:

मुझे लगता है कि पथ निर्देश विभाजन या फ़ाइल सिस्टम से निर्दिष्ट पथ निर्दिष्ट करता है। डिफ़ॉल्ट रूप से यह रूट एफएस है। यदि आपके पास fstab में / var के लिए एक अलग विभाजन है, तो यह क्रैश निर्देशिका को बाधित करेगा जब आपका सिस्टम सामान्य रूप से बूट होता है। यदि आप सामान्य रूप से बूट करने के लिए थे और अनमाउंट / var आप क्रैश / [UniqCoreDir] देखेंगे। आप इसे kdump.conf में "ext4 / PATH / TO / DEVICE" निर्देश जोड़कर समायोजित कर सकते हैं। इसके अलावा, आप एक अलग पथ का उपयोग कर सकते हैं जो कि आरोहित नहीं होगा।

बस एक अनुमान लेकिन / var तहत burried vmcores का एक नंबर हो सकता है।


2

अपने kdump initrd को / boot / check में अलग करें और अंतिम रास्ता देखने के लिए जांचें जिसे इसके डंप करने की कोशिश की जा रही है।

  • मुझे लगता है कि "पथ" विकल्प थोड़ा अजीब है, मैं शायद इसे डिफ़ॉल्ट पर छोड़ दूंगा या इसे स्पष्ट रूप से / var / क्रैश पर सेट कर दूंगा

  • क्या आपके पास मशीन को रीबूट करने वाले किसी प्रकार का वॉचडॉग है? यह शुरू होने से पहले मशीन को रीबूट करके बनाए जा रहे कोर को भी रोक सकता है।


मैं initrd की जाँच करूँगा और देखूँगा कि मुझे क्या मिला। path# 2 में विकल्प डिफ़ॉल्ट मार्ग है ( /var/crash)।
स्टीफन लासिवस्की

नहीं, मेरे पास मशीन को रिबूट करने वाला प्रहरी नहीं है। पता चला कि LSI कंट्रोलर + सैमसंग SSDs समय-समय पर उन कारणों से फ्रीज होते हैं, जिन्हें हम पूरी तरह से नहीं समझते हैं।
स्टीफन लासिवस्की

क्या आपको कोई प्रतिक्रिया मिली, क्योंकि वह बहुत पागल है, हो सकता है कि एक पावर ड्रॉ समस्या वोल्टेज को बहुत कम कर दे?
नहीं यूजरनेम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.