hn-classics/_stories/2007/9622569.md

18 KiB

created_at title url author points story_text comment_text num_comments story_id story_title story_url parent_id created_at_i _tags objectID year
2015-05-29T03:48:26.000Z The File System Paradox (2007) https://technet.microsoft.com/en-us/magazine/2007.11.windowsconfidential.aspx luu 73 34 1432871306
story
author_luu
story_9622569
9622569 2007

Source

Windows Confidential: The File System Paradox

This site uses cookies for analytics, personalized content and ads. By continuing to browse this site, you agree to this use. Learn more

[

]2

TechNet

  • [Products][3]
Products
* [Windows][4]
* [Windows Server][5]
* [System Center][6]
* [Microsoft Edge][7]
 
* [Office][8]
* [Office 365][9]
* [Exchange Server][10]
 
* [SQL Server][11]
* [SharePoint Products][12]
* [Skype for Business][13]
* [See all products »][14]
  • [IT Resources][3]
Resources
* [Channel 9 Video][15]
* [Evaluation Center][16]
* [Learning Resources][17]
* [Microsoft Tech Companion App][18]
* [Microsoft Technical Communities][19]
* [Microsoft Virtual Academy][20]
* [Script Center][21]
* [Server and Tools Blogs][22]
* [TechNet Blogs][23]
 
* [TechNet Flash Newsletter][24]
* [TechNet Gallery][25]
* [TechNet Library][26]
* [TechNet Magazine][27]
* [TechNet Wiki][28]
* [Windows Sysinternals][29]
* [Virtual Labs][30]
Solutions
* [Networking][31]
* [Cloud and Datacenter][32]
* [Security][33]
* [Virtualization][34]
  • [Downloads][3]
Updates
* [Service Packs][35]
* [Security Bulletins][36]
* [Windows Update][37]
Trials
* [Windows Server 2016][38]
* [System Center 2016][39]
* [Windows 10 Enterprise][40]
* [SQL Server 2016][41]
* [See all trials »][42]
* [Microsoft Download Center][43]
* [Microsoft Evaluation Center][44]
* [Drivers][45]
* [Windows Sysinternals][29]
* [TechNet Gallery][25]
  • [Training][3]
Training
* [Expert-led, virtual classes][46]
* [Training Catalog][47]
* [Class Locator][48]
* [Microsoft Virtual Academy][49]
* [Free Windows Server 2012 courses][50]
* [Free Windows 8 courses][51]
* [SQL Server training][52]
* [Microsoft Official Courses On-Demand][53]
Certifications
* [Certification overview][54]
* [Special offers][55]
* [MCSE Cloud Platform and Infrastructure][56]
* [MCSE: Mobility][57]
* [MCSE: Data Management and Analytics][58]
* [MCSE Productivity][59]
Other resources
* [Microsoft Events][60]
* [Exam Replay][61]
* [Born To Learn blog][62]
* [Find technical communities in your area][63]
* [Azure training][64]
* [Official Practice Tests][65]
  • [Support][3]
Support options
* [For business][66]
* [For developers][67]
* [For IT professionals][68]
* [For technical support][69]
* [Support offerings][70]
More support
* [Microsoft Premier Online][71]
* [TechNet Forums][72]
* [MSDN Forums][73]
* [Security Bulletins & Advisories][36]
Not an IT pro?
* [Microsoft Customer Support][74]
* [Microsoft Community Forums][75]

[United States (English)][76] [Sign in][77]

![Microsoft TechNet][78]

[Home][79] [Library][80] [Wiki][81] [Learn][82] [Gallery][83] [Downloads][84] [Support][85] [Forums][86] [Blogs][87]

We're sorry. The content you requested has been removed. You'll be auto redirected in 1 second.

[Issues][88] [TechNet Magazine 2007][89] [November 2007][90]

[November 2007][91] [Windows Confidential: The File System Paradox][92]

[Windows Confidential: The File System Paradox][92]

Windows Confidential: The File System Paradox

[Windows Administration: Changes to Offline Files in Windows Vista][93]

[Desktop Deployment: Simple, Scalable Deployment with BDD 2007][94]

[Communications: Exchange Edge Transport Servers at Microsoft: Part 2][95]

[Networking: Configure VPN Remote Access with ISA Server 2006][96]

[SQL Server: Optimizing SQL Server Query Performance][97]

[From the Editor: More Power to You][98]

[Toolbox: New Products for IT Pros][99]

[Exchange Queue & A: Secure E-Mail Protocols, Mysterious Spam, and More][100]

[Utility Spotlight: SMS Cmdlets for Windows PowerShell][101]

[The Cable Guy: Wireless Single Sign-On][102]

