NTFS: A File System with Integrity and Complexity

Interview with Dr Gary Kimura, co-developer of
NTFS

Dr Gary Kimura is Professor Department of Computer Science & Engineering at the University of Washington

What was your background before you started?

I was a member of the Windows NT team, the kernel group. We
also wrote FAT and HPFS for NT, for the first NT shipment.

What tools were used to create NTFS?

It was a new OS, so there were few tools. Just the usual
kernel debugger. DBG.

How long did it take?

It took a few years longer than we anticipated. We had the
group formation and started meetings in 1989 and the first SDK was released in
1992. So that’s about 3 years

How many people were involved?

Myself, Tom Miller, Brian Andrew, and David Goebel.

What were the biggest challenges?

It was easier because we could create our own APIs, and had
already hashed out FAT for NT. There were nuances for NT interfacing. The code
had to work closely with the cache manager and memory manager.

NTFS self-hosted itself and that was a challenge for a file
system. Unlike software where if you get corrupt memory you can just reboot. If
you corrupt the file system it’s a total loss. Our file system data persisted
across reboots. We had to be very mindful of that.

Do you recall any particularly difficult bugs?

Nothing in particular since it was our 3rd File
system under NTFS. Journaling required a lot of work. If the system crashed
the NTFS recovery log had to be played back before we could continue. In that
version only metadata for system files were transacted, not the user data.

Do you have any lessons learned from the experience?

In hindsight, the architecture was done for what we thought
was a really big machine. A PC didn’t even have 1 GB of RAM yet. Can you
imagine that? The largest disk was small, not as big as today. We designed NTFS
to stretch out to 64-bit but the rest of the OS wasn’t designed for that yet.
So they didn’t have to re-architect that part.

Have you kept up with recent NTFS features?

No, not really.

What are your recent interests?

I enjoy teaching at the undergrad level. I try to embark the
hard lessons learned from my own experience.

Do you have any advice for people developing operating
systems today?

No technical advice. Just keep your life in balance. It is
seductive work and can be all-consuming. It can consume too much of your time
and life.

Do you keep in touch with the original NTFS team?

Yes, we get to together to socialize and drink beer. Once in
a while I get them to come over for a guest lecture.

Summary

NTFS is complex and yet has a highly functional elegance. It
has benefited from years of testing and continued development.

References

91 Comments

  1. 2010-11-29 10:17 pm
    • 2010-11-30 12:08 am
      • 2010-11-30 1:36 am
      • 2010-11-30 1:42 am
        • 2010-11-30 11:47 am
          • 2010-11-30 12:20 pm
          • 2010-11-30 5:57 pm
          • 2010-12-01 8:56 pm
    • 2010-11-30 12:09 am
  2. 2010-11-29 10:35 pm
    • 2010-11-29 11:33 pm
      • 2010-11-29 11:59 pm
    • 2010-11-30 3:24 am
      • 2010-11-30 6:45 am
        • 2010-11-30 3:49 pm
  3. 2010-11-29 10:38 pm
  4. 2010-11-29 11:05 pm
    • 2010-11-30 12:43 am
    • 2010-11-30 3:25 pm
      • 2010-12-03 10:38 am
        • 2010-12-04 5:45 pm
  5. 2010-11-29 11:07 pm
    • 2010-11-29 11:40 pm
      • 2010-11-30 6:04 am
  6. 2010-11-29 11:15 pm
  7. 2010-11-29 11:21 pm
    • 2010-11-29 11:30 pm
    • 2010-11-30 12:19 am
      • 2010-11-30 4:48 am
    • 2010-11-30 8:44 am
  8. 2010-11-30 12:00 am
    • 2010-11-30 12:45 am
      • 2010-11-30 8:30 pm
        • 2010-11-30 8:39 pm
    • 2010-11-30 1:58 pm
  9. 2010-11-30 12:12 am
    • 2010-11-30 6:12 am
  10. 2010-11-30 12:16 am
    • 2010-11-30 3:34 pm
      • 2010-11-30 4:23 pm
      • 2010-12-01 11:20 am
        • 2010-12-01 2:54 pm
          • 2010-12-01 7:01 pm
          • 2010-12-01 9:27 pm
          • 2010-12-01 11:18 pm
          • 2010-12-03 6:41 pm
  11. 2010-11-30 1:27 am
    • 2010-11-30 2:06 pm
    • 2010-11-30 6:08 pm
      • 2010-11-30 8:39 pm
        • 2010-12-01 12:11 am
    • 2010-11-30 6:15 pm
  12. 2010-11-30 1:31 am
  13. 2010-11-30 2:38 am
    • 2010-11-30 12:41 pm
  14. 2010-11-30 2:50 am
    • 2010-11-30 7:48 am
      • 2010-11-30 1:08 pm
        • 2010-11-30 3:46 pm
          • 2010-12-01 12:00 pm
          • 2010-12-01 10:14 pm
    • 2010-11-30 12:44 pm
  15. 2010-11-30 6:01 am
  16. 2010-11-30 7:22 am
    • 2010-11-30 2:09 pm
      • 2010-11-30 6:31 pm
  17. 2010-11-30 8:52 am
    • 2010-11-30 6:18 pm
  18. 2010-11-30 9:55 am
    • 2010-11-30 12:31 pm
      • 2010-12-01 8:45 am
        • 2010-12-01 12:02 pm
          • 2010-12-01 6:57 pm
  19. 2010-11-30 10:27 am
  20. 2010-11-30 10:57 am
    • 2010-11-30 8:10 pm
      • 2010-11-30 8:27 pm
        • 2010-12-01 10:28 pm
  21. 2010-11-30 11:39 am
    • 2010-11-30 8:14 pm
      • 2010-11-30 8:38 pm
        • 2010-11-30 8:51 pm
        • 2010-11-30 8:52 pm
        • 2010-11-30 9:06 pm
  22. 2010-11-30 12:33 pm
  23. 2010-11-30 1:55 pm
  24. 2010-11-30 8:59 pm
    • 2010-11-30 9:09 pm
  25. 2010-12-01 3:04 pm
  26. 2010-12-02 12:36 pm
    • 2010-12-02 6:50 pm