Why do I keep getting Low storage message even when i have so much storage free?

Your internal storage has two partitions, Phone Storage and Internal Storage. The internal storage is all you get to store applications. The other partition that is the phone storage is treated as a SD card by your device and Google APIs, and this is the root of all confusion. So you might have storage space available on phone storage but you can’t install apps on it.

All preloaded apps are installed on precious internal storage space. Most users won’t find this problematic as 2 GB is good enough for Apps, for an average user. What makes matter worse is apps dumping their data in this storage space and several logs which can go up to 100s of MB. Recommended: What is Difference between Internal, Phone and External Storage? Android Storage Explained Rooted users can use apps like DiskUsage and go to /Data directory to see how their storage is being consumed. Don’t be surprised to see heaps of Log files (which you can delete to free space), dalvik cache and more.

Why do OEMs partition internal storage in the first place?

The main reason to do so is security. Users and most importantly other apps, shouldn’t be allowed to peek in other app sensitive data and system files and thus a separate partition is used in the internal storage with proper permission setup. This is what you know as 2 GB or so of internal storage.  

This part doesn’t function as a FAT32 file system, which means there is a proper permission setup that apps have to go through before reading or writing at any place. The other part, the phone storage discards all permission checking and behaves like a FAT area similar to your SD card (although its not based on FAT file system) . FAT32 is a mess and its all or none permission structure isn’t very secure (once permission is granted, complete read write access is granted). Since SD cards are compatible with large array of devices apart from Android phones, they will remain based on FAT file system for compatibility, So in Indian market, you mostly see phones which allow you to store apps and data on entire internal storage, but in such devices Apps can’t be stored on SD card or there is no SD card slot at all. On the other hand, you see phones which allow you to transfer some apps or parts of apps (sensitive part is kept on device)to SD card, but have only 2 GB of internal storage space.

Why you can’t have both Unified storage and Apps on SD card?

There is no hardware restriction to it, but this will make everything complicated. With security issues addressed in Android Kitkat, the goal is even more difficult to realize in practice. In Google engineer Dan Morrill’s own words – “One of the core Android principles is that you never need a file manager. Ever. We wanted to avoid the obnoxious “sneeze and a file picker appears” syndrome of basically every other OS. Local data that apps know how to handle should just be magically available within the apps, or stored in the cloud. You shouldn’t have to go spelunking on your SD card to find data. The problem with having both internal storage and SD cards is that suddenly that goal gets a whole lot harder to achieve. For a given shot, should the camera save to internal-16GB, or to SD card? Should an app from Market be installed to internal or SD? etc.”

With earlier Android version, SD card played a very significant role. Only OS and some files were present on the device while everything else including apps, their data and Media was supposed to be situated on your SD card. Later OEMs started partitioning internal storage and dedicating one as  internal SD card or Phone storage. Google introduced “Move to SD” in order to move stuff to SD card (app data and parts of apps), and there has been confusion ever since.

With Honeycomb, Google introduced a unified internal storage model, where entire storage on your device was available for all, but it wasn’t widely adopted. Since SD cards are formatted on FAT file system, an app which has permission to access SD card can write everywhere on the SD card including system folders. For better security and preventing apps from dumping data anywhere on your SD card, this has been changed with Android 4.4 Kitkat Apps can now read and write freely in their folder on SD card without any permission required, they can also read from all folders on SD card with appropriate permission, but they can’t edit it or write anything on it. Unlike the Honeycomb model, this one has been universally adopted by all major OEMs and everyone will be affected.

What changed after KitKat?

Now power users can’t dump files anywhere on SD card if they want to do anything more than read them. For example, if you have images scattered on SD card , your photo editor app can read them but can’t save edits and changes you make to them. File explorers and backups won’t work as earlier either. Also if you delete an app, all data in its folder will vanish as well. So if you have Images and important photographs stored in third party app folders, you should transfer them someplace else before you uninstall the application. All these changes can easily be reverted by rooted users, but conventional users would have to comply. This is good for security but takes away the SD card freedom we have come to love in Android phones over years. In India we can see the adoption in several 8 GB, Android kitkat phones popping up these days. Now the OEMs in India are adopting 8 GB internal storage model and it’s not out of generosity. Most (not all) of these phones do not allow users to install apps in SD card, but you get the entire internal storage space to use as you please. Suddenly, large Internal Storage phones (16 GB/ 32 GB) without SD card slot seem more lucrative option then 8 GB +SD card storage devices.

Conclusion

The internal storage partition is there because of security reasons and the issue will be better handled in the next generation devices. The security patches in Kitkat aren’t all bad. Depending on your perspective, this can be a much needed initiative for improving Android security – a change which has been due for a long time. This definitely is annoying for power users and takes some getting used to, but such users can root and get back to as things used to be.