PreReq: this “Previous Versions” Explorer integration works in firmware versions after 1.4.0. So make sure your on the latest version of the ReadyDATA firmware. The snapshots work at any firmware, thats one of the most basic/main features of ZFS.
The ReadyDATA by Netgear. One of the most amazing products to date. Literally gives you Data along with a time dimension. And all for less then big money enterprise like EMC.
Although you can get the same from FreeNAS. You cant get the same support, nor the same type of engineering power. The Readydata is backed by some really powerful devs that know how to work it.
Anyhow, im done talking about how much I love the Readydata. Now its time to talk about:
Snapshots and their Rollback feature, then how that pertains to “Previous Versions” feature in Windows Explorer (a Samba Feature)
Snapshots with ZFS
First of all when you store your data on the Readydata it is saved on a ZFS filesystem, which is a Copy on Write filesystem, which means all of your writes happen in new places. That way no data gets deleted, until it absolutely has to. The data that does get deleted, is old data that is no longer needed. ZFS only actually keeps one previous copy of the data. When data is written an inode points at the data. When new data is written, a new data point is written with a new inode pointing at the data. When you overwrite the data, the inode associated with it gets updated to point at the new data point. The old data still exists. The inode gets updated last( so if you lose power during the write, you still have your old data, instead of some half new half old curropted data – this is called Data Integrity people and its what makes ZFS amazing, well one of its great features). There are backdoor ways to go back to that point in time before the write, but thats not the way to go back in time with ZFS. The real way is to take Snapshots. When you take a snapshot, the inode pointing at the current data gets duplicated, so now you have two inodes pointing at the same data. Any writes update only the new inodes. So now you can rollback in time. Note these snapshots are instant to make. Even if you have multiple terabytes to make. Its also instant to go rollback to those inodes/snapshots. One thing to note once you rollback to a point in time, you cant unrollback (well technically you can but there was probably to many writes the instant after and it might of curropted the future points), you also cant rollforward to a newer snapshot.
—Time proceed forward in this direction—>
If I were to roll back to Snap2:
Side note: I put 3 dots and Now a little after Snap2, because no matter how hard you try, there is no way you can rollback and immediately stop data from being writen by other processes. Time moves forward.
“Previous Versions” Rollback
Here is an article showing the basics of Previous Versions (when its not linked to the Readydata, however it still looks the same): http://its.uiowa.edu/support/article/2099
The Readydata integrates with windows with grace using Samba, it can also be joined to a Windows Domain, wherein it aggregates the users and groups. Permissions can then be applied from the Domain and the Readydata stores the permissions in special metadata.
Previous Versions in windows is a way to snapshot your current state and go back in time, sound familiar, well its alike to Snapshots in the Readydata, however Windows doesn’t use ZFS. Well Samba Server engineers wrote an addon to integrate Samba Server with Windows Client “Previous Version” Feature. Thus Windows Client can right click on their file/folder or share and go to the “Previous Versions” tab and immediately see every revision of a file/folder or share – its listed right there in front of you. You can also Rollback(refereed to as restore), open (pull a file out of the snapshot and put it on the system). With an open what happens, is windows asks the Readydata to look inside a snapshot and pull a file[s]/folder[s] out and put it on the local Windows box(can even put it back on the Share). Also there is the ability to Rollback/Restore this is slightly different with the same goal as ZFS Snapshots, except it cant tell the Readydata to do a full back. what it does is actually pull a specified snapshot and grab that folder or share or file, and then it looks at the differences and writes the differences out to the disk. These writes take time. Note that deletes to a filesystem is simply writes, its updating inodes to not point at data anymore, invalidating inodes, thus making the map of free space bigger (ZFS keeps a map in its back pocket of where there is freespace and user space: ttps://blogs.oracle.com/bonwick/entry/space_maps )
Differences, Pros and cons:
Snapshots Rollback from the Readydata GUI:
A rollback, tells ZFS to look at different time-stamped inodes/data, making anything newer (snapshots in the future of rollback snapshot) allocateable(can be overwritten/deleted).
– Pro: Instant Rollback, no need to grab a cup of coffee to wait
– Con: Cant go Forward, once you rollback you roll back. Your stuck
Snapshot Rollback from the “Windows Explorer” GUI:
Again this is a samba feature on the Readydata allowing snapshots on the readyReadydataata to be viewed as previous versions of a file/folder or a share. This allows ability to restore (also known as rollback), also you can browse the old folder/share and pick and choose which files to copy and copy them out to a new location (New note: This browsing is readonly, you cant write to an old snapshot, only way to “write to an old snapshot” is rollback then write -I put that in quotes, because even that move is writing to new places, not within a snapshot)
– Pro: To a Readydata, a “Previous Versions” rollback, looks like writes and deletes instead of an actual ZFS rollback. The writes coming from the snapshot, and being written on the current point in time
– Pro: The concept of not being able to go forward after a rollback, doesn’t apply here – kinda – from the Windows “Prebious Versions” you will see the future versions (even after rollback) but dont try rolling forward to them, they wont work. To “Rollforward” instead do it from Readydata Snapshots menu and just roll back to your latest snapshot (or more current then rolledback to state). It will be an instant “Rollforward”. I put “Rollforward” in quotes because in reality its just a “rollback”, why? Because from the Readydata point of view, the “Previous Versions” Rollback is just some write(and deletes) happening to a volume, not an actual “rollback”, so you still have the ability to go back in time with the actual Readydata snapshots.
– Con: Cant go forward from Window’s “Previous Versions, even though you can from Readydata (as described in last point)
– Con: This whole process of grabbing older data (whether its an open and copy, or a restore/rollback) and putting it on the Readydata, is slower then a ZFS Snapshot Rollback. The “Previous Versions” copy or rollback actually grabs data and has to write it, writing takes time (your limited by the speed of your volume)
So here is an example:
—Time proceed forward in this direction—>
Lets rollback from Now to Snap2 using “Previous Versions” Rollback:
Between now0 and (Snap2): It wrote the difference between Now and Snap2 (notice can still rollback). Then of course we couldnt stop time from going forward immediately after the restore, so your placed in a new Now called now1.
Technically with this point of view it seems like you should be able to “Rollforward” (in reality backwards) to for example Snap3 or Snap4 or Snap5 using “Previous Versions”, but no it doesnt allow it. However ZFS will allow it, as discussed before.
So if you wanted to then roll foward to Snap4: