Safe fsck / consistent backup while mounted
Hi!
In mailing list debian-user-german we are discussing safe ways to do a fsck when mounted.
I tested with Ext4 that fsck -nf works either with mount -o remount,ro or fsfreeze -f while writing with:
I=0; while true ; let I=I+1 ; do touch /boot/test$I ; sleep 0.2 ; done
In the read only mount case the write application returns errors, in the fsfreeze case Linux kernel stacks the changes in memory, but the fsck reports no errors like it should.
Now I thought about a way to safely backup a MySQL or other database - without long service interruption:
- Tell DB to turn itself into consistent state and freeze there
- sync / btrfs filesystem sync ; fsfreeze -f /mountpoint
- btrfs subvolume snapshot
- fsfreeze -u /mountpoint
- Tell DB to continue business as usual
My questions are:
1) Would this work?
2) Is the sync needed? And if so how to avoid the race condition between the sync and the fsfreeze invocation? Reading from the fsfreeze manpage I understand that fsfreeze allows all ongoing transactions to complete. But does that include everything what sync would bring to disk?
3) Is the fsfreeze needed at all? Does btrfs subvolume freeze the filesystem prior to the snapshot? The manpage doesn´t tell it.
Thanks,
Signature · 2 lines
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Quoted 3 lines · Martin Steigerwald
Hi!
In mailing list debian-user-german we are discussing safe ways to do =
a
Quoted 3 lines
fsck when mounted.
I tested with Ext4 that fsck -nf works either with mount -o remount,r=
o or
Quoted 3 lines
fsfreeze -f while writing with:
I=3D0; while true ; let I=3DI+1 ; do touch
/boot/test$I; sleep 0.2 ;=
done
Quoted 2 lines
In the read only mount case the write application returns errors, in =
the
Quoted 2 lines
fsfreeze case Linux kernel stacks the changes in memory, but the fsck reports no errors like it should.
for online fsck you can use scrub, it checks at least partially the consistency.
Quoted 3 lines
Now I thought about a way to safely backup a MySQL or other database =
-
Quoted 7 lines
without long service interruption:
- Tell DB to turn itself into consistent state and freeze there
- sync / btrfs filesystem sync ; fsfreeze -f /mountpoint
- btrfs subvolume snapshot
- fsfreeze -u /mountpoint
- Tell DB to continue business as usual
I'd just take a snapshot and backup from there. As a snapshot is a consistent image of the filesystem at the time the snapshot is taken, and every database is required to always have an at least recoverable state on disk, the snapshot represents a state where your DB can recover from.
Quoted 6 lines
My questions are:
1) Would this work?
2) Is the sync needed? And if so how to avoid the race condition betw=
een
Quoted 1 line
the sync and the fsfreeze invocation? Reading from the fsfreeze manpa=
ge I
Quoted 1 line
understand that fsfreeze allows all ongoing transactions to complete.=
But
Quoted 6 lines
does that include everything what sync would bring to disk?
3) Is the fsfreeze needed at all? Does btrfs subvolume freeze the filesystem prior to the snapshot? The manpage doesn=B4t tell it.
Thanks,
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 3 lines · Martin Steigerwald
Hi!
=20
Now I thought about a way to safely backup a MySQL or other database =
-=20
Quoted 10 lines
without long service interruption:
=20
- Tell DB to turn itself into consistent state and freeze there
- sync / btrfs filesystem sync ; fsfreeze -f /mountpoint
- btrfs subvolume snapshot
- fsfreeze -u /mountpoint
- Tell DB to continue business as usual
=20
My questions are:
2) Is the sync needed?
I'm not sure. In some cases it might not be: E.g. If the database uses fsync() to save the data when you tell it to go into a consistent state= ,
there would be no need to have a separate sync. It shouldn't hurt, however.
Quoted 2 lines
3) Is the fsfreeze needed at all? Does btrfs subvolume freeze the=20 filesystem prior to the snapshot? The manpage doesn=C2=B4t tell it.
The fsfreeze should not be needed. The btrfs subvolume snapshot command takes an atomic snapshot of the current subvolume state.
--=20
Calvin Walton <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 9 lines · Martin Steigerwald
Quoted 9 lines
Now I thought about a way to safely backup a MySQL or other database - without long service interruption:
- Tell DB to turn itself into consistent state and freeze there
- sync / btrfs filesystem sync ; fsfreeze -f /mountpoint
- btrfs subvolume snapshot
- fsfreeze -u /mountpoint
- Tell DB to continue business as usual
Quoted 3 lines
Quoted 3 lines
My questions are:
1) Would this work?
It should do, and it is common way to backup or check high availability databases.
About a year ago I was responsible for a database backup and checking system at a large blue chip company. The database was Informix, and it's files where kept on a Netapp storage appliance, but the basic principle was the same.
The database was frozen temporarily, a snapshot taken, and then the database un-frozen. The snapshot was then made writable, and was then mounted by the database engine and checked for errors. The live database is only off line for a few seconds so the users don't notice, especaly if the snapshot is taken at night when there are few users.
-- David Pottage