Re: UBI: Single versus Multiple Images

Doug Kehn
2012-06-06T11:53:15Z

Hi Artem,

> From: Artem Bityutskiy <dedekind1@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