I just lost 44 GB of data that I downloaded in the past two hours. My PC started to get laggy and it got stuck so I just shut it down believing that all will be well since the data has already been written to disk…

  • @[email protected]
    link
    fedilink
    English
    31 year ago

    If 44GB had not been flushed to disk yet then that implies that OP has >44GB of RAM in use as page cache. SSD write caches are only around 2GB while HDD write caches are not more than about 512MB. I don’t know how much RAM OP has but this seems unlikely to be the case.

    I would bet on one of the following:

    • the transfer was still in progress when the system was halted
    • the transfer was not a network download but actually a copy from another locally mounted partition and the OS was still transferring data
    • the filesystem driver did write that 44GB to inodes but didn’t link the inodes into the filesystem yet, in which case the filesystem’s fsck tool should be able to recover data blocks that were already written
    • OP is using a filesystem which does not use either journaling or COW (eg. FAT32) in which case the data which was written but not linked into the filesystem is lost as orphaned inodes.

    3 & 4 being the reason I was asking what filesystem OP is using.

    Only copy-on-write filesystems are safe here as they don’t overwrite old data.

    COW filesystems make no difference in this case since this was not data overwriting an existing file. They still have the same behavior with write caching in the OS and on the drive and still require a tool (eg. btrfs-check) to recover unlinked changes in the event of a crash.

    NTFS is not safe.

    NTFS is a journaling filesystem and is crash-consistent. That doesn’t mean it can do “magic” if the data hasn’t hit the disk, but it does mean that it won’t corrupt the filesystem or lose data which was already written in the case of a crash.

    • @AProfessional
      link
      English
      11 year ago

      I didn’t mean OPs case.

      Journaling just means it knows what failed. Without CoW you will corrupt data.