Op een aantal servers die ik beheer gebruiken we sinds kort DRBD + Heartbeat zodat we een NFS- FTP- en MySQL-server hebben die altijd beschikbaar is. Dit systeem werkt prima, er raakt geen data kwijt en als er een netwerkverbinding uitvalt neemt de andere server het na een paar seconden zonder problemen over.
Maar... Als je handmatig Heartbeat stopt zodat de andere server het over gaat nemen dan gaat het mis. Ook als je een hb_takeover draait (waarmee dus eigenlijk het zelfde gebeurt) werkt het niet.
Zodra je de boel stopt doet heartbeat het volgende:
• MySQL stoppen
• proftpd stoppen
• NFS stoppen
• IP-adres van de FTP- en NFS-servers vrijgeven
• 3 seconden wachten
• Alle DRBD-filesystems unmounten
• DRBD vertellen dat alle partities in de stand 'secondary' moeten komen te staan
Bij het unmounten van alle DRBD-filesystems gaat het mis. Het systeem kan vaak een of twee filesystems niet unmounten en daardoor blijft alles hangen. Heartbeat kan z'n resources niet helemaal vrijgeven en de andere machine neemt het niet over.
Na wat verder onderzoek blijkt dat bij het unmounten zo'n beetje alle processen die op het systeem draaien ineens bestanden geopend lijken te hebben op de filesystems die ik wil unmounten. 'fuser -m /home' geeft dan een lijst van zo'n beetje alle processen die draaien. 'lsof /home' daarentegen geeft een lege lijst, wat ook de bedoeling is.
Maar omdat er nog files geopend zijn kan het filesystem niet geunmount worden en kan DRBD die disk niet vrijgeven. En dat is best wel een probleem. Ook bij een reboot of shutdown levert dit problemen op, een reboot/shutdown blijft soms ook tot in den eeuwigheid hangen totdat die filesystems geunmount kunnen worden.
Heeft iemand enig idee hoe dit kan komen? Hoe er dus 'spook-filehandles' ontstaan?
Maar... Als je handmatig Heartbeat stopt zodat de andere server het over gaat nemen dan gaat het mis. Ook als je een hb_takeover draait (waarmee dus eigenlijk het zelfde gebeurt) werkt het niet.
Zodra je de boel stopt doet heartbeat het volgende:
• MySQL stoppen
• proftpd stoppen
• NFS stoppen
• IP-adres van de FTP- en NFS-servers vrijgeven
• 3 seconden wachten
• Alle DRBD-filesystems unmounten
• DRBD vertellen dat alle partities in de stand 'secondary' moeten komen te staan
Bij het unmounten van alle DRBD-filesystems gaat het mis. Het systeem kan vaak een of twee filesystems niet unmounten en daardoor blijft alles hangen. Heartbeat kan z'n resources niet helemaal vrijgeven en de andere machine neemt het niet over.
Na wat verder onderzoek blijkt dat bij het unmounten zo'n beetje alle processen die op het systeem draaien ineens bestanden geopend lijken te hebben op de filesystems die ik wil unmounten. 'fuser -m /home' geeft dan een lijst van zo'n beetje alle processen die draaien. 'lsof /home' daarentegen geeft een lege lijst, wat ook de bedoeling is.
Maar omdat er nog files geopend zijn kan het filesystem niet geunmount worden en kan DRBD die disk niet vrijgeven. En dat is best wel een probleem. Ook bij een reboot of shutdown levert dit problemen op, een reboot/shutdown blijft soms ook tot in den eeuwigheid hangen totdat die filesystems geunmount kunnen worden.
Heeft iemand enig idee hoe dit kan komen? Hoe er dus 'spook-filehandles' ontstaan?