Disk getDiskWithMostUnallocatedRawCapacity(DataNode node, long minCapacity) {
    Disk maxCapacityDisk = null;
    List<Disk> disks = node.getDisks();
    for (Disk disk : disks) {
      if ((maxCapacityDisk == null || getUnallocatedRawCapacityInBytes(disk) > getUnallocatedRawCapacityInBytes(
          maxCapacityDisk)) && getUnallocatedRawCapacityInBytes(disk) >= minCapacity) {
        maxCapacityDisk = disk;
      }
    }
    return maxCapacityDisk;
  }
How many data nodes to put in a random sample for partition allocation. 2 node samples provided the best balance
of speed and allocation quality in testing. Larger samples (ie 3 nodes) took longer to generate but did not
improve the quality of the allocated partitions.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/StaticClusterManager.java