Methods and systems for reducing write amplification and over-provisioning of flash memory devices are disclosed herein. The approaches described herein are especially useful for decreasing write amplification and over-provisioning in the case of small files or files with gradually growing content. In the case of smaller files, small portions or small updates to files are stored in a NAND flash page of a Journal area. This approach both decreases write amplification and over-provisioning, and also improves garbage collection efficiency. For gradually growing file content, different updates to the file can be stored in Journal areas of different logs. Every diff/update will share space in a NAND flash page with updates of other files. Subsequently, all available updates in the Journal Area for the same logical block of the growing file will be joined and saved if the total amount of updates will be equal to NAND flash page size.