What type of file system do you recommend to use on a data partition shared between Windows and Linux?

Hi,

I just bought a 1TB SSD and I want to create 3 partitions on it: one partition for Windows, one for Linux, and one for data that will be shared and used by both Windows and Linux.

The question is, what type of file system do you recommend I use in the data partition so that it can be used by both Windows and Linux?

The ideal would be to use a file system that is natively supported on both systems, so as not to depend on third-party applications.

I had thought about using the NTFS file system on the data partition, but I am not sure if right now the Linux kernel supports this file system completely without problems. I had also thought about using exFAT, but I ran into the same problem, I don’t know if the Linux kernel fully supports it.

I had also considered that the partition have an Ext4 system and then use an application to access it from Windows, such as Linux File Systems for Windows by Paragon Software, but in this case I already depend on third-party applications that I do not know what support they have and how often they are updated. And on the other hand, I don’t know if it really works well and doesn’t end up corrupting files.

I know you can also access an Ext4 partition on Windows using WSL, but I’m not going to install all that just to be able to access such a partition.

I had also considered using Btrfs and using WinBtrfs (since the application I mentioned above only supports Btrfs in reading mode), but I have read some comments out there from people who say that this application has ended up corrupting their files.

Furthermore, I continually read, in the changelogs of the Linux kernel versions that are published, bug fixes with the Ext4 and Btrfs file systems, so I am concerned that these third applications do not have all of these bugs that are found corrected, and therefore end up corrupting the files in some way.

So please, I need your wise advice. What type of file system do you recommend I use for this data partition shared between Windows and Linux so that it can be accessible and used by both systems?

Regards.

1 Like

Best solution: Network Attached Storage (NAS)

The problematic part is always Windows, since it only supports 3 filesystems: FAT16/32, EXFAT, NTFS.

I would say the third-party driver of paragon which supports ext2/3/4 (read/write) and btrfs/xfs (readonly), works quite well. I didn’t see any problems. The extFS will not change dramatically in the future, so don’t worry here and bugfixes are mostly related ti the linux kernel, not the windows kernel. It is easier to create driver for extFS on Windows (since Open Source) than creating an NTFS module on Linux (since closed source and reverse-engineering is needed.).

Both (ntfs/exfat) are fully supported, although POSIX ACL’s not, since these are not Linux file systems and forget about filesystem checks for ntfs: not supported.

The new ntfs3 (paragon) driver is probably problematic, because it is new and is a re-implementation of the paragon driver, which was partially written in C++ (linux needs plain C to be accepted). There is also the commercial version of the ntfs3 driver for linux, which has more features.


At the end it is your choice what you prefer, but:

  1. ext4 on Linux and the Paragon Driver on Windows.
  2. use a NAS.

NTFS, VFAT or EXFAT are valid choices, but not my preference, only if really needed: An USB Flash Drive for example.

If you know the limitation of FAT16/32/VFAT and don’t exceed it, then that would also be a reasonable solution, as it is 100% supported by both OSes. In any case, this would be my first choice when it only comes to data exchange.

1 Like

I agree (as mentioned above) that Network Attached Storage (NAS) is a great way to share data between separate computers; on a LAN; but to address your scenario:- Sharing a partition between two operating systems (presumedly in a multiboot environment):

Linux filesystems are not supported on Windows without third-party device drivers. In fact, Windows has been known to detect a Linux filesystem as an unused partition, and offer to format it for you. Thanks, but no thanks :wink:

NTFS is well supported in Linux, albeit with a little assistance: The ArchLinux Wiki (Manjaro is Arch-based) has instructions to get you started using NTFS-3G which allows read/write access to NTFS filesystems.

A suggestion if you follow this route:-

Use fstab in Windows (which may not exist by default) to effectively hide your Linux partitions from Windows – not the EFI partition though; nor the partition you wish to share – just the Windows-equivalent of the /root and /home partitions.

