|
|
Developer Jan van Wijk releases Display File Systems version 2.76, file-system display & analysis utility. The archive (dfsee276.zip, 436,6Kb) was just uploaded on Hobbes.
The DFSee program is a disk and filesystem
browser with an emphasis on the
HPFS and FAT filesystems, disk partitioning
and a little bit NTFS.
It will support different file-systems
sometime in the future.
The program has been built while studying
the HPFS filesystem.
It's main purpose is getting to understand
the file-system as it resides
on the disk itself, in the data-structures
laid down in disk-sectors.
Over time, additional logic was implemented
to allow analysis of all
sorts of disk problems on HPFS volumes.
The tool has been used a few times over
the past years to analyse some
real-life disk problems in a large systems-integration
project.
Also it has proven very usefull in teaching
others the internals of HPFS
Most of my knowledge of the file-system
is based on the excellent lectures
"HPFS Internals" at the 1994, 95 and
96 ColoradOS/2 conferences by
Doug Azzarito and on peeking arround
on a lot of HPFS volumes using DFS.
Further improvements will probably be
in more advanced recovery commands
and other filesystems like NTFS and
EXT2 and in porting to other platforms.
The standard distribution, DFSEExxx.ZIP
contains executables for OS/2 Warp
(32-bit), 16-bit DOS and Windows-NT.
Change History
1.00 27-11-94
DHPFS initial version, hex dump super+spare blocks
1.39 20-07-95
32-bit port; Sector Lookup table; bug-fixes
1.52 13-09-95
new '/' cmd shortcut; First released version! <==
BBS
1.56 26-09-95
RUN cmd runs REXX dhpfs macro's
1.62 13-10-95
Added Free-space and inconsistency reporting
1.64 16-10-95
Cleanup for delivery on ColoradOS/2 CDROM
1.70 20-12-96
Update ColoradOS/2, DASD limits; REQUESTABLE (OS2FISYS forum)
1.87 19-01-97
Fixed MBR/EBR walk; multiple cmds using #, BM-labels in part
1.91 21-01-97
New fixroot, fixcp and saveto commands for recovery actions
2.00 03-02-97
Removable media (NEWDASD); (part) D: cmd; invisible primary
2.06 16-03-97
Updated ACL support on HPFS386; Scan badsectors
2.12 06-04-97
Added logical volume support using "DASD" type access
2.20 19-05-97
Win NT beta version; Search speedup; prio command; cleanup
2.24 10-06-97
Added Img and Sim commands; date/time on dirblocks;
2.25 15-06-97
Added Wrim command; Improved lock implementation (nested)
2.28 21-06-97
Added autobase command for HPFS (find HPFS partition start)
2.30 06-07-97
Improved 'find' syntax and functionality; Undelete support
2.32 20-07-97
Reporting & ALBLK fixes to saveto; new "ca" cmd CheckAlloc
2.35 18-08-97
Path info in Fnode display and "list" output; MEM cmd
2.37 24-08-97
Path display on find Fnode; Wildcard select on list +f
2.40 06-09-97
import/export of LSN lists; getbs/fixbs badsector mgmt
2.41 12-10-97
Multiple file UNDELETE with delfind/delshow/delsave cmds
2.42 18-10-97
Support for EA's in "saveto" and delsave cmds
2.43 28-10-97
Support for undelete of directories including EA's
2.47 11-11-97
Updated SLT error display; new check cmd (chkdsk); +/- cmd
2.50 24-11-97
HPFS checksum management; cs, edit and write cmd
2.51 30-11-97
More... help; fix checksum super; fix freespace reporting
2.52 07-12-97
check spare/super; BPB display; Specific FAT & NTFS commands
2.54 28-12-97
More FAT commands; generic More ...; fix DELFIND bug
2.55 25-01-98
DOS version; diskgeo cmd; More write capabilities; bugfixes
2.56 05-02-98
Fixed trap on HPFS major version > 2; VFAT long filenames
2.57 15-02-98
Name DFSee; VFAT Details; FAT Os2Ea display; "find" cleanup
2.58 22-02-98
Fixed More... bugs; Fixed FAT EA & label bug; show EA details
2.60 08-03-98
Single snlist; recover/saveto; dirfind, wipe; color in DFSNT
2.61 29-03-98
saveto xxx.DIR orphan naming; DispHex update; displ NTFS-MFT
2.62 30-03-98
Fixed missing 'wipe' documentation; More MFT-record display
2.63 19-04-98
Fixed DFSDOS WRIM and IM commands (file I/O); Fix "FS xxxx"
2.64 04-05-98
Small bug-fixes + support for named-pipe to LPT on sim/wrim
2.65 10-05-98
Fixed 'f* * xxx' bug + new % speed-up option; FAT32 support
2.67 04-06-98
Added optional LZW-compression on SIM and WRIM commands
2.68 07-06-98
Fixed memory-leak and hang on LZW (WRIM)
2.69 24-07-98
Fixed trap on big-sectors (CD); Removed extra LAN messages
2.70 28-07-98
Fixed date-time display for HPFS (bug was OS/2 only)
2.71 29-07-98
Fixed reporting large cylinder-nrs and added extra partinfo
2.72 30-07-98
New $ option to 'part' for size-info table
2.73 03-08-98
Temporary fix to avoid trap on HPFS 'vol' while logging
2.74 01-09-98
Fixed trap in 'WRIM' cmd when no compression was used
2.75 21-10-98
No default SLT generation on "part", "vol", "im" and "fs"
2.76 08-11-98
Changed default 'check' mask to 0xffffffff (all errors)
Terminology used
Sector
512 bytes of data (although other sizes exist!)
This is the smallest amount of data manipulated by the
disk subsystems and is also the basic allocation-unit
for the HPFS file-system
CHS
Cylinder Head Sector (addressing)
This is the classical way of addressing physical sectors
on a disk. It is used in the PC's BIOS, in partition tables
and in low-level disk-IO API's (IOCTL, INT-13).
In most implementations the addressing ranges are limitted
causing all sorts of problems with large disks/partitions.
Example: maximum cylinder=1024 limit for BIOS/INT-13
PSN
Physical Sector Number
This is the zero-based, unsigned-LONG, number for a
sector on a physical disk. Addressing on a disk using
PSN's id often refered to as Relative Block Addressing
(RBA) or Logical Block Addressing (LBA)
LSN
Logical Sector Number
This is the zero-based, unsigned-LONG, number for a
sector on a logical partition. The partition can be seen
as a linear sequence of sectors.
SLT
Sector/Cluster Lookup Table
An array of information about sectors or groups of sectors,
containing the type of the sector(s) and the LSN of a
directly related sector (usualy an Fnode).
It is currently implemented for HPFS only.
Cluster
A (small) group of adjecent sectors that are handled by the
operating system as one allocation-unit.
It is used on FAT filesystems to allow large partitions at
the cost of more wasted "slack" space, and on NTFS to balance
performance, slack-space etc.
HPFS does not use sector-clustering (or a cluster-size of 1!)
DFS will try to account for clustering where needed, for
example in size calculations and where sector/cluster pointers
are used in the file-system internal structures.
Partition
An area on a physical disk that holds a single logical
file-system like FAT, HPFS, Boot-manager, NTFS etc.
There is an index to find partitions in the form of a
set of partition-tables in the MBR/EBR chain.
MBR
Master Boot Record
The first sector on the physical disk, located at PSN 0 =
Cylinder 0, Head 0, Sector 1
It contains the initial boot code called from the BIOS and
the main partition table that holds the primary partitions
and the start of the chain of extended boot records (EBR).
EBR
Extended Boot Record
It contains no boot code but only a partition table that
holds the location of a single logical partitions.
It usualy is located on the cylinder just before the actual
logical partition itself, at Head 0, Sector 1.
Each EBR will also point to the next EBR if more logical
partitions exist on the same disk.
Volume
A logical volume as seen by the active operating system,
with a logical drive-letter associated to it.
It can be either a hard-disk partition with a filesystem
recognized and mounted by the operating system, or some
other storage-medium like floppy disk or CD-Rom.
Note: Network drives or other "virtual" file-systems can also
be refered to as volumes. However, DFSee will not be able
to access them because such devices usualy cannot be
accessed using "open volume" (DASD) methods.
Shortname
The leading part of a filename, as contained in an HPFS fnode
and usefull for undelete. The maximum length is 15 characters
LsnInfo
A value combining an LSN and a (small) informational value in
a single 32-bit number. It can be kept in the sector-list and
the sector lookup table, most operations will recognize and
handle it correctly.
On example of usage is the directory-sector LSN plus the index
of a directory-entry for (V)FAT directories.
LsnInfo 78000345 combines LSN 00000345 with index 7 and a
single bit to mark it as an LsnInfo value (flag 0x08000000)
Sector list A list
of sector numbers (LSN) or LsnInfo combination-values
that can be manipulated as a whole with several commands like
export, import, getbs, fixbs, dirfind, delfind, delsave etc.
CONTACT AUTHOR:
Jan van Wijk
http://www.fsys.demon.nl