I am sorely tempted to write a program which runs from a bootable CD, whose only purpose is to do offline defragmentation/optimization of NTFS.
It looks horribly complex at this point, but I have been reading up on the technology I would probably need. Such as, and I am not kidding, the El Torito Specification.
I've been reading up on the NTFS file system in general (and I have really only just begun), and it seems that it is fairly complex. So complex in fact that the early *nix NTFS drivers only supported read only for fear of corrupting the system. The ones that support writing now, are all written to fail safely.
I would follow the same pattern. Make a read only disk checker, then make a defragmenter, which would only do known safe operations with lots of sanity checking.
Also I read the Microsoft article on NTFS, and while there is a lot there it didn't look any more complicated to me than Citadel or Logos in terms of its underlying data structures. The hardest structure to understand was a B+ tree.
It may already exists, but I am wanting to learn the boot from a CDRom process as well, and it would make a nice tool. If I get really ambitious I could make a universal file system defragger/checker for all types of file systems, but will see how far I get with this one. :)
Comments
I would follow the same pattern. Make a read only disk checker, then make a defragmenter, which would only do known safe operations with lots of sanity checking.
Also I read the Microsoft article on NTFS, and while there is a lot there it didn't look any more complicated to me than Citadel or Logos in terms of its underlying data structures. The hardest structure to understand was a B+ tree.
It may already exists, but I am wanting to learn the boot from a CDRom process as well, and it would make a nice tool. If I get really ambitious I could make a universal file system defragger/checker for all types of file systems, but will see how far I get with this one. :)