[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[linux-lvm] Max logical volume size 1TB or 2TB?



Well, I finally collected enough storage to test whether you can create
a logical volume of greater than 1 TB.  It didn't really dawn on me exactly
how big a TB is until after collecting 75 18-36 GB drives together to 
get to something this size.

Anyway,

I patched LVM 0.9.1_beta7 lvm.h source a little to get past the system
defined limits.

These are the changes I made:

#define LVM_LV_SIZE_MAX(a)      ( ( long long) LVM_PE_T_MAX * (a)->pe_size > ( 
long long) 1024*1024/SECTOR_SIZE*1024*1024*2 ? ( long long) 
1024*1024/SECTOR_SIZE*1024*1024*2 : ( long long) LVM_PE_T_MAX * (a)->pe_size)

#define LVM_MAX_SIZE            ( 1024LU * 1024 / SECTOR_SIZE * 1024 * 1024*2)

goes to:

#define LVM_LV_SIZE_MAX(a)      ( ( long long) LVM_PE_T_MAX * (a)->pe_size > ( 
long long) 1024*1024/SECTOR_SIZE*1024*1024*2 ? ( long long) 
1024*1024/SECTOR_SIZE*1024*1024*2 : ( long long) LVM_PE_T_MAX * (a)->pe_size)

#define LVM_MAX_SIZE            ( 1024LU * 1024 / SECTOR_SIZE * 1024 * 1024*2)


Note that I have multiplied by 2.


After installing and running a new kernel, I get the following error when
running pvcreate on any of the disks:
<333> lvm_check_dev -- LEAVING with ret: 1
<22> pv_check_consistency -- LEAVING with ret: -222
<1> pv_write -- LEAVING with ret: -99
<1> lvm_error -- CALLED with: -99
<1> lvm_error -- LEAVING with: "parameter error"
pvcreate -- ERROR "parameter error" creating physical volume "/dev/sdc"


I then looked at tools/lib/pv_check_consistency.c and found:

   else if ( pv->pv_size > LVM_MAX_SIZE)
         ret = -LVM_EPV_CHECK_CONSISTENCY_PV_SIZE;

where

#define define LVM_EPV_CHECK_CONSISTENCY_PV_SIZE 222

Since all of my PV's are well under 2 TB, I believe that the
LVM_MAX_SIZE macro is overflowing.

Incidently, I tried the same thing but left the LVM_MAX_SIZE macro
unchanged. In this test, everything worked fine, except that I could
not create a logical volume bigger than 1 TB.  So it looks like
Heinz's internal documentation is correct.

Again, Is there any reason that this number should not be 2 TB given that
2^32 * 512 = 2 TB?  Other than not consistently using unsigned long longs?

Andrew 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Andrew Patterson                          Voice:  (970) 898-3261
   Hewlett-Packard    			     Email: andrew fc hp com





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]