Hi, On Mon, Feb 27, 2012 at 12:28:00PM +0000, Alex Hornung wrote: > > On 27/02/12 12:20, Zenny wrote: > > I tried to create a RAID10 with natacontrol with 4 2TB HDDs, but it > > only shows 2TB (1718306MB) size of ar0 created instead of 4TB. > > In principle there is no such limit that I'm aware of, apart from the > MBR partition size limit. It all depends where you are seeing those 2 > TB. If it's a partition size, try using GPT.
Nataraid itself doesn't seem to be limited to 2TB RAID volumes but some of the on-disk metadata format it uses are. By default, when no BIOS-created metadata is recognized, natacontrol creates a volume using the Promise metadata format -- and this one has an inherent limit of 32-bit disk sectors. The Intel MatrixRAID format moves this limit to 64-bit sectors, way beyond the 2TB barrier. The attached patch changes nataraid to use it by default instead of the Promise format. It _could_ allow the creation of > 2TB RAID volumes on unrecognized controllers. -- Francois Tigeot
diff --git a/sys/dev/disk/nata/ata-raid.c b/sys/dev/disk/nata/ata-raid.c index 8438614..505a912 100644 --- a/sys/dev/disk/nata/ata-raid.c +++ b/sys/dev/disk/nata/ata-raid.c @@ -1105,11 +1105,11 @@ ata_raid_create(struct ata_ioc_raid_config *config) * metadata format from the disks (if we support it). */ kprintf("WARNING!! - not able to determine metadata format\n" - "WARNING!! - Using FreeBSD PseudoRAID metadata\n" + "WARNING!! - Using Intel PseudoRAID metadata\n" "If that is not what you want, use the BIOS to " "create the array\n"); - ctlr = AR_F_FREEBSD_RAID; - rdp->disks[disk].sectors = PROMISE_LBA(rdp->disks[disk].dev); + ctlr = AR_F_INTEL_RAID; + rdp->disks[disk].sectors = INTEL_LBA(rdp->disks[disk].dev); break; }