On 2013-06-06 23:28:19 +0200, Christian Ullrich wrote: > * Heikki Linnakangas wrote: > > >The current situation is that if you run out of disk space while writing > >WAL, you get a PANIC, and the server shuts down. That's awful. We can > > >So we need to somehow stop new WAL insertions from happening, before > >it's too late. > > >A naive idea is to check if there's enough preallocated WAL space, just > >before inserting the WAL record. However, it's too late to check that in > > There is a database engine, Microsoft's "Jet Blue" aka the Extensible > Storage Engine, that just keeps some preallocated log files around, > specifically so it can get consistent and halt cleanly if it runs out of > disk space. > > In other words, the idea is not to check over and over again that there is > enough already-reserved WAL space, but to make sure there always is by > having a preallocated segment that is never used outside a disk space > emergency.
That's not a bad technique. I wonder how reliable it would be in postgres. Do all filesystems allow a rename() to succeed if there isn't actually any space left? E.g. on btrfs I wouldn't be sure. We need to rename because WAL files need to be named after the LSN timelineid... Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers