I'm not an expert on DNS, but this is how I would deal with the situation:
I would say start lowering the TTL on Slicehost for all your domains to something like 2 hours. Mirror your DNS settings on Linode meaning duplicate all your A/AAAA records, SPF, TXT, etc records as much as possible using Linode's DNS Manager except changing the IP addresses to point to the Linode itself.
At this point you should have Hover saying to use Slicehosts's nameservers which are saying X.tld is on Slicehost IP y.y.y.y. At the same time you have Linode's DNS manager saying X.tld is on z.z.z.z, but nothing is making requests of Linode's nameservers.
Once domain X.tld is set up on your Linode you change your Slicehost A/AAAA record to the new IP. Within 2 hours you will see more and more users pulling pages from your Linode and less and less users pulling pages from your Slicehost VPS. Repeat this for all X.tld subdomains. Once all subdomains for X.tld have been moved over to Linode just go ahead and change the nameservers on Hover to match NS[1-4].LINODE.COM. This change should create no downtime at all. Repeat this for all domains you are managing.
Now you have Hover telling telling DNS servers to grab data from Linode's Nameservers, which in turn are telling users to get data from Linode. You could just as easily used Slicehost's DNS Manager to point all your A/AAAA records to you Linode, but why not have everything in one place?
Basically is how we're doing this is we're telling all DNS servers to refresh the A/AAAA record for X.tld every two hours instead of the default 24 (?). This means it will be a quicker transition between Slicehost -> Linode when you want to flip the switch for that domain. Most DNS servers around the world will be telling your users to go to Linode within two hours allowing you to close off Slicehost quicker. You have duplicate DNS records so you can just change the Nameservers on Hover and no downtime will result.
Hopefully this will help to explain the process:
1.1.1.1 - Linode IP
2.2.2.2 - SliceHost IP
Current Setup:
Code:
Slicehost DNS:
SubA.X.tld 2.2.2.2
SubB.X.tld 2.2.2.2
SubC.X.tld 2.2.2.2
SubA.Y.tld 2.2.2.2
SubB.Y.tld 2.2.2.2
SubC.Y.tld 2.2.2.2
Z.tld 2.2.2.2
Linode DNS:
[Blank]
Hover DNS:
X.tld NS1.SLICEHOST.COM
Y.tld NS1.SLICEHOST.COM
Z.tld NS1.SLICEHOST.COM
Preliminary Setup:
Code:
Slicehost DNS:
SubA.X.tld 2.2.2.2
SubB.X.tld 2.2.2.2
SubC.X.tld 2.2.2.2
SubA.Y.tld 2.2.2.2
SubB.Y.tld 2.2.2.2
SubC.Y.tld 2.2.2.2
Z.tld 2.2.2.2
Linode DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 1.1.1.1
SubA.Y.tld 1.1.1.1
SubB.Y.tld 1.1.1.1
SubC.Y.tld 1.1.1.1
Z.tld 1.1.1.1
Hover DNS:
X.tld NS1.SLICEHOST.COM
Y.tld NS1.SLICEHOST.COM
Z.tld NS1.SLICEHOST.COM
Two subdomains moves:
Code:
Slicehost DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 2.2.2.2
SubA.Y.tld 2.2.2.2
SubB.Y.tld 2.2.2.2
SubC.Y.tld 2.2.2.2
Z.tld 2.2.2.2
Linode DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 1.1.1.1
SubA.Y.tld 1.1.1.1
SubB.Y.tld 1.1.1.1
SubC.Y.tld 1.1.1.1
Z.tld 1.1.1.1
Hover DNS:
X.tld NS1.SLICEHOST.COM
Y.tld NS1.SLICEHOST.COM
Z.tld NS1.SLICEHOST.COM
One Full Domain Moved:
Code:
Slicehost DNS:
SubA.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubB.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubC.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubA.Y.tld 2.2.2.2
SubB.Y.tld 2.2.2.2
SubC.Y.tld 2.2.2.2
Z.tld 2.2.2.2
Linode DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 1.1.1.1
SubA.Y.tld 1.1.1.1
SubB.Y.tld 1.1.1.1
SubC.Y.tld 1.1.1.1
Z.tld 1.1.1.1
Hover DNS:
X.tld NS1.LINODE.COM
Y.tld NS1.SLICEHOST.COM
Z.tld NS1.SLICEHOST.COM
One Full Domain, Two subdomains Moved:
Code:
Slicehost DNS:
SubA.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubB.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubC.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubA.Y.tld 1.1.1.1
SubB.Y.tld 2.2.2.2
SubC.Y.tld 1.1.1.1
Z.tld 2.2.2.2
Linode DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 1.1.1.1
SubA.Y.tld 1.1.1.1
SubB.Y.tld 1.1.1.1
SubC.Y.tld 1.1.1.1
Z.tld 1.1.1.1
Hover DNS:
X.tld NS1.LINODE.COM
Y.tld NS1.SLICEHOST.COM
Z.tld NS1.SLICEHOST.COM
All Domains Moved:
Code:
Slicehost DNS:
SubA.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubB.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubC.X.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubA.Y.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubB.Y.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
SubC.Y.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
Z.tld 1.1.1.1 (Depreciated because requests are no longer being made of Slicehost for this IP)
Linode DNS:
SubA.X.tld 1.1.1.1
SubB.X.tld 1.1.1.1
SubC.X.tld 1.1.1.1
SubA.Y.tld 1.1.1.1
SubB.Y.tld 1.1.1.1
SubC.Y.tld 1.1.1.1
Z.tld 1.1.1.1
Hover DNS:
X.tld NS1.LINODE.COM
Y.tld NS1.LINODE.COM
Z.tld NS1.LINODE.COM