[Research Notes: Using High-Performance Computing in the Fight against HIV][103]

[Windows PowerShell: Writing Regular Expressions][104]

[Hey, Scripting Guy!: Desktop Management from beyond the Grave][105]

[Security Watch: Secure Access Anywhere][106]

[The Desktop Files: The Truth about Defragmentation][107]

[Field Notes: The Cod of Conduct][108]

[Windows Confidential: The File System Paradox][109]

[

TOC

][110]

Collapse the table of content

Expand the table of content

[ ][110]

This documentation is archived and is not being maintained.

This documentation is archived and is not being maintained.

Windows Confidential The File System Paradox

Raymond Chen

If you take a look around your hard drive, you probably have noticed that a good number of operating system files hang out in the root directory of the boot drive. If you take a closer look at those files, you may notice a theme: boot.ini, NTLDR, and NTDETECT.COM are critical boot files, and hiberfil.sys is the hibernation file. These are all files that are involved in the crucial first stages of booting the operating system or, in the case of hiberfil.sys, resuming from hibernation, and they have to go into the root of the boot drive. Why can't you move them somewhere else?

My colleague Adrian Oney explained: in order to read the boot files off the disk, you need the file system driver, but the file system driver is on the disk, which you can't read until you've loaded the file system driver. Oh no, Catch-22!

The vicious cycle is broken by having a miniature file system driver built into the critical boot files. This miniature driver knows just barely enough to locate files in the root directory and load them into memory. Those files can, in turn, get the operating system off the ground, at which point the real file system driver can take over and look for files in much fancier places like subdirectories.

![][111]

**  **

Hibernation follows a similar pattern. Hibernating the operating system means dumping the entire contents of memory into the hibernation file; restoring from hibernation entails sucking that file back into memory and pretending nothing happened. Again, it's another chicken-and-egg problem: to load the hibernation file, you need the file system driver, but the file system driver is in the hibernation file. If you keep the hibernation file in the root directory of the boot drive, the miniature file system driver can be used instead.

Those who have used early versions of MS-DOS® are well aware of this constraint on the location of the operating system boot files. The old SYS command made a boring old floppy disk into a magic bootable floppy disk. However, if you ran it on a floppy disk that already had data on it, there was a good chance the conversion would fail because early versions of MS-DOS required that the boot files occupy specific locations on the floppy disk in order for the boot sector to find them. Later versions of MS-DOS relaxed these requirements by making improvements to the boot loader, but even with the improved version, the system files still must reside in the root directory.

One customer asked, "Can I move the hibernation file into a subdirectory?" After all, why does it matter where the file is? The ACLs on the file would be the same regardless of where you put it. But these folks wanted to put it on a drive different from the boot drive and had been told that can't be done. They didn't really understand the reason for this restriction, so they tried an end run: well, if I can at least move it into a subdirectory, then I can create a directory and make that a junction that points to where I really want the hiberation file. Woo hoo—I relocated the hibernation file!

Of course, the miniature file system driver doesn't understand mount points, because mount points mean talking to the disk management service, and at the time the system is booting, the computer hasn't even loaded the operating system yet, much less some fancy advanced service that knows how to map drive letters back to ARC paths, and even if you somehow got that service running, you still have to find the device drivers for those other hard drives and load the corresponding file system drivers.

It's only a matter of time before somebody asks for a way to put the hibernation file on a DFS junction.

Raymond Chen's Web site, The Old New Thing, and identically titled book (Addison-Wesley, 2007) deal with Windows history and Win32 programming. His Web 2.0 name is Raymond, or maybe Chenster.

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.

 

Show: Inherited Protected

[Print ][112] [ Export (0) ][113]

[Print ][112] [ Share ][114]

[ ][114] [ ][114] [ ][114]

IN THIS ARTICLE

Is this page helpful? Yes No

Additional feedback?

1500 characters remaining

Submit Skip this

Thank you! We appreciate your feedback.

[Manage Your Profile][115]

|

[ ![Site Feedback][116] Site Feedback ][110]

Site Feedback

[x][110]

Tell us about your experience...

Did the page load quickly?

Yes No

Do you like the page design?

Yes No

Tell us more

  • [Flash Newsletter][117]
  • |
  • [Contact Us][118]
  • |
  • [Privacy Statement][119]
  • |
  • [Terms of Use][120]
  • |
  • [Trademarks][121]
  • |

© 2018 Microsoft

© 2018 Microsoft

[3]: [4]: https://technet.microsoft.com/windows [5]: https://technet.microsoft.com/library/bb625087.aspx [6]: https://technet.microsoft.com/library/cc507089.aspx [7]: https://technet.microsoft.com/microsoft-edge [8]: https://technet.microsoft.com/office [9]: https://technet.microsoft.com/en-us/office/dn788774 [10]: https://technet.microsoft.com/en-us/office/dn788775 [11]: https://msdn.microsoft.com/library/mt590198(v=sql.1) [12]: https://technet.microsoft.com/office/dn788776 [13]: https://technet.microsoft.com/office/dn788773 [14]: https://technet.microsoft.com/bb421517.aspx?wt.svl=more_centers_link [15]: https://channel9.msdn.com/ [16]: https://www.microsoft.com/evalcenter/ [17]: https://technet.microsoft.com/bb291022 [18]: https://technet.microsoft.com/dn440144 [19]: https://technet.microsoft.com/dn550853 "Microsoft Technical Communities" [20]: https://mva.microsoft.com/?CR_CC=200157774 [21]: https://technet.microsoft.com/scriptcenter [22]: https://blogs.technet.microsoft.com/serverandtools/ [23]: https://blogs.technet.microsoft.com/ [24]: https://technet.microsoft.com/cc543196 [25]: https://gallery.technet.microsoft.com/ [26]: https://technet.microsoft.com/library/default.aspx [27]: https://technet.microsoft.com/magazine/default.aspx [28]: https://social.technet.microsoft.com/wiki [29]: https://technet.microsoft.com/sysinternals [30]: https://technet.microsoft.com/virtuallabs [31]: https://technet.microsoft.com/network [32]: https://technet.microsoft.com/cloud/private-cloud [33]: https://technet.microsoft.com/security [34]: https://www.microsoft.com/en-us/server-cloud/solutions/virtualization.aspx [35]: https://support.microsoft.com/en-us [36]: https://technet.microsoft.com/security/bulletin [37]: https://support.microsoft.com/en-us/help/12373/windows-update-faq [38]: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview [39]: https://www.microsoft.com/en-us/evalcenter/evaluate-system-center-technical-preview [40]: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise [41]: https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016 [42]: https://www.microsoft.com/en-us/evalcenter/ "See all trials" [43]: https://www.microsoft.com/en-us/download [44]: https://www.microsoft.com/en-us/evalcenter/ [45]: https://www.microsoft.com/en-us/download/driver.aspx?q=driver [46]: https://www.microsoft.com/handsonlabs [47]: https://www.microsoft.com/en-us/learning/training.aspx [48]: https://www.microsoft.com/en-us/learning/find-partner.aspx [49]: https://mva.microsoft.com/ [50]: https://mva.microsoft.com/en-US/training-courses/windows-server-2012-training-technical-overview-8564?l=BpPnn410_6504984382 [51]: https://mva.microsoft.com/product-training/windows?CR_CC=200155697#!lang=1033 "Free Windows 8 courses" [52]: https://www.microsoft.com/en-us/learning/sql-training.aspx [53]: https://www.microsoft.com/en-us/learning/on-demand-online-courses.aspx [54]: https://www.microsoft.com/en-us/learning/certification-overview.aspx [55]: https://www.microsoft.com/en-us/learning/offers.aspx?intcmp=lexhpoffersmenubutton [56]: https://www.microsoft.com/en-us/learning/mcse-cloud-platform-infrastructure.aspx "MCSE Cloud Platform and Infrastructure" [57]: https://www.microsoft.com/en-us/learning/mcse-mobility-certification.aspx [58]: https://www.microsoft.com/en-us/learning/mcse-data-management-analytics.aspx [59]: https://www.microsoft.com/en-us/learning/mcse-productivity-certification.aspx [60]: https://events.microsoft.com/ [61]: https://www.microsoft.com/en-us/learning/offers.aspx [62]: https://borntolearn.mslearn.net/b/?Redirected=true [63]: https://www.technicalcommunity.com/default.aspx [64]: https://azure.microsoft.com/en-us/training/ [65]: https://www.mindhub.com/category-s/437.htm [66]: https://support.microsoft.com/gp/contactus81?Audience=Commercial [67]: https://msdn.microsoft.com/hh361695 [68]: https://technet.microsoft.com/ms772425 [69]: https://support.microsoft.com/en-us/assistedsupportproducts [70]: https://www.microsoft.com/en-us/microsoftservices/support.aspx [71]: https://premier.microsoft.com/ [72]: https://social.technet.microsoft.com/forums/ [73]: https://social.msdn.microsoft.com/forums/ [74]: https://support.microsoft.com/ [75]: https://answers.microsoft.com/en-us [76]: https://technet.microsoft.com# "Change your language" [77]: https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=13&ct=1519394883&rver=6.7.6640.0&wp=mcmbi&wlcxt=technet%24technet%24technet&wreply=https%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2f2007.11.windowsconfidential.aspx&lc=1033&id=254354&mkt=en-us [78]: https://i-technet.sec.s-msft.com/Areas/Epx/Themes/TechNet/Content/Images/BrandLogoTechNetNew.png?v=636531360060663294 [79]: https://technet.microsoft.com/ "Home" [80]: https://technet.microsoft.com/library/ "Library" [81]: https://social.technet.microsoft.com/wiki "Wiki" [82]: "Learn" [83]: https://gallery.technet.microsoft.com/ "Gallery" [84]: "Downloads" [85]: "Support" [86]: https://social.technet.microsoft.com/forums/en-us/home "Forums" [87]: https://blogs.technet.microsoft.com/ "Blogs" [88]: https://technet.microsoft.com/en-us/library/bb978517.aspx "Issues" [89]: https://technet.microsoft.com/en-us/library/bb978511.aspx "TechNet Magazine 2007" [90]: https://technet.microsoft.com# "November 2007" [91]: https://technet.microsoft.com/en-us/library/bb978463.aspx "November 2007" [92]: https://technet.microsoft.com# "Windows Confidential: The File System Paradox" [93]: https://technet.microsoft.com/en-us/library/2007.11.offline.aspx "Windows Administration: Changes to Offline Files in Windows Vista" [94]: https://technet.microsoft.com/en-us/library/2007.11.extendingbdd.aspx "Desktop Deployment: Simple, Scalable Deployment with BDD 2007" [95]: https://technet.microsoft.com/en-us/library/2007.11.edge2.aspx "Communications: Exchange Edge Transport Servers at Microsoft: Part 2" [96]: https://technet.microsoft.com/en-us/library/2007.11.isavpn.aspx "Networking: Configure VPN Remote Access with ISA Server 2006" [97]: https://technet.microsoft.com/en-us/library/2007.11.sqlquery.aspx "SQL Server: Optimizing SQL Server Query Performance" [98]: https://technet.microsoft.com/en-us/library/2007.11.fromtheeditor.aspx "From the Editor: More Power to You" [99]: https://technet.microsoft.com/en-us/library/2007.11.toolbox.aspx "Toolbox: New Products for IT Pros" [100]: https://technet.microsoft.com/en-us/library/2007.11.exchangeqa.aspx "Exchange Queue & A: Secure E-Mail Protocols, Mysterious Spam, and More" [101]: https://technet.microsoft.com/en-us/library/2007.11.utilityspotlight.aspx "Utility Spotlight: SMS Cmdlets for Windows PowerShell" [102]: https://technet.microsoft.com/en-us/library/2007.11.cableguy.aspx "The Cable Guy: Wireless Single Sign-On" [103]: https://technet.microsoft.com/en-us/library/2007.11.researchnotes.aspx "Research Notes: Using High-Performance Computing in the Fight against HIV" [104]: https://technet.microsoft.com/en-us/library/2007.11.powershell.aspx "Windows PowerShell: Writing Regular Expressions" [105]: https://technet.microsoft.com/en-us/library/2007.11.heyscriptingguy.aspx "Hey, Scripting Guy!: Desktop Management from beyond the Grave" [106]: https://technet.microsoft.com/en-us/library/2007.11.securitywatch.aspx "Security Watch: Secure Access Anywhere" [107]: https://technet.microsoft.com/en-us/library/2007.11.desktopfiles.aspx "The Desktop Files: The Truth about Defragmentation" [108]: https://technet.microsoft.com/en-us/library/2007.11.fieldnotes.aspx "Field Notes: The Cod of Conduct" [109]: https://technet.microsoft.com/en-us/library/2007.11.windowsconfidential.aspx "Windows Confidential: The File System Paradox" [110]: javascript:void(0) [111]: https://i-technet.sec.s-msft.com/dynimg/IC317445.gif [112]: https://technet.microsoft.com/en-us/library/2007.11.windowsconfidential(d=printer).aspx [113]: /en-us/library/export/help/?returnurl=%2fen-us%2flibrary%2f2007.11.windowsconfidential.aspx [114]: https://technet.microsoft.com# [115]: https://social.technet.microsoft.com/profile [116]: https://i-technet.sec.s-msft.com/Areas/Epx/Content/Images/ImageSprite.png?v=636531359935663243 [117]: https://technet.microsoft.com/cc543196.aspx [118]: https://technet.microsoft.com/cc512759.aspx [119]: https://privacy.microsoft.com/privacystatement [120]: https://technet.microsoft.com/cc300389.aspx [121]: https://www.microsoft.com/en-us/legal/intellectualproperty/Trademarks/