You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2. Copy chunkdisk-x64.exe and winspd-x64.dll to C:\Program Files (x86)\WinSpd\bin\.
14
+
2. Copy chunkdisk-x64.exe and winspd-x64.dll (See [issues](#issues)) to C:\Program Files (x86)\WinSpd\bin\.
11
15
3. Merge install.reg.
12
16
4. Create a `.chunkdisk` file. For example:
13
17
@@ -23,19 +27,21 @@ I'm not responsible for the data stored using chunkdisk!
23
27
7. Run `diskmgmt.msc` to open Disk Management, [initialize the disk](https://docs.microsoft.com/en-us/windows-server/storage/disk-management/initialize-new-disks) and [create a partition](https://support.microsoft.com/en-us/windows/create-and-format-a-hard-disk-partition-bbb8e185-1bda-ecd1-3465-c9728f7d7d2e).
24
28
8. To dismount, right-click the drive in File Explorer and choose "Eject".
25
29
26
-
## WARNINGS
30
+
## Caution
31
+
32
+
⚠️Be careful not to modify data when the disk is mounted, the authors are not responsible for your data!
33
+
34
+
* The `.chunkdisk` file is read once. It can be modified and even deleted by other applications.
35
+
* Don't modify, add, remove and move around chunk files. They are not write-protected even when being used by chunkdisk. Changes outside chunkdisk may not be visible to the virtual disk, cause I/O errors or even corrupt the file system.
27
36
28
-
* MAKE A BACKUP of `.chunkdisk` file. Chunkdisk reads it only once when it's mounted. It can be read, modified and even deleted by others while the disk is mounted.
29
-
* DO NOT add, remove and move around chunk files when the disk is mounted. Doing so confuses chunkdisk and causes I/O errors.
30
-
* DO NOT directly modify chunk files. They are NOT write-protected even when being used.
37
+
chunkdisk places a `.lock` file to every part directory to prevent mounting the same disk twice, which will be removed upon exit. If `-W 0` option (mount as read-only) is given you have to remove it on your own to mount the disk again with `-W 1` option.
31
38
32
39
## `.chunkdisk` File Specs
33
40
34
41
```plaintext
35
42
{disk size in bytes}
36
43
{chunk file size in bytes}
37
44
{max. number of chunks} {absolute path to a directory}
38
-
{max. number of chunks} {absolute path to a directory}
39
45
...
40
46
```
41
47
@@ -46,7 +52,7 @@ I'm not responsible for the data stored using chunkdisk!
46
52
## Issues
47
53
48
54
* winspd-x64.dll is not compatible with the original to workaround [an issue](https://github.com/billziss-gh/winspd/issues/10). Specifically, invoking `SpdStorageUnitSendResponse()` or `SpdIoctlTransact()` leads to an undefined behavior. It's fine with the current WinSpd binaries though. The source code is available [here](https://github.com/extratype/winspd).
49
-
* Random I/O performance is not great with SSDs.
55
+
* Random I/O performance is not great with NVMe SSDs.
50
56
51
57
## Notes and Tips
52
58
@@ -59,3 +65,19 @@ I'm not responsible for the data stored using chunkdisk!
59
65
* When a file in the virtual disk gets deleted the corresponding chunk file may become empty if it is larger than the chunk size. This is done via SCSI UNMAP command (a.k.a. TRIM) requested by Windows.
60
66
61
67
* You can identify the file in disk for specific chunk or identify the chunk used by specific file. Use `fsutil volume querycluster` for the former, `fsutil file queryextents` for the latter. Use `diskpart` to know the partition offset. For NTFS volumes the cluster size is typically 4096 and LCN 0 corresponds to offset from 0 (inclusive) to 4096 (exclusive) of the partition.
68
+
69
+
## Differential disk
70
+
71
+
`.chunkdisk` file specs for differential disks:
72
+
73
+
```plaintext
74
+
{absolute path to the parent disk}
75
+
{disk size in bytes}
76
+
{chunk file size in bytes}
77
+
{max. number of chunks} {absolute path to a directory}
78
+
...
79
+
```
80
+
81
+
The parent disk can be either non-differential or differential. The disk size and chunk file size should be equal for all involving `.chunkdisk`. Every part directory should be unique. Parent disks are mounted as read-only (as if `-W 0` option is given). Disks mounted as read-only can be shared over multiple running instances.
82
+
83
+
You may discard or *merge* the differential disk. To merge, first make sure the differential disk and its parent are not mounted. Then remove `.lock` files in all parts of the parent disk (to mount it later with `-W 1` option); move and overwite all chunk files to the parent disk. The other differential disks based on it should be discarded.
0 commit comments