To ja dopiszę jeszcze coś takiego od siebie. Z punktu widzenia oprogramowania możesz spojrzeć na dysk jako ciąg bajtów (a nie grupę plików). Wystarczy na przykład pod Windows otworzyć plik o specjalniej nazwie:
\.\PhysicalDriveN
(N to numer dysku fizycznego)
Zakładając, że system operacyjny ci nie zabroni pisać po jego [dysku twardego] obszarach, możesz utworzyć i edytować jakiś własny plik poprzez ręczne dopisanie bajtów w odpowiednie miejsca partycji, powiedzmy do tablicy plików i obszaru danych. Możesz - taki jest fakt.
Jednak program twój musiałby mieć specjalne procedury zapisu na partycje FAT12, FAT32, NTFS i bóg wie, jakiej jeszcze - powiedzmy Ext3. Korzyść z obsługi przez system operacyjny jest taka, że używając jego zbioru funkcji, podajesz dane do zapisu, a o strukturę zapisu dba sam system. Twój program dzięki temu, korzystając z tej samej funkcji, potrafi (pośrednio - dzięki systemowi operacyjnemu) używać dowolnych typów partycji wspieranych przez system.
Co do idealnego systemu plików: to co dla jednych jest zaletą, dla innych jest wadą. Dzielenie dysku na małe jednostki jest zaletą dla małych plików, bo nie marnuje dużego obszaru, gdy nie wypełnisz pełnej jednostki, ale wadą dla dużych plików, bo potrzeba dużo małych jednostek (a ich opis czy struktura zajmują dodatkowe miejsce), zamiast kilku dużych. Jeśli zadbasz o bezpieczeństwo i operacje plikowe traktujesz jak transakcje (NTFS) lub operacje logowane (Reifeiser) zajmujesz dodatkowy obszar, którego użytkownik nie może poświęcić na dane. Jak dorzucisz do tego problemy związane z fragmentacją, szybkiem dostępem do małych i ogromnych plików, wsparciem wielu systemów szyfrowania lub hash'owania i informacji o plikach, sprawa się jeszcze bardziej komplikuje.
Dodatkowo komplikuje się już totalnie, kiedy chcesz napisać system plików dla Windows. Microsoft ustalił licencję IFSDDK (Installable File System, dawniej File System DDK - wydawanego osobno od Windows DDK) na regulamin zaporowy jak chodzi o dystrybucję własnego systemu plików przez drobnych programistów (pamiętam, że były tam na przykład obowiązkowe procedury certyfikacyjne dokonywane przez Microsoft, bo przecież na tym systemie plików ma opierać się współpraca jądra systemu z partycją - tak przynajmniej było jeszcze za czasów FSDDK, teraz nie wiem), aby wymusić na twórcach oprogramowania i użytkownikach ograniczenie się do systemów oferowanych natywnie przez ich system operacyjny.
Więcej info:
http://www.microsoft.com/whdc/driver/filterdrv/default.mspx
Dlatego ciężko w WindowsXP znaleźć wsparcie nawet dla systemów plików z Linux/Unix, czy innych systemów operacyjnych.