我必须复制一个相对较大的文件(6GB)到另一台服务器。 为了保持一致性,我必须“locking”这个文件,而不是在传输过程中使用它。 我显然希望尽量减less这种停机时间,但在此之前,我也想估计这样做的时间。
我可以看到2个解决scheme:
在本地复制文件,然后通过networking(本地)传输。 我想这会导致最小的停机时间,但是,也许我错了,因为磁盘将不得不同时写入和读取相同的文件。 即使这样,我也不知道如何估计在本地复制文件所需的时间。 也许创build一个6GB的文件,并复制它将是有意义的,但那么,我该怎么做呢?
通过networking直接复制文件(scp)。 由于networking访问速度比磁盘写入慢几个数量级,因此这种接缝速度很慢,但是,也许我错了。
一般来说,我怎样才能对两种方法进行基准testing,并确定哪一种方法最适合我
老实说…有几种方法来攻击这个。 我有几个服务器,我需要复制在不断使用的文件…所以我安排了几分钟的“维护窗口”,我可以locking文件…创build一个快照(使用DM快照),使服务器恢复在线状态,然后使用快照的文件副本执行任何操作。 这使我有一个稳定版本的文件…并使服务恢复在线,停机时间最短。 之后…我可以删除快照而不影响活动的服务器。 在你的情况下…你可以根据需要以你自己的速度复制6GB的快照文件….无需担心文件的实时版本搞乱了复制过程。
创build一个虚拟文件来传输:
time dd if=/dev/urandom of=~/testfile bs=1M count=512 time cp testfile testfile2 #How long it takes to copy time scp testfile user@otherserver:/path
/dev/urandom是为了避免压缩的提升。 SCP应该交互地告诉你速度是多less。 基础math应该允许外推文件大小为6 gig。
您可以使用* nix实用程序“pipe道查看器”来观察这些过程。 它会为您提供一个进度条和预计的转移时间。