A method for storing data, comprising: facilitating a negotiation, by a file system, with a storage device to specify that a first stream identifier is used to tag user data, to specify that a second stream identifier is used to tag metadata, to specify that data of a first stream tagged with the first stream identifier are to be stored within a first allocation area of the storage device and to specify that data of a second stream tagged with the second stream identifier are to be stored within a second allocation area of the storage device; receiving first data to write to the storage device and in response, sorting and ranking allocation areas of the storage device into a first sorted set of allocation areas based upon a user data characteristic of the first data, first amounts of available free space of each allocation area, and/or further sorting criteria; selecting a first allocation area from the first sorted set of allocation areas based upon the first allocation area having a highest rank of allocation areas that can be used for storing user data; receiving second data to write to the storage device and in response, re-sorting and re-ranking the allocation areas of the storage device into a second sorted set of allocation areas based upon a metadata characteristic of the second data, second amounts of available free space of each allocation area, and/or further sorting criteria; selecting a second allocation area from the second sorted set of allocation areas based upon the second allocation area having a highest rank of allocation areas that can be used for storing metadata; sending the first data to the storage device through the first stream tagged with the first stream identifier; and sending the second data to the storage device through the second stream tagged with the second stream identifier. facilitating a negotiation, by a file system, with a storage device to specify that a first stream identifier is used to tag user data, to specify that a second stream identifier is used to tag metadata, to specify that data of a first stream tagged with the first stream identifier are to be stored within a first allocation area of the storage device and to specify that data of a second stream tagged with the second stream identifier are to be stored within a second allocation area of the storage device; receiving first data to write to the storage device and in response, sorting and ranking allocation areas of the storage device into a first sorted set of allocation areas based upon a user data characteristic of the first data, first amounts of available free space of each allocation area, and/or further sorting criteria; selecting a first allocation area from the first sorted set of allocation areas based upon the first allocation area having a highest rank of allocation areas that can be used for storing user data; receiving second data to write to the storage device and in response, re-sorting and re-ranking the allocation areas of the storage device into a second sorted set of allocation areas based upon a metadata characteristic of the second data, second amounts of available free space of each allocation area, and/or further sorting criteria; selecting a second allocation area from the second sorted set of allocation areas based upon the second allocation area having a highest rank of allocation areas that can be used for storing metadata; sending the first data to the storage device through the first stream tagged with the first stream identifier; and sending the second data to the storage device through the second stream tagged with the second stream identifier.