于是我看了计算机组织学的书,上面说有一章讲内存层次结构,容量越大越便宜,读写速度就越慢,反之亦然。
因此,我的笔记本电脑中有这些记忆(分层):
- RAM(8GB)(最快)
- SSD(512GB)(中等)
- HDD 5400RPM (1TB)(较慢)
- Google Drive(最慢,取决于互联网带宽,但通常最慢。)
所以我期望有这样的映射:
SSD/MyFolderA <-> HDD/SyncFromSSD/MyFolderA <-> GD/SyncFromHDD/MyFolderA
正如书中所提到的,SSD 在执行写入操作时会出现磨损(导致性能和可靠性下降),但不适合读取操作。
尽管如此,为什么 GD 是通过 HDD 而不是 SSD 同步的呢?答案是,它是双向同步。因此,我有可能从 HDD 或 GD 写入文件,但仍然会导致 SSD 磨损。
我有用于本地驱动器之间 GD 同步的实用程序,但不知道如何在 SSD 和 HDD 之间进行本地同步。如何应用这种双向同步架构?
答案1
我将计划从双向同步改为高可用性文件夹,应用冗余 3-2-1 规则备份(存储在 SSD 上、存储在 HDD 上、存储在云端)。因此,这是单向同步。SSD 中的文件夹会自动同步到 HDD 和 GD。
实际上,Windows 中有一个内置功能称为存储空间,但它仅支持磁盘之间的冗余,而不是分区冗余或文件夹冗余。
我使用内置的 Windows 功能来执行此操作,它们robocopy
用于同步和任务计划程序用于自动触发同步。
对于第三方应用程序的先决条件,只需安装适用于 Windows 的官方 Google Drive然后用字母挂载G:
不要忘记将 Google Drive 缓存路径更改为具有最大分配单元的 HDD,以节省 SSD 写入耐久性。
设置方法如下:
创建 SSD 分区,专门用于与驱动器号自动同步答案:并添加新文件夹D:\ssd-同步和D:\ssd-sync\robocopy_autosync。
在 HDD 驱动器内创建 VHD 文件映像,其固定大小与 SSD 分区大小相同,然后使用盘符挂载F:并添加新文件夹F:\vhd-同步。
为什么不直接将文件夹放在 HDD 驱动器内?例如 E:\hdd-sync?这是因为与将许多 KB 单位的小文件移动到 HDD 驱动器文件夹中相比,VHD 文件映像更容易、更快速地传输以进行备份,而 HDD 驱动器文件夹由于机械部件和低性能 IOPS 而速度较慢。与以 KB 单位读取许多文件相比,如果读取单个单位的大文件,HDD 传输实际上会更快。
建议:在“在 HDD 驱动器内创建 VHD 文件映像”之前,您可以通过分配与 VHD 大小相同的特殊分区来加快 HDD 中的传输速度,分配单元必须设置为最大值,即 2M,而不是默认的 4096,保持文件系统默认为 NTFS。使用盘符挂载埃:并创建具有固定大小和名称的 VHD 文件E:/hdd-to-vhd.vhd。该分区专门用于将 VHD 放入 HDD 驱动器内,簇大小为 2M,访问速度更快。
创建文件夹G:\我的云端硬盘\高可用性文件夹\gd-sync。
创建 auto_sync.bat并将其保存到D:\ssd-sync\robocopy_autosync\auto_sync.bat:
robocopy D:\ssd-sync F:\vhd-sync /E /MIR /TEE /LOG+:D:\ssd-sync\robocopy_autosync\ssd_to_vhd.txt /V
robocopy D:\ssd-sync "G:\My Drive\high-availability-folder\gd-sync" /E /MIR /TEE /LOG+:D:\ssd-sync\robocopy_autosync\ssd_to_gd.txt /V
- 然后创建 auto_sync.xml,保存, 和导入任务计划程序:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2024-05-09T16:29:45.6364263</Date>
<Author>LAPTOP-DJH6CVKH\User</Author>
<URI>\Robocopy\robocopy_autosync</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Repetition>
<Interval>PT1M</Interval>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
<Enabled>true</Enabled>
<Delay>PT1S</Delay>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-21-170095007-379780964-48905099-1001</UserId>
<LogonType>S4U</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT1M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>cmd</Command>
<Arguments>/C "D:\ssd-sync\robocopy_autosync\auto_sync.bat"</Arguments>
</Exec>
</Actions>
</Task>
该调度程序每 1 分钟触发一次,因此基本上每分钟都会同步一次。它执行的操作是运行 auto_sync.bat 脚本。
那么,为什么不与 Google Drive 应用功能同步?因为它不支持文件和文件夹排除。
如果您对资源管理器上显示的太多完整磁盘感到烦恼,您可以隐藏它。我再次强调,这是隐藏,而不是禁用。因此,您仍然可以在资源管理器中以完整路径访问隐藏的驱动器,而不必担心被禁用。这个 #4 选项是我所做的:https://www.easeus.com/partition-manager-software/hide-drives-windows.html
我仍然可以通过输入完整路径来访问E:/hdd_to_vhd.vhd通过网络等备份到另一个地方。