UBI: Single versus Multiple Images

Doug Kehn rdkehn at yahoo.com
Wed Jun 6 07:53:12 EDT 2012


Hi Artem,



> From: Artem Bityutskiy <dedekind1 at gmail.com>
> Sent: Wednesday, June 6, 2012 4:14 AM
> 
> On Tue, 2012-06-05 at 06:21 -0700, Doug Kehn wrote:
>>  Hi Everyone,
>> 
>>  I have the following NAND flash MTD layout (presently JFFS2):
>> 
>>  * Boot-loader
>>  * Kernel
>>  * Root file-system (rootfs)
>> 
>>  * Data
>> 
>>  I'm going to switch from JFFS2 to UBI/UBIFS.  I'm wondering if it 
> is
>>  better to create a single UBI image containing both rootfs and data
>>  volumes or to create separate UBI images (each with a single volume)
>>  or is the answer it depends?
> 
> Are you actually talking about how to partition your flash - whether to
> have one partition or several?
>

I'm asking about whether to create one UBI image that contains multiple volumes or create UBI multiple images that contain a single volume.  The layout is:

mtd0  boot-loader
mtd1  kernel
mtd2  rootfs
mtd3  data

Thus, is it better or does it matter if a single ubi.conf is used to configure rootfs and data or if multiple ubi.conf are used (1 for rootfs and 1 for data).

>>  The data volume will be used for logging data.  The volume won't
>>  completely fill as old data will be purged to make room for new data.
>>  For the single image multiple volume case, if I understand the 
>>  documentation correctly, UBI will use all PEB from both volumes for
>>  mapping per-volume LEB, 
>>  correct?  If my understanding is correct, then it's possible, after
>>  enough time, maximum PEB erase count will be reached and both rootfs
>>  and data volumes will be read-only?  If the goal is to keep the rootfs
>>  volume writable, even if the data volume become read-only, then would
>>  it be better to create multiple UBI images?  Or is my understanding
>>  all wrong?
> 
> I do not really understand the questions. UBI will do wear-leveling
> across the mtd device it is attached to. If you have one MTD partition
> which spans entire flash, you'll have wear-leveling across entire flash.
> You will ave /dev/ubi0 represinting the UBI device,
> and /dev/ubi0_0, /dev/ubi0_1, etc for each volume for this UBI device
> number 0.
> 
> If you partition your flash, then each partition will be managed
> independently, and you'll have wear-leveling per-partition. So one
> partition may wear out faster than another. You'll
> have /dev/ubi0, /dev/ubi1, etc for each partition. Then if you create a
> volume in each UBI device, you'll have /dev/ubi0_0, /dev/ubi1_0, etc for
> each volume.
> 

This clears up my confusion.

Thanks,
...doug



More information about the linux-mtd mailing list