[linux-lvm] Using Oracle with lvm AND rawio: read(512) from
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...
More information about the linux-lvm