OK, I figure it out
Compaction always writes to hard drive that has more free space.
see DatabaseDescriptor.getDataFileLocationForTable(String table, long expectedCompactedFileSize)

That is how all the data might end up in one folder only.
In the long run, provided that one has enough data, biggest hard drive will always be stressed the most, that affects read performance.

On Tue, Sep 29, 2009 at 3:46 PM, Jonathan Ellis <jbellis@gmail.com> wrote:
On Tue, Sep 29, 2009 at 2:22 PM, Igor Katkov <ikatkov@gmail.com> wrote:
> Does cassandra distributes keys evenly among DataFileDirectories?

No, but it should distribute sstables evenly (which, on average,
should be distributing keys evenly, but there will be large variance).

> Questions:
> 1. Is it by design?

Each time a sstable is created, either by flush or compaction, it
should pick the "next" directory to use.

> 2. Is there a way to control key distribution, for the cases when
> hard-drives are of different capacity?

No.  (That wouldn't be hard to add, but nobody's needed it.)