Mam aplikację Django z zapleczem postgresql. Postgresql od czasu do czasu tworzy pliki tymczasowe - może to zabijać, jeśli miejsce na dysku jest krytyczne (jak w moim przypadku).
Jednym ze sposobów rozwiązania tego problemu jest utworzenie dowiązania symbolicznego do innej lokalizacji magazynu, w której miejsce na dysku nie stanowi wąskiego gardła. W moim przypadku postgresql przechowuje pliki tymczasowe pod adresem /$PGDATA/base/pgsql_tmp
. Mam zamontowany duży dysk SSD /mnt
, więc chcę, aby pliki tymczasowe tam rezydowały. Należy się tym zająć:
ln -sTf /mnt/pgsql_tmp $PGDATA/base/pgsql_tmp
chown -R postgres /mnt/pgsql_tmp #ensuring user 'postgres' has the right perms
chmod o+x /mnt
Zanim zrobiłem to w produkcji, postanowiłem przetestować to lokalnie. Stworzyłem /mnt
i /pgsql_tmp
na pulpicie, a następnie spróbowałem ln -sTf /home/hassan/Desktop/mnt/pgsql_tmp /home/hassan/Desktop/pgsql_tmp
.
Ale to mi daje ln: ‘/home/hassan/Desktop/pgsql_tmp’: cannot overwrite directory
. Czy ktoś może wskazać, co robię źle? Będąc neofitą, naprawdę próbuję owinąć głowę, jak to działa.
T
if
flagiln
, a potem myślę, że nie powinien tego robić w ogóle. Po pierwsze, jest nieprzejrzysty. Po drugie, bazy danych uwielbiają mieć wszystko pod kontrolą, a nawet możliwe jest, że system nie otworzy takiego pliku, ponieważopen()
można powiedzieć, że wywołania traktują dowiązania symboliczne jako błędy. Powodem jest to, że linki symboliczne mogą wskazywać niemal wszędzie. Pierwszym wyborem powinna być zmiana konfiguracji bazy danych.