Likewise, hide the Windows partition (C:) from being seen in Linux by adding an appropriate entry in /etc/fstab. In doing this only the shared partition will be seen from each respective OS.

Hope this helps as a starting point. Cheers.

1 Like

I would use exfat for reliance or ext4 with this

Short and sweet: exfat for a shared partition will give you the least amount of trouble. Avoid ntfs. And make sure that Windows Fast Boot and Hybrid Sleep are disabled.

4 Likes

This can’t be stressed enough; it should be in caps and bolded.

Aside:- I wasn’t aware that exfat is considered reliable now, in the 2020’s; I recall even Microsoft recommended exfat only be used for temporary transfer of files between Windows and MacOS, using USB/thumb drives. Of course that was sometime in the XP era.

1 Like

Well, I don’t use Microsoft Windows and I have no need for either exfat or ntfs — apart from vfat for the EFI partition, of course — and I don’t like Microsoft filesystems, but compared to ntfs, exfat is a lot less trouble.

ntfs is a self-corrupting piece of proprietary junk, and Microsoft keeps on moving the goalposts all the time by changing the specs. exfat is more robust in that regard, even if only because it’s such a barbarically primitive filesystem. :grin:

1 Like

Apple is guilty of that too - maybe moreso - with their flagship APFS. :green_apple:

1 Like

well exfat is the choice but nevertheless even microsoft has changed and you can use and mount ext-4 if you’re running windows11 with the wsl-support-layer for windows:
(sorry that this is the official site of microsoft in german)

I wouldn’t trust Windows to not break an EXT4 partition. NTFS is dog :poop: on Linux.

Use EXFAT. It works on both systems.

1 Like

Off topic:- Actually, accessing Linux filesystems via the WSL2 seems logical; from a philosophical standpoint, at least - assuming the filesystems are only allowed access from the installed WSL2 Linus OS’s; and the only interaction would then be with established Linux tools within a Linux environment. This is definitely better than the various abstraction layers that have come and gone over the years, which were always finicky, at best.

Downside of EXFAT could be:

resize EXFAT

Last time i tried it even on Win 10 Home it was not possible.

exfat was primarily designed for partitioning of usb-sticks i.e. larger than 4GB, the use as filesystem to an external disc wasn’t mentioned. nevertheless it’s the most simple way to use if you have to deal between linux-macos-windows.

1 Like

Little is generally possible on a Windows Home Edition; by design. Random forum posts I’ve seen tend to indicate a lack of support for exfat by the tools generally used rather than any issues with Microsoft’s Exfat itself. If a tool doesn’t fully support a particular filesystem it will not offer to perform potentially damaging operations – such as resizing an exfat partition – at least, not in an ideal world.

Tools such as exfatptogs are constantly under development and I’ve seen some initiatives to include resize/extend support. I imagine those will still take time before reaching maturity.

Well, after reading your comments, I tried giving the data partition a chance to use the Ext4 system and then using the Linux File Systems for Windows by Paragon Software application, and it was a complete disaster.

To begin with, after installing the application, only the Btrfs partition was detected, the Ext4 partition for data that had been created and formatted during the installation of Manjaro was not detected.

So I downloaded the Paragon Partition Manager 17 CE application from the same company, to see how it detected the partitions. When I open it, I see that it detects that there is an Ext4 type partition, but it says that it is not formatted. So it occurred to me to format it from this application with Ext4 format, and when I did it from there it was recognized.

But now I restart the computer, and when I try to enter Linux it doesn’t load, it starts giving a series of errors in the startup log (RIP type).

So I had to reinstall Linux on the Btrfs partition, leaving the Ext4 partition with the formatting that Paragon Partition Manager had done.

Well, after installing it, I see that the Ext4 partition is correctly visible from Linux. I log into Windows and see that through the Paragon app too, so I thought the problem was solved.

