Portál AbcLinuxu, 13. května 2025 00:46

Dotaz: sqlite3 - Error: disk I/O error

5.5.2011 14:58 Milan Roubal | skóre: 25
sqlite3 - Error: disk I/O error
Přečteno: 699×
Odpovědět | Admin
Mam problem s sqlite3. Mam script behajici na nekoloka ruznych datech a dneska jsem zacal dostavat tuto chybu:

Error: disk I/O error

Prejmenoval jsem databazi a zacal od zacatku, ale stale to skonci na stejne chybe na stejnem miste. Na disku je dostatek mista i dostatek inodu. Spustil jsem na to strace, vypis viz nize. SQLite3 verze je posledni stazena dnes ze stranek sqlite. sqlite-shell-linux-x86-3070600.zip Jakykoli napad kterym smerem se vydat pri hledani kde je chyba je vitan. Diky
#uname -a
Linux bt 2.6.35.8 #1 SMP Sun Nov 14 06:32:36 EST 2010 i686 GNU/Linux

#mount
/dev/sdb2 on /data type ext4 (rw)

#ls -al
drwxr-xr-x 5 root root        4096 2011-05-05 14:35 .
drwxr-xr-x 7 root root        4096 2011-05-03 13:17 ..
drwxr-xr-x 2 root root        4096 2011-05-04 16:41 data
-rw-r--r-- 1 root root 13341136896 2011-05-05 11:52 double_payment.db
-rw-r--r-- 1 root root 13341136896 2011-05-04 18:14 double_payment.db.diskioerror
-rw-r--r-- 1 root root        1906 2011-05-04 16:42 double_payment_full.sql
-rw-r--r-- 1 root root        1218 2011-05-03 17:07 double_payment.sql
-rw-r--r-- 1 root root         820 2011-05-05 14:35 error.txt
-rwxr-xr-x 1 root root         522 2011-05-03 17:07 merge.sh
drwxr-xr-x 2 root root        4096 2011-05-03 18:00 new_data
drwxr-xr-x 2 root root        4096 2011-05-04 13:52 new_data2
-rw-r--r-- 1 root root           0 2011-05-05 11:57 result_full.txt
-rwxr-xr-x 1 root root         320 2011-05-03 17:08 script.sh
-rwxr-xr-x 1 root root      429712 2011-05-05 10:24 sqlite3
-rw-r--r-- 1 root root   947473631 2011-05-05 12:36 strace.out

#df -h
Filesystem             Size   Used  Avail Use% Mounted on
/dev/sdb2              148G    94G    47G  67% /data

#df -Ti
Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb2     ext4   9158656     545 9158111    1% /data

