Re: filesystem for solid state drives in linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just came across another SSD based paper from M$.

http://research.microsoft.com/pubs/76522/tr-2008-169.pdf

It discusses deployment issues into servers.

Greg

On Fri, Jan 16, 2009 at 7:37 AM, Greg Freemyer <greg.freemyer@xxxxxxxxx> wrote:
> For a good technical overview of how a SSD is implemented inside the
> SSD itself read
>
> http://research.microsoft.com/pubs/63596/USENIX-08-SSD.pdf
>
> This whitepaper was written prior to the TRIM functionality being
> implemented in SSDs, so it does not talk about that.  But merely says
> it would be nice to have a way for the SSD to know when sectors/blocks
> are being freed by the filesystem.
>
> more comments interspersed.
>
> On Fri, Jan 16, 2009 at 1:56 AM, Peter Teoh <htmldeveloper@xxxxxxxxx> wrote:
>> thank you.....but then i don't really understand...please help me out:
>>
>> quoting from the article:
>>
>> "At the lower levels, groups like the T13 committee (which manages the
>> ATA standards) have created protocol extensions to allow the host
>> computer to indicate that certain sectors are no longer in use; T13
>> calls its new command "trim." Upon receipt of a trim command, an ATA
>> device can immediately add the indicated sectors to its free list,
>> discarding any data stored there. Filesystems, in turn, can cause
>> these commands to be issued whenever a file is deleted (or truncated).
>> That will allow the storage device to make full use of the space which
>> is truly free, making the whole thing work better."
>>
>> So my question is:   so now the hardware maintain something called a
>> "freelist"?
>
> Yes.  Part of the SSDs stable memory is used to track status of each
> wear leveling unit.  ie. To wear level, the SSD has to know how many
> times the individual erase zones have been erased, which are free,
> etc.  See the MS article for a much better discussion of this.
>
>> the interface between software and hardware are the ATA
>> commands, correct?
>
> Yes, as described in the proposed ATA spec you linked at the end of your post.
>
>> so anything after the ATA are
>> firmware-implementation?
>
> Yes
>
>> so is there not now a duplicated list of
>> "freelist" of sectors - one at the firmware level, and another at the
>> filesystem level?
>
> Similar, but it is NOT a conceptual problem for SSD to think a sector
> is in use that the FS thinks is not.  It just means the wear-leveling
> algorithm can't use that sector even though the filesystem would not
> object.
>
> Thus ext2/3 will continue to work with SSDs even though they never
> discard any sectors. ie. the freelist at the FS level is extremely
> different than the one in the SSD.
>
> BUT the SSD is conservative.  Once a logical sector is written, the
> only way to get the logical sector back into the SSDs free list is for
> the kernel to "discard" it.
>
>> if true, then it also mean a corresponding ATA
>> command for "allocation" of sectors....correct?
>
> No, the FS just writes to a logical sector.   If that logical sector
> does not already have a physical sector assigned, the SSD will
> allocate one and write to it. Read the MS paper for the gory details
> of what really happens.  It is surprisingly complex.
>
>>  i think and deduced
>> these are needed....because of wear leveling requirements as explained
>> earlier in the article.
>>
>> From the ATA spec:
>>
>> http://t13.org/Documents/UploadedDocuments/docs2007/e07154r3-Data_Set_Management_Proposal_for_ATA-ACS2.pdf
>>
>> it can be understood that the requirements for the TRIM (or deallocate
>> basically) command is because of frequency statistics needed by the
>> firmware.....to implement wear leveling i supposed?
>
> If I do "dd if=/dev/zero of=/dev/sdc" where sdc is a SSD all of the
> sectors are allocated and contain real data.  How can the wear
> leveling algorithm work?  No free sectors??
>
> Answers are 2:
>
> 1) Over build the SSD to always have free sectors, even when it
> appears full.  This is how flash has worked historically.
>
> 2) Make the SSD smarter and have the kernel tell the SSD when sectors
> are no longer needed and available for wear-leveling use.  This is the
> new "trim" feature.  Linux is using the term DISCARD.
>
> FYI:
>  I have researched this because of my profession.  With normal HDDs we
> have 3 normal things we do:
>
> 1) Read all sectors of a drive and recover deleted files.
>
> It is not certain, yet but if the SSD manufacturers make the discarded
> sectors unreadable, this will no longer be feasible via normal sector
> read requests.
>
> 2) Wipe a file to ensure it is not recoverable. (ue. shred file)
>
> Due to wear leveling this is not possible.  Maybe the shred tool needs
> to be adjusted to test for SSDs and return a fail code if the file is
> sitting on one?
>
> 3) Wipe a drive
>
> Same.  Strangely NIST has a document that says it is an acceptable
> solution for "confidential" data.
>
> I can understand that because there is no way I am aware to get to the
> unallocated sectors of the SSD via the ATA interface.  But normally
> NIST is more paranoid and worries about laboratory attacks.  By
> modifying the SSD I think a good lab would be able to read those
> unallocated sectors.
>
> Greg
> --
> Greg Freemyer
> Litigation Triage Solutions Specialist
> http://www.linkedin.com/in/gregfreemyer
> First 99 Days Litigation White Paper -
> http://www.norcrossgroup.com/forms/whitepapers/99%20Days%20whitepaper.pdf
>
> The Norcross Group
> The Intersection of Evidence & Technology
> http://www.norcrossgroup.com
>



-- 
Greg Freemyer
Litigation Triage Solutions Specialist
http://www.linkedin.com/in/gregfreemyer
First 99 Days Litigation White Paper -
http://www.norcrossgroup.com/forms/whitepapers/99%20Days%20whitepaper.pdf

The Norcross Group
The Intersection of Evidence & Technology
http://www.norcrossgroup.com

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux