« Network Gear | Main | ReadyNAS Duo – LED Patterns »
Mounting Sparc-based ReadyNAS Drives in x86-based Linux
By dbott | October 17, 2009
When the ReadyNAS developers changed the default block size in RAIDiator 4.x to 16 KB (from 4 KB in version 3.x), there was concern from the community that users would be unable to mount drives from a failed ReadyNAS into a Linux computer. The concern is that the ReadyNAS Duo, NV+, X6, 600 & 1100 use a Sparc-based processor and that an x86-based PC cannot read 16 KB blocks. One of the developers, Skywalker, has provided some details and I have taken the liberty of editing his posts into an easy-to-follow step-by-step set of instructions.
Quoting Skywalker:
There is no “proprietary” filesystem running on any ReadyNAS. It is “straight”, ordinary, unmodified EXT3. You can even run all the e2fsprogs (debugfs, e2fsck, etc) on a 16KB ReadyNAS filesystem on a standard Linux PC with no modifications. Mounting a 16KB ReadyNAS filesystem on an x86 PC requires about the same amount of work as mounting an NTFS filesystem read/write on Linux — using a FUSE driver to mount it.
The ext2fuse driver won’t come on any LiveCDs, so you’d need a full distro running with the necessary build tools installed.
Ubuntu, Fedora, Debian… it doesn’t really matter. Once you get those installed, you need to get the ext2fuse source code from sourceforge.net.
- Using Debian, you can install the build tools by issuing the following command as root:
- Download the ext2fuse package and extract it:
- Change to the directory of the extracted program
- Run the following command:
- Before compiling, open src/Makefile in an editor.
- Remove the lines that look like this:
- Change this line:
- To this:
- Then build the executable by running make:
- Next, install the package by running make install:
- After compiling and installing the package, you’ll need to load the fuse module:
- Next, run the following commands to recover the volume group information and then activate it:
- Create a directory to mount the array:
- Mount the array:
- If successful, you should see:
- At this point, your ReadyNAS data volume should be mounted on /mnt/lvm and you should be able to access your data.
apt-get install build-essential
tar xvzf ext2fuse-src-0.8.1.tar.gz
./configure
ext2fuse_DEPENDENCIES = ../lib/et/libcom_err.a \
../lib/ext2fs/libext2fs.a
ext2fuse_LDADD = ../lib/et/libcom_err.a ../lib/ext2fs/libext2fs.a
ext2fuse_LDADD = -lcom_err -lext2fs
make
make install
modprobe fuse
vgscan
vgchange -ay c
mkdir /mnt/lvm
ext2fuse /dev/c/c /mnt/lvm
/dev/c/c is to be mounted at /mnt/lvm
fuse-ext2 initialized for device: /dev/c/c
block size is 16384
I haven’t tried this myself (I gave my NV+ to my dad), but welcome any feedback on making it better.
Update (May 22, 2010) – Have a look at this for additional information:
http://greyproc.blogspot.com/2010/04/readynas-600-raid-recovery-with-ubuntu.html
Topics: ReadyNAS, Tech | 4 Comments »
October 29th, 2009 at 11:18 am
User dekkit at the ReadyNAS forums has built a VMWare image that can mount drives from a ReadyNAS in a USB enclosure:
http://www.readynas.com/forum/viewtopic.php?f=11&t=35153
May 19th, 2010 at 9:13 am
root@PC038:/tmp/ext2fuse-src-0.8.1/src# make
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/include/fuse -I/usr/local/include/fuse -I../lib -I../lib/et -I../lib/ext2fs -D_FILE_OFFSET_BITS=64 -g -O2 -MT ext2fuse-readdir.o -MD -MP -MF “.deps/ext2fuse-readdir.Tpo” -c -o ext2fuse-readdir.o `test -f ‘readdir.c’ || echo ‘./’`readdir.c; \
then mv -f “.deps/ext2fuse-readdir.Tpo” “.deps/ext2fuse-readdir.Po”; else rm -f “.deps/ext2fuse-readdir.Tpo”; exit 1; fi
In file included from readdir.c:1:
readdir.h:6:27: error: fuse_lowlevel.h: No such file or directory
In file included from readdir.c:1:
readdir.h:8: error: expected ‘)’ before ‘req’
readdir.c:7: error: expected ‘)’ before ‘req’
readdir.c:46: error: expected ‘)’ before ‘req’
make: *** [ext2fuse-readdir.o] Error 1
May 29th, 2010 at 10:42 pm
Thanks dbott – very useful and clear site! Currently backing up thousands of pics off my 3 NAS drives from an Ubuntu box
I managed to bypass the compilation step by using an older pre-built ext2fuse 0.5 from here:
http://www.jamesandclare.net/2009/12/06/mounting-readynas-duo-drives-in-ubuntu/
Best
apnea
May 31st, 2010 at 3:13 pm
From the blog linked to above:
Choosing a NAS solution where you can’t mount the storage media outside of the NAS is asking for trouble. I was worried I’d made the wrong choice when I found that mounting the ReadyNAS do ext3 drives is not trivial, mainly because they use a 16kb block size with their SPARC cpus.
A bit of routing around found various solutions, but the one which worked for me was as follows.
1. Fire up ubuntu vm (running on OS X for me and in my case 9.10 Karmic)
2. install lvm2 using:
apt-get install lvm23. Download ext2fuse 0.5 (from here for example)
http://linux.softpedia.com/progDownload/ext2fuse-Download-29820.html
http://sourceforge.net/projects/ext2fuse/files/ext2fuse/0.5/ext2fuse-0.5.src.tgz/download
4. run
vgscanto locate drives5.
vgchange -ay cto allow access to drive6.
mkdir /mnt/lvm7.
ext2fuse /dev/c/c /mnt/lvm(where ext2fuse will have been downloaded)8. drive can now be accessed on
/mnt/lvm