#strace sqlite3
write(7, "\n\0\0\0\20\0g\0\0g\0\240\0\332\1\22\1M\1\207\1\302\1\374"..., 1024) = 1024
_llseek(7, 23708672, [23708672], SEEK_SET) = 0
read(7, "\n\0\0\0\22\0;\0\0q\0\250\0\336\1\24\1J\1\201\1\267\1\355"..., 1024) = 1024
_llseek(7, 20577280, [20577280], SEEK_SET) = 0
write(7, "\n\0\0\0\21\0c\0\0c\0\226\0\312\0\375\0013\1h\1\236\1\326"..., 1024) = 1024
_llseek(7, 25011200, [25011200], SEEK_SET) = 0
read(7, "\n\0\0\0\20\0\265\0\0\265\0\350\1\35\1S\1\210\1\276\1\363"..., 1024) = 1024
_llseek(7, 22248448, [22248448], SEEK_SET) = 0
write(7, "\2\1A\0\20\0Y\0\0\0R\272\3\305\3\214\3R\0\315\0\226\0Y"..., 1024) = 1024
_llseek(7, 27619328, [27619328], SEEK_SET) = 0
write(7, "\n\0\0\0\20\0{\0\0\353\1$\1]\1\226\1\316\2\6\2>\2v\2\256"..., 1024) = 1024
_llseek(7, 24258560, [24258560], SEEK_SET) = 0
read(7, "\2\0\0\0\17\0\236\0\0\0h\331\3\305\3\213\3Q\3\26\2\334"..., 1024) = 1024
_llseek(7, 31083520, [31083520], SEEK_SET) = 0
write(7, "\n\0\0\0\10\2>\0\2>\2v\2\256\2\347\3!\3Z\3\222\3\311\0"..., 1024) = -1 ENOSPC (No space left on device)
close(7)                                = 0
brk(0x87d0000)                          = 0x87d0000
close(6)                                = 0
brk(0x87b5000)                          = 0x87b5000
fstat64(4, {st_mode=S_IFREG|0644, st_size=1544, ...}) = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=1544, ...}) = 0
_llseek(4, 1528, [1528], SEEK_SET)      = 0
read(4, " tex", 4)                      = 4
_llseek(4, 8, [8], SEEK_SET)            = 0
read(4, "\0\0\0\0", 4)                  = 4
_llseek(4, 12, [12], SEEK_SET)          = 0
read(4, "\254@\344;", 4)                = 4
_llseek(4, 16, [16], SEEK_SET)          = 0
read(4, "\0\306\314f", 4)               = 4
_llseek(4, 20, [20], SEEK_SET)          = 0
read(4, "\0\0\2\0", 4)                  = 4
_llseek(4, 24, [24], SEEK_SET)          = 0
read(4, "\0\0\4\0", 4)                  = 4
_llseek(4, 512, [512], SEEK_SET)        = 0
read(4, "\0\0\0\1", 4)                  = 4
_llseek(4, 516, [516], SEEK_SET)        = 0
read(4, "SQLite format 3\0\4\0\1\1\0@  \0\0\0\r\0\306\314f"..., 1024) = 1024
_llseek(4, 1540, [1540], SEEK_SET)      = 0
read(4, "\254@\345S", 4)                = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=1544, ...}) = 0
_llseek(4, 1528, [1528], SEEK_SET)      = 0
read(4, " tex", 4)                      = 4
close(5)                                = 0
close(4)                                = 0
unlink("/data/data3/double_payment.db-journal") = 0
fcntl64(3, F_SETLK64, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}, 0xbfdb0584) = 0
fcntl64(3, F_SETLK64, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}, 0xbfdb0584) = 0
fcntl64(3, F_SETLK64, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}, 0xbfdb0634) = 0
write(2, "Error: disk I/O error\n", 22Error: disk I/O error
) = 22
write(1, "sqlite> ", 8)                 = 8
read(0, \n

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Ruža Becelin avatar 5.5.2011 15:12 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
Odpovědět | | Sbalit | Link | Blokovat | Admin
write(7, "\n\0\0\0\10\2>\0\2>\2v\2\256\2\347\3!\3Z\3\222\3\311\0"..., 1024) = -1 ENOSPC (No space left on device)

Snazi se zapsat data nekam, kde neni tolik mista - napada me RAM disk a pod.
5.5.2011 15:18 Milan Roubal | skóre: 25
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
vyborne, dobry napad. Napadlo me podivat se podle teto radky kam ukazuje filedescriptor 7 a skutecne ukazuje nekam do /var/tmp. Da se nejak presvedcit sqlite3, aby nepouzivalo temp, ale aby vsechna data a misto vzdycky bral pouze z aktualniho adresare?
5.5.2011 15:23 faha
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
nestacilo by symlinkovat /var/tmp nekam na data oddil ?
5.5.2011 15:56 Milan Roubal | skóre: 25
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
Tak jsem to presymlinkoval, uvidime za par hodin, zda to opet spadne nebo zda to dobehne.

Prosel jsem dokumentaci SQLite a existuje prikaz pro zmenu TEMP adresare,
PRAGMA temp_store_directory = 'directory-name';
Bohuzel tento prikaz je oznaceny v dokumentaci jako zastaraly, ale zatim nikde nevidim zadnou nahradu za tento prikaz.
5.5.2011 19:17 faha
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
Jeste malickost, nevim jak mate rozdeleny disk, ale pokud /var oddile dochazi misto tak to neni uplne nejlepsi (napr. kvuli /var/run apod zalezitostem).
6.5.2011 11:03 Milan Roubal | skóre: 25
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
Tak to presymlinkovani pomohlo, ted to dojelo az do konce. Lepe by ale bylo presvedcit sqlite3, aby ten TEMP ve var nepouzival, protoze po pristim rebootu to bude zase zpet jako posledne.

S rozdelenim disku toho delat moc nelze, system se bootuje z USB image Backtrack linuxu, takze vsechna nastaveni jsou tak nejak defaultni. Volne misto je pouze na tom datovem disku, takze potrebuju presvedcit vsechny nastroje, ktere pouzivam, aby pokud mozno zustali v tom pridelenem datovem disku a nevystrkovali ruzky ven. Diky moc za pomoc.
Heron avatar 5.5.2011 15:14 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: sqlite3 - Error: disk I/O error
Odpovědět | | Sbalit | Link | Blokovat | Admin
Disk, potažmo systém souborů, je v pořádku?
Heron

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.