-
Notifications
You must be signed in to change notification settings - Fork 44
Storage
If installed on a Raspberry Pi on a MicroSD card, RetroNAS can simply export a folder directly.
Optionally, external storage can be connected. Most Raspberry Pi devices have spare USB ports that storage can be plugged in to (please see the notes in Supported hardware about USB2 vs USB3 performance). Raspberry Pi 4 devices can have the OS installed on a USB thumbdrive and an SD card used as separate storage, or even network booted.
Advanced users can mount external network storage, and then re-export that via RetroNAS. Useful to use your RetroNAS device as a "storage proxy" between your old/vintage/retro computers and consoles, and your modern NAS or desktop computer, without needing to invest in new storage.
See the Cockpit page for tools on how to attach external storage, wipe, format and mount it for use with RetroNAS services.
Note that there are strict limits on the amount of power that Raspberry Pi devices can send out of their USB ports. The most modern of the devices, the Raspberry Pi 4B, can only send 1.2A across all 4 of its USB ports combined (2x USB2, 2x USB3, shared with any other devices plugged in such as mice and keyboards).
This can have some dire effects on certain types of storage. Older SSD drives when plugged in via a USB3-to-SATA adaptor with no extra power input can sometimes see device resets if they attempt to draw too much power, causing storage dropouts.
Where possible, if RetroNAS is being used for larger storage options, externally powered storage is recommended. Some devices are supplied with USB cable splitters that allow one USB plug for data and one for power. These can be plugged into external USB power supplies (phone chargers, etc) to reduce strain on your RPi.
Smaller devices like USB thumb drives are often fine. Finding one that is true USB3 is often quite acceptable for both speed and power draw in a Raspberry Pi 4.
For 3.5" spindle based drives, definitely invest in models that offer external power. These require 12V which the Raspberry Pi cannot supply via USB. However with 2 of these plugged in via the RPi 4B's USB3 ports, even as a RAID1/mirrored device (either via MDRAID, LVM or BtrFS), these will work perfectly fine with external power.
Disk size limits are more dependent on either the legacy system connecting to your RetroNAS, or the file systems you choose to use.
Selected file systems have the following limits:
- FAT16: 4 Gigabytes
- FAT32: 2 Terabytes / 2,000 Gigabytes
- NTFS: 8 Petabytes / 8,000 Terabytes / 8 Million Gigabytes
- ext4: 1 Exabyte / 1,000 Petabytes / 1 Million Terabytes / 1 Billion Gigabytes
- XFS: 8 Extabytes / 8,000 Petabytes / 8 Million Terabytes / 8 Billion Gigabytes
- BtrFS: 16 Exabytes / 16,000 Petabytes / 16 Million Terabytes / 16 Billion Gigabytes
Note that you don't have to limit your device size, merely the partition / logical volume size. A larger disk can use partitioning or logical volume management (using Cockpit if you need a graphical method) into either a single smaller partition/volume, or several partitions/volumes should you wish.
You can also mix and match file systems on different partitions or logical volumes. For example, if you want to run EtherDFS which requires a FAT based filesystem, as well as other operating systems via Samba, Netatalk, FTP, etc, and have those on another partition/volume. Use Cockpit to split up your storage, mount a normal ext4 (or other Linux-native) file system as your top level directory, and the /dos
directory below that as your FAT based volume exported by EtherDFS (but still able to be accessed by the other protocols from the top level down).
RetroNAS is built on Linux, and offers several advanced RAID (Redundant Array of Inexpensive/Independent Disks) options. These include:
- LVM - Logical Volume Manager, including a disk mirroring option
- MDRAID - Linux's native MD (Multi-Device) software RAID, which offers standard RAID 0/1/5/6/10 options
- BtrFS - A new advanced file system with more modern file chunking and mirroring options
More documentation will be added for these into the future.
RetroNAS supports BtrFS, an advanced Linux filesystem that offers very interesting options including
- Inline compression - transparent (invisible to the host) lzo, zlib and zstd compression (only compressing files where necessary/possible)
- CoW - Copy on Write, allowing snapshots and zero-byte instant copies of large files
- Deduplication - Detecting similar chunks of data within files, and removing duplicate copies to save even more space than compression
- Redundancy - similar to RAID options, however with more modern checking and verification options
- Multi-device - use any combination of mis-matching devices to combine into a larger or redundant device
- Block level checksums - mathematical fingerprinting, verification (and optional automatic repair) of every chunk of data read and written
- Automatic optimisations for spindle or SSD drives
More documentation will be added for BtrFS into the future.
Getting started:
Contributing
- Bugs
- Structure
- Testing RetroNAS
- Ideas potential future state stuff
Multi-system protocols:
- ADTPro Apple // era
- EtherDFS MS-DOS/FreeDOS
- ethflop MS-DOS/FreeDOS L2 floppy emulator
- FTP
- HTTP
- Kermit
- NFS
- Netatalk AppleTalk/AFP
- Samba SMB/CIFS
- TNFS Atari 8-bit and ZX Spectrum
- Telnet
- ZeroConf, Bonjour, Avahi
- pyGopherd a HTTP alternative
- zterm Serial Comms Zmodem Transfer
Specific system configurations:
- Supported Clients
- 3DS QR codes Nintendo 3DS and 2DS
- Batocera
- EmuELEC and derivatives
- RecalBox
- EmuDeck
- Analogue Pocket (OpenFPGA)
- FSP Nintendo GameCube
- Fenrir-ODE Webserver Sega Saturn
- MiSTer FPGA
- NABU Internet Adapter
- Netlink Sega Saturn Netlink online play
- OpenPS2Loader PlayStation 2
- XBox360
- dreampi dreampi project for Dreamcast (and others) online
- hb-store-cdn PlayStation 4 Homebrew Store CDN
- ps3netsrv PlayStation 3
- linux-dexdrive Dump/Write PS1 memory card images
- sidecart Atari ST Sidecart
Services:
- WaybackProxy Web Proxy through the Wayback Machine
- WebOne Web Proxy
- macproxy Web Proxy
- wrp Web Proxy
- Cockpit Web management
- Syncthing file synchronization
- ROM import Smokemonsters SMDB
- TCPser software Hayes Modem
- BitTorrent
- aria2 lightweight download utility.
- megatools mega.nz suite
- XLink Kai multi-platform
Tools:
- gogrepo Sync your GOG installers
- SabreTools DAT management tool
- mc Midnight Commander (Norton clone)
- ytree filemanger XTree clone
- far2l far2l filemanager
- Gadgets Linux gadgets (OTG) mode
- affstools
- amitools
Physical Media:
- DiscImageCreator dump redump.org compatible images
- Redumper advance disc dumper
On-Device Management:
- cue2pops BIN/CUE to VCD conversion
- extract-xiso Manage XISOs
- hdl-dump PS2 HDD device management
- nbd-client Network Block Device
- pfsshell PFS shell / PFS fuse
- ucon64 A multi-purpose copier device tool
- xboxmanager An experimental XBOX Manager
- pi1541 setup a pi1541 compatible device
Advanced storage options:
- BtrFS RAID, Snapshots, Compression, Deduplication
- FAT Advanced guide to using FAT loopback mounts for EtherDFS
- TBA
- SMR Shingled Magnetic Recording hard drives (TBA)
- NTFS Advanced guide for NTFS formatted disks
- SMB Loopback Mounting an existing SMB NAS
- NFS Loopback Mounting an existing NFS NAS
- MDRAID (TBA)
- LVM (TBA)
- iSCSI Configuring iSCSI
Other:
- Installation Profiles
- Generic ROMs folder
- Other projects and sites
- laptop-ao
- Local Module
- Docker and why it's not optimal for a network storage system