2016-10-18 1 views
0

Im Moment habe ich eine Datei mit Daten und einer Datenbank auf der gleichen Festplatte. Eine lang andauernde, atomare Einfügung könnte dazu führen, dass die Festplatte vor dem Festschreiben gefüllt wird. Gibt es trotzdem, dass ich die Datendatei mit einem symbolischen Link ersetzen kann, um ein paar hundert Gigabyte zu sparen, obwohl die Datenbank vermutlich die aktuelle Datei geöffnet hat? Für den Fall, dass es keine Lösung auf Dateisystemebene gibt und eine Aktion "Daten erneut öffnen und von Prüfpunkt ausführen" benötigt wird, verwende ich postgres 9.5 und die Datendatei wird von pg_dump generiert.Ersetzen von geöffneten Dateien mit Symlinks in Linux?

Meine Hauptfrage und Neugier ist über die Möglichkeit, Dateien mit Links zu ersetzen, ohne Programme zu unterbrechen, die sie geöffnet haben, aber ich bin motiviert durch eine Situation hier. Jede Kenntnis darüber, wie man mehr Speicherplatz mit dem Verzeichnis assoziieren kann, in dem die Datenbank lebt, ohne laufende laufende Programme zu unterbrechen, wäre ebenfalls praktisch.

+2

Nr. Symlink hat einen anderen Inode als die Originaldatei. –

Antwort

2

Es gibt keine Möglichkeit zu “ ersetzen ” eine Datei, die ein Prozess derzeit geöffnet hat.

Sie können jedoch das Dateisystem, auf dem sich die Datei befindet, im laufenden Betrieb erweitern. Wenn Sie LVM verwenden, ist in der Datenträgergruppe freier Speicherplatz mit dem Dateisystem vorhanden, und der Dateisystemtyp ermöglicht die Größenänderung.

Hier ist eine Lösung für das Dateisystem ext2 und seine Nachfolger:

  • den logischen Datenträger finden, wo Sie Ihre Datei

    # df /path/to/large/file 
    Filesystem   1K-blocks Used Available Use% Mounted on 
    /dev/mapper/datalv 
             991512 991500  12 100% /path/to 
    
  • Finden Sie die Volume-Gruppe, wo Ihre Datei befindet

    wohnt
    # lvdisplay -c /dev/mapper/datalv | cut -d: -f2 
    datavg 
    
  • Finden Die Größe des physischen Ausmaßes und wieviele davon frei sind

    Freier Speicherplatz ist 476 mal 4 MB oder 1904 MB.

  • erweitern das logische Volumen von 1 GB

    # lvextend -L +1G /dev/mapper/datalv 
    
  • das System Online-extn Datei Resize

    # resize2fs /dev/mapper/datalv 
    
Verwandte Themen