Diskomator – NVMe-TCP at your fingertips
github.com
github.com
Edit: Yeah. I forgot about actually saying what "target disk mode was". There's a child post that mentions it, so I'll refrain. I will say that I saw it used in imaging computers in a college computer lab setting back in the early 2000's. I definitely wished my PCs could've done it. It looked like a very handy feature. Presumably it would make fixing OS boot issues easier, as well as just harvesting files off a machine that was otherwise not operating properly due to OS issues.
In case, like me, "Target Disk Mode" is not something you're familiar with:
> People also ask What is the target disk mode? If you have two Mac computers with USB, USB-C or Thunderbolt ports, you can connect them so that one of them appears as an external hard disk on the other. This is called target disk mode. Note: If either of the computers has macOS 11 or later installed, you must connect the two computers using a Thunderbolt cable.
Sidenote: Thunderbolt cables are special USB-C cables, i.e. the wire between your Mac and the USB-C power brick.
Not exactly - that is only sort-of valid for Thunderbolt 3 and its successor/merger USB-C 4. TB1 and 2 used the Mini DisplayPort connector.
TB3/4 use the USB-C connector, but unlike USB-C, at longer lengths (per standard: 0.5m [1], but there longer passive cables as well, e.g. [2]) are the cable isn't passive or semi-passive (cables supporting USB-C PD for higher currents/voltages contain "marker" chipsets in the plugs) - it's an "active" cable with special transmission/driver circuitry to achieve tolerable signal integrity.
[1] https://en.wikipedia.org/wiki/Thunderbolt_(interface)#Thunde...
[2] https://www.amazon.de/Cable-Matters-Zertifiziertes-Thunderbo...
I think that iSCSI is involved here, as "target" reminds me of the iSCSI terminology.
I guess that (as usual) mac os just hides a lot of the details and gives you a nice gui to do that automatically.
I'd love to have my PC laptop have the same kind of functionality. Need to troubleshoot an OS boot issue-- just plug the unit into a working PC and the disks show up as local devices. Unlock the full disk encryption and go to town. All the convenience of extracting the disk and connecting to another machine without cracking the case.
Or you could just boot from a far more convenient USB drive with a live OS.
It's all counterfactuals anyway-- nothing like target disk mode will ever happen on the PC platform.
I was half-expecting a Go or Rust utility but so pleasantly surprised to find a bunch of configurations, and that’s it!
Never really fully understood what systemd does. It’s basically the star of the show here. Is it an alternative to init? I honestly thought it was a user level service designed to provide a lightweight abstraction around cgroups and init. I haven’t looked into it too deep - but I have a feeling my assumption is wrong.
systemd is an init system plus various other tools/infrastructure for managing a system.
In that exact same setting, I've seen PCs use PXE for the same purpose.
With USB4 especially, it's like: these computers have crazy huge bidirectional throughput. Why why why would we not have one of the most obvious easy to do pipes, a way to let video data in?
Because HDMI and DisplayPort use HDCP to prevent us from copying the data we're viewing for future use. I'm interested in how the tablet is going to work with HDCP as the whole point of closing the analog hole goes away if I can...
Oh, it's just a passthrough.
If your machine was screwed up, you could plug another machine into it in target disk mode and boot off that (external) "drive" and fix your machine. Or you could easily copy files on/off your machine at firewire speeds.
In comparison, PCs in that era were always troublesome to administer, requiring disk cloning software or sometimes linux. (although they universally boot from USB now, which helps)
Target disk mode is also supported on mac laptops that are older than firewire; the original target disk mode is over scsi and is supported by the first powerbooks, the powerbook 1xx series.
Very nice idea.
Install Ventoy onto a USB disk drive and it will create a bootable partition that can mount your Ibootable images (including ISOs) onto your baremetal from the second partition it creates. In effect you can just load up a USB drive with ISOs and install onto baremetal from them. Super handy for distro hoppers and appealing if you don't want to fart around with network boot but just want to install something on a computer. I was trying to install Windows 11 and just wondered if there was an EFI thing that could just mount my USB, and Ventoy exists and works pretty well. I actually couldn't install windows without it on one system, just didn't like something about my installer media...
The market is saturated with solutions for middle-boxes that make hard drives talk to networks, but nobody seems to be directly addressing the problem of we just want storage network accessible.
Most hard drives run a serial console on some of the jumpers. You can easily run PPP or SLIP over that. QED :P
BTW if you already explored that, would you know how to alter the SLC/MLC ratio by any chance?
Modern QLC drive often have a SLC area for buffering. With the right firmware tools, it should be possible to take a 4 TB QLC drive and convert it to a 1 SLC drive to get more performance.
There were some firmware bugs on Seagate Barracuda SATA drives that could be worked-around w/ serial console. I don't remember the specifics though.
If you some search-engining on hard drive manufacturers and "serial console" you'll find indexed pages. (Presumably the really interesting stuff is buried deep down in forum posts, etc.) Just doing a couple quick searches got me some stuff.
It's my experience that these boxes try to do a hell of a lot more than just putting drives-on-network and that is why they all suck and are expensive.
The NVMe-oF fabric devices out there all seem to command a ridiculous premium when the reality is they ought to be very simple and easily cost-optimized.
ATAoE ("aoe" in the Linux kernel) is nice because it is very lightweight in both terms of code to implement it (~2-3kloc, basically just stuff an ATA packet in an ethernet frame), low network overhead, and ease to setup (no IP addresses).
Well, iSCSI has been around for ages, and because people got fed up with Fibre Channel requiring dedicated switches and transceiver components, first came FCoE that allowed using regular network transceivers and switches and then FCIP/iFCP that added regular IP routing to the mix but never saw much uptake.
From rough memory, didn't FCoE start out that way only in theory?
With the reality that people needed to buy FCoE rated equipment, which was priced at "enterprise pricing" levels.
Pretty sure that was FCoE, and I'm not mis-remembering that from something else... :)
Nothing, because it makes each disk quite costly and by the 2014 nobody wanted costly and slow HDDs.
Check the Seagate offering up there it has 1Gbit interface. You can't even run the drive at full sequential read/write speed over it. And having a two 10Gbit ports on each drive would require having two 10Gbit switches, which by 2014 were still quite costly.
EM6 solution[0,1] is neat but at least it both the quite packed both by the spec and the price but delivers a lot of IOPS and throughput.
[0] https://www.ingrasys.com/assets/files/Datasheet_ES2000_20211... [1] https://www.servethehome.com/ethernet-ssds-hands-on-with-the...
I mean, technically, every Linux distribution is “just a(nother) live cd” with a slightly different configuration and some custom packages thrown in. To each their own, yeah?
That's one of those "it depends" things. If you only have a small number of computers that need connecting, and you're ok with using 2nd hand gear... then 40GBe Mellanox adapters from Ebay are pretty affordable. eg stuff like this (there's a bunch):
* https://www.ebay.com.au/itm/293393033570
* https://www.ebay.com.au/itm/175163685084
Note - I don't know those sellers at all.
Windows supports iSCSI clients/servers... Isn't it easier to emulate that and then you have a much wider range of possible clients?
https://www.freedesktop.org/software/systemd/man/latest/syst...
Ie. use UEFI to read/write the disks. UEFI to send/receive packets. UEFI to draw a splash image onto the screen.
Now, you don't need any network drivers, graphics drivers or disk/controller drivers.
The downside is that UEFI drivers tend to be barebones and not high performance. But it is a nice fallback to know that you will always at least have something that works.
For example, here is the API for disk access offered by UEFI: https://uefi.org/specs/UEFI/2.10/13_Protocols_Media_Access.h...
[1]: https://www.reddit.com/r/Proxmox/comments/134kqy3/iscsi_and_...
And doing that over the network (instead of over a local PCIe bus) seems like it'll have some trade-offs. :/
NVMe-over-network (fabrics w/ RDMA, TCP, ROCEv2) is very popular for doing disaggregated storage/compute, and things like Nvidia Bluefield push the whole thing down into networking cards on the host so you don't even see the "over network" part. You have a diskless server, plug in some Bluefield cards, and it exposes a bunch of NVMe drives to the host, as if they were plugged in physically. That makes it much easier to scale compute and storage separately (and also effectively increases the capacity of the host machine since it no longer is using up bandwidth and CPU on those tasks.)
Probably a trade off that a lot of enterprise places would be ok with.