But now I mount the Ext4 partition on the Windows D: drive, and after I’ve been working with it for a few minutes, I lose access. I restart the Linux File Systems for Windows by Paragon Software application service and now, when it comes time to mount it, the D: drive is no longer available and it only lets me mount it from E:. Okay, I mount it now on E:, and after a few minutes the same thing happens to me again, access to drive E: is lost and when I restart the service it only gives me the option to mount it from the letter F:. One more try, I mount it on the F: drive, and when I’ve only been working for a few seconds, I get a blue screen of death in Windows (which I haven’t had one for years) and the computer reboot automatically.

Conclusion: at least in my experience, that application has been a complete disaster, I cannot recommend it in any way.

So in the end I formatted the data drive with ExFAT format and so far it seems to be working fine. It may not be the most optimal file system, but at least it works…

The reason is simply that it doesn’t support all new features:

sudo tune2fs -l /dev/sdXX | grep 'Filesystem features'

Formated with gnome-disks:

Filesystem features:      has_journal ext_attr resize_inode dir_index orphan_file filetype extent 64bit flex_bg metadata_csum_seed sparse_super large_file huge_file dir_nlink extra_isize metadata_csum

Formated with Paragon:

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

I should have mentioned this. Yeah that is a limitation. Not all features are supported. But I talked about exchange, not accessing the root filesystem, which does not work due the limitations. Similar to NTFS on Linux: Some features are simply not supported.

I use Paragon ExtFS v2.316 from 2013. Still easy to use and still works on Win11. I bought it these days. It has a really old GUI, but paractiacally you don’t need more:

It’s sad that the current version works not as expected regarding the drive letters. I have no problems.

I must test the new version, but I feel so comfortable the old version. Yeah it has only support for ext2/3/4, but works great when you know that it has feature limitations. You have to disable certan features to be compatible.

Personally, I don’t have a trust relationship this type of software on Windows. Approaching the scenario from the Linux side seems a more reliable approach, which is why I suggested using NTFS-3G. While I’m not an advocate for Windows abstraction layers for foreign filesystem device drivers, I can resolve the Drive Letter assignment issues you were experiencing:

Procedure:- The first time the drive is mounted (in Windows), goto ‘Computer Management → Storage → Disk Management’, select the partition in question, right-click and select ‘Change Drive Letter and Paths’ – Choose the Drive Letter you wish to see associated with the shared partition, and click change.

This drive letter selection should then be remembered from this point forward; even surviving system crashes and reboots. At least, that’s the design. Cheers.

About this, I have one more question because I have the following problem.

On the exFAT drive I have a script with a .sh extension.

If I do a:

ls -l /home/my_user/Data/file.sh

It returns the following permissions:

-rwxr-xr-x 1 my_user my_user 217 sep 25 13:49 /home/my_user/Data/file.sh

That is, all users have execute permissions.

But when I try to run it on a Konsole with zsh, it tells me the following:

zsh: permission denied: /home/my_user/Data/file.sh

If I try to run it with sudo, it tells me the same thing:

sudo: unable to execute /home/my_user/Data/file.sh: Permission denied

Does anyone know why this could be?

Probably because this is not EXT4 file permission you see when you look at it.

//EDIT: I copied an executable script from an EXT4 partition, I pasted it on my eXFat partition, I opened terminal and I could execute the file from terminal. It should work. Make sure to set the permission manually and test again, maybe restart your terminal I have seen bugs that prevented to execute a file and restarting terminal emulator would fix it. Try BASH instead of ZSH.

The filesystem is most likely mounted with the noexec mount option. You can check that with… :arrow_down:

mount | grep Data

If the filesystem is mounted via /etc/fstab or by way of a systemd mount, edit the file and make sure that it does not have the noexec mount option, and/or replace it with exec.

If the filesystem is auto-mounted by udisks2, then it could be that noexec is added automatically for security reasons — in fact, I believe it does do that. And then this would be a fine example of why it’s always better to set up a static mount for HDD/SSD partitions. :wink:


You cannot change the permissions on a non-POSIX filesystem. They are only emulated in the VFS layer, and this is done at mount time. :wink:

1 Like