I have now cracked the 4GB file size limit.
The problem was absolutely caused by Synology Assistant's default setting imposed on the ext3 filesystem when it originally installed the DiskStation operating system.
I have now created a new
ext4 filesystem in the
/volume1 partition and have successfully stored a file of 20GB - verified with
md5deep (Diskstation) and
md5sum (PC).
Note that the
ext4 filesystem is available with
DSM3.0-1354.
Assumptions1) You have installed the
bootstrap to customize your DiskStation with
ipkg packages (See above);
2) You have installed
ipkg openssh-sftp-server;
3) You are using
DSM3.0-1354 (or some variant that supports ext4);
4) I was not running any of the following applications: Media Server, iTunes, Audio Station, Photo Station, Download Station, Surveillance Station;
5) The following were also disabled: Windows file sharing, Apple file sharing, NFS;
6) You are logged into the DiskStation over
ssh as
root;
7) You are running an
SFTP client and logged in as
root. My client is
Filezilla.
ProcessWarning - Do not reboot the DiskStation at any time until you get to my "reboot".To change an existing ext3 volume to an ext4 volume with the capability to store files >4GB I did the following:
0) To avoid a noisy background to some of this work, switch off the
/volume1 crash beep in the web interface of DSM3.0: Control Panel - Power - Beep Control
1) Log into the DiskStation as root using ssh:
- Code: Select all
ssh root@192.168.XXX.XX1
2) When the ipkg bootstrap originally ran it created a
bind mount from the new optware software stored in /volume1/@optware to /opt. We need to disable this link so that we can copy files from /volume1 unhindered. So:
- Code: Select all
umount /opt
3) Because we've now broken the link to the openssh-sftp-server and other ipkg software we need to ensure the software remains available to the system so we copy @optware to /opt temporarily:
- Code: Select all
cp -R /volume1/@optware/* /opt
4) If your DiskStation is like my DiskStation a
PostGreSQL database will be running to provide information to the web interface functionality and to manage the DiskStation's setup. The database is stored on /volume1 under
@database.
To properly backup the /volume1 folders we need to
stop the database engine in an elegant fashion. So, all of this must be typed into the console in one continuous line. Don't try copying and pasting from here - type it in:
- Code: Select all
su -l admin -c "exec /usr/syno/pgsql/bin/pg_ctl stop -s -m fast"
5) With the database engine stopped we can now access /volume1 unhindered and without causing inconsistencies in the database record. Check that no other active processes are running with
admin authority by using:
- Code: Select all
ps
(Only root processes should be running and none of these are likely to be updating /volume1)
6) Time to move our data from /volume1.
Use Filezilla or your preferred SFTP client to
copy all the files from
/volume1 to your local PC (I hope you've got a really big drive!). You'll need to be logged in as
root to see all of the necessary directories. Make sure you include
@database, homes, public, @tmp directories. I copied everything
except @optware (We've already got a copy in /opt from 3). This may take some time...
7) Once all the files are copied time to sort out
/volume1 so let's free
/dev/sda3 (This was the partition mounted to /volume1 for me - it may be different for you. Check it with "mount" before you start). So:
- Code: Select all
umount /volume1
If you didn't switch off the /volume1 crash beep then cover your ears. The status light will flash amber now. Don't worry - we know what we are doing...
8 ) I wanted to check the integrity of /volume1 sectors so I issued a filesystem check (e2fsck) at this stage (Not vital to this process):
- Code: Select all
e2fsck -cfv /dev/sda3
Warning: Don't issue that command when /dev/sda3 is mounted - you'll wreck your filesystem and probably lose data!9) Now let's get that new filesystem onto /dev/sda3 (Yeh!!!!). Type this
all in, in one continuous line. Don't copy and paste it...
- Code: Select all
mke2fs -T ext4 -v -O has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize /dev/sda3
Note there's just a space between 'isize' and "/dev"
Watch as the filesystem is created on device /dev/sda3 ... ooooo!!!
10) /dev/sda3 now has a ext4 filesystem (format) and we can store very, very large files on it... so let's begin putting our DiskStation back together:
- Code: Select all
mount -t ext4 /dev/sda3 /volume1 -o defaults
Status light will now stop flashing amber.
11) Note that
/etc/fstab should be updated automatically by this process - but if it hasn't (check with
vi) - alter the line for /dev/sda3 to read:
- Code: Select all
/dev/sda3 /volume1 ext4 defaults 0 0
12) Before we can copy files back we need to recreate our sftp server on the DiskStation so:
- Code: Select all
mkdir /volume1/@optware
and
- Code: Select all
cp -R /opt/* /volume1/@optware
This copies back the ipkg files to volume1
13) Now we can use Filezilla or your sftp client to copy all the folders/files we copied from /volume1 to our PC. This may take some time too... Remember, because you are logged in as root they will all have the ownership: root.root which we'll have to change as and when.
14) We now need to get the PostGreSQL database back up and running, but we need to set the necessary permissions to ensure the database engine runs properly so:
- Code: Select all
chown -R admin.admin /volume1/@database
This ensures the database engine runs in the admin user's environment as originally intended.
15) Time to restart the database engine. Type this in, in one line - no copy and paste:
- Code: Select all
su -l admin -c "exec /usr/syno/pgsql/bin/pg_ctl -D /var/services/pgsql restart -s -m fast -o \"--config_file=/usr/syno/pgsql/etc/postgresql.conf --hba_file=/usr/syno/pgsql/etc/pg_hba.conf \""
There are no carriage returns in the code. Just type 'space' when you get to the end of each line above.
Make sure you have your spaces in the correct position and don't confuse backslashes with (b)ash esc characters...
The database engine should restart without any problems.
16) Time to clean up the DiskStation - remove stuff that is no longer required:
- Code: Select all
rm -Rf /opt/*
Removes our temporary copy of ipkg files which are now back in /volume1/@optware after we did 12 (above) Doing it now ensures the database records the transactions.
17) Get back our /opt mount:
- Code: Select all
mount -t bind /volume1/@optware /opt -o bind
18) Let's ensure everything is cleaned-up ship-shape. So let's do a:
- Code: Select all
reboot
Ignore messages for packages you didn't have running (e.g. surveillance station)
19) The ssh link is dropped - but we can go back after. We've got some work to do in the DiskStation web interface. So Firefox - Address: 192.168.XXX.XX1 for DiskStation. Log in as admin as usual. Notice the top right-hand side of the window? Notifications? This will record the multiple times the DiskStation told us that volume1 had crashed... just Clear All.

While you are here - you might as well put the beep warning back on: Control Panel - Power - Beep Control
20) Log out of the web interface and let's go back to ssh into the DiskStation.
- Code: Select all
ssh root@192.168.XXX.XX1
cd ..
mount
/dev/sda3 on /volume1 should now be ext4 with a couple of other settings (e.g. quotas)
21) We can now use Filezilla to store some very, very large files on the DiskStation.
22) Note that all the directories and files are owned by root.root. You'll need to use:
- Code: Select all
chown -R user.group /volume1/homes/xxxxxxx
to change the ownership of directories and files.
So that is it - the /volume1 filesystem has been converted to ext4 and I can now store files larger than 4GB on it.
Next step is to get rsync working on it and automatically backup files bypassing the web interface (how limited

!).
Important NoteSome other reading of this forum suggests a clean install from scratch with DSM3.0 may lead to ext4 being installed by default - but my DSM3.0 didn't seem to do that when I originally installed the DiskStation operating system (I'll have to check the CD to establish if it was an earlier version). Whatever - this method definitely works and means I can change the filesystem to whatever I want on volume1 so others may find it useful too.
By the way - ipkg provides a version of
lsof - this may be useful for you if you find
ps discovering additional active processes. You could issue a
- Code: Select all
lsof |grep volume1
as well as
ps to establish if there are any open files in use on /volume1.
I'll let you know if I find any problems with rsync setup to the DiskStation.
Mike