Hope you have read
This comparison table is taken from the book “Architecture and Design of the Linux Storage Stack” which I find useful to help understand the differences between the two.
| Journaling | Copy-On-Write | |
| Write handling | Changes are recorded in a journal before applying them to the actual file system | A separate copy of data is created to make modifications |
| Original data | Original data gets overwritten | Original data remains intact |
| Data Consistency | Ensures consistency by recording metadata changes and replaying them if needed | Ensures consistency by never modifying the original data |
| Performance | Minimal overhead depending on the type of journaling mode | Some performance gains because of faster writes |
| Space utilisation | Journal size is typically in MB, so no additional space is required | More space is required due to separate copies of data |
| Recovery times | Fast recovery times as the journal can be replaced instantly | Slower recovery times as data needs to be reconstructed using recent copies |
| Features | No built-in support for features such as compression or deduplication | Built-in support for compression and deduplication |