[linux-lvm] Using Oracle with lvm AND rawio: read(512) from

Michael Tokarev mjt at tls.msk.ru
Mon Dec 4 15:16:36 UTC 2000

Michael Tokarev wrote:
> Changed BLOCK_SIZE to 512 (from 1024) and recompiled.
> Lvm won't work anymore at all, any i/o (read/write) on
> any lv gives "no such device or address" error...
> Any ideas? :(((

Oh, my bad, I'm sorry!..  It worked with BLOCK_SIZE=512, I forgot to
vgchange -ay !

So, with BLOCK_SIZE=512, it is ok, and dd ... bs=512 is also ok.
With 1024, it won't work with invalid argument.

What I noticied also is that regardless of actual block size
used in lvm, stat() on raw device on top of it reports
st_blksize=4096 (not 512 nor 1024) -- is this Ok?

And -- Jorg de Jong, can you please strace the ts creation
process?  I'm very interested on i/o buffer sizes used there.

If e.g. your ORACLE_SID=orcl, do the following:

  oracle> sqlplus internal/

then in other window/terminal, find pid of "oracleorcl"
(oracle$ORACLE_SID) process started by sqlplus:
  # ps -fu oracle
  oracle   14343 13857  0 18:02 pts/3    00:00:00 sqlplus
  oracle   14344 14343  0 18:02 ?        00:00:00 oracleorcl (DESCRIPTION=(LOCAL=...
           ^^^^^ ^^^^^                            ^^^^^^^^^^
and do the following:
  [ other window ]
  # strace -o trc -v -p 14344 ($PID of that process)

  [ sqlplus window ]
  SQL> create tablespace ... ;

  [ other window ]
  # _  

Then examine `trc' file made by strace.  I'm interested in:
 1) st_blksize of /dev/raw/rawNN device
 2) read/write sizes requested by oracle on that device.

And also try:
  dd of=/dev/null if=/dev/raw/raw100 bs=512
   and the same with bs=1024
  (this will not destroy data)
 (/dev/raw/raw100 bound to one of LVs).

If you successefully created the tablespace, then
either oracle uses only 1024*n i/o (my 8.1.6 uses 512
sometimes) or your kernel allows to use 512 bytes...

Thank you!


More information about the linux-lvm mailing list