LINUX.ORG.RU

Проблема с хардом. Не могу прочитать каталог.


0

0

Домашняя файлопомойка. Один из дисков.

$raidho athost # fdisk /dev/sdb -l

Диск /dev/sdb: 500.1 ГБ, 500107862016 байт
255 heads, 63 sectors/track, 60801 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00091741

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1339 60801 477636547+ 83 Linux
/dev/sdb2 1 1338 10747453+ 5 Расширенный
/dev/sdb5 1 1275 10241374+ 83 Linux
/dev/sdb6 1276 1338 506016 82 Linux своп / Solaris


Один из разделов /dev/sdb1 смонтирован в каталог /share/store

UUID=4ebd8d28-7471-423d-b8b5-97269b56a2f4 /share/store ext3 relatime 0 2

$raidho athost # ll /share/store/
итого 230532
drwxrwxrwx 2 nobody nogroup 4096 2009-07-25 15:19 library
drwx------ 2 root root 16384 2009-01-13 15:28 lost+found
drwxr-xr-x 27 athost athost 235790336 2009-08-06 09:42 otstoinik
drwxrwxrwx 2 nobody nogroup 4096 2009-07-17 19:53 pvrdata
drwxrwxrwx 2 athost athost 4096 2009-07-17 15:51 temp
drwxrwxrwx 2 nobody nogroup 4096 2009-07-20 23:09 Thumbs
drwxr-xr-x 4 athost athost 4096 2009-05-14 13:31 torrent

С утра обнаружил, что не могу прочитать содержимое каталога otstoinik, в котором валяется всякое скачанное кино и с которым работает торрент.
Выражается это в том, что при попытке зайти в этот каталог mc или прочитать содержимое ls они виснут.

Отмонтировал, прогнал fsck /dev/sdb1
Долго шуршало, результат нулевой.

Parted выдает вот такую шнягу:

$raidho athost # parted /dev/sdb
GNU Parted 1.8.8
Использование /dev/sdb
Добро пожаловать в GNU Parted! Наберите 'help' для получения списка команд.
(parted) print
Модель: ATA WDC WD5000AAKS-2 (scsi)
Диск /dev/sdb: 500GB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: msdos

Error during translation: Invalid or incomplete multibyte or wide character



Извечный вопрос "Что делать?"



★★★★★

Re: Проблема с хардом. Не могу прочитать каталог.

Да, df вроде правильный размер показывает

$raidho athost # df -h /dev/sdb1
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/sdb1 449G 401G 25G 95% /share/store

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Error during translation: Invalid or incomplete multibyte or wide character

Похоже просто проблема с локализацией parted. Перед запуском попробуй сделать export LANG=C или export LC_ALL=C.

> Извечный вопрос "Что делать?"


В dmesg есть что-нибудь? Что говорит smartctl по поводу этого диска? Тестировал на бед-блоки с помощью badblocks?

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

>> Error during translation: Invalid or incomplete multibyte or wide character

> Похоже просто проблема с локализацией parted. Перед запуском попробуй сделать export LANG=C или export LC_ALL=C.


Естественно, проблему с диском это не исправит. Просто интерфейс parted'а будет на английском и не будут выдаваться ошибки по поводу кривого перевода.

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> LANG=C

Угу. Спасибо.

(parted) print
Model: ATA WDC WD5000AAKS-2 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
2 32.3kB 11.0GB 11.0GB extended
5 64.5kB 10.5GB 10.5GB logical ext3
6 10.5GB 11.0GB 518MB logical linux-swap
1 11.0GB 500GB 489GB primary ext3 boot

Озадачено чешу репу... С чего это проблемный раздел стал загрузочным, если / и /boot/ на sdb5

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Озадачено чешу репу... С чего это проблемный раздел стал загрузочным, если / и /boot/ на sdb5

А, там grub, наверное, стоит.

Млять, как хреново утро началось.

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> В dmesg есть что-нибудь? Что говорит smartctl по поводу этого диска? Тестировал на бед-блоки с помощью badblocks?

В dmesg пусто, кроме

[ 9214.142005] EXT3 FS on sdb1, internal journal
[ 9214.142020] EXT3-fs: mounted filesystem with ordered data mode.

smart вроде тоже нормальный (диск практически новый), только вот это мне не понравилось:

UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 19764


athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> не могу прочитать содержимое каталога otstoinik, в котором валяется всякое скачанное кино и с которым работает торрент.

в зависимости от настроек твоего торрент-клиента, скаченные файлы могут быть ДИКО зафрагментированны. Решается только "cp -r otstoinik otstoinik1; rm -fr otstoinik; mv otstoinik1 otstoinik". Копирование будет очень медленным, и диск будет страшно шуршать и греться (у меня копирование таких торрентов идёт в среднем со скоростью 100Mb/min).

pupok ★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

Попробуй badblocks -s /dev/sdb1. Если чтение пройдёт без ошибок, то виноват не диск, а ФС. Если ошибки будут - виноват диск, в этом случае лучше попробовать скопировать весь раздел куда-нибудь на другой диск, чтобы потом можно было вытащить файлы (если совсем помрёт).

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

Чудеса расчудесные еще в том, что сетевой медиапроигрователь (NetGear) показывает киношку из этого каталога влет, но он заранее сканирует структуру указанных ему каталогов и сохраняет инфу о файлах в своей собственной базе. Значит, сами файлы не повреждены.

Получается, что я их посмотреть на телеке могу, а переписать или удалить -- нет:)))

Как достать инфу?

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Нет бедов. Понятно, что ошибка ФС и именно на этом каталоге, правда, этот каталог 99% раздела занимает.

Попробуй отмонтировать раздел и пройтись по нему fsck.ext3 -fv /dev/чтотамутебя.

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Попробуй отмонтировать раздел и пройтись по нему fsck.ext3 -fv /dev/чтотамутебя.

Только не факт, что после этого сможешь вытащить оттуда данные. Так что если есть возможность - сделай полный бэкап раздела. Собственно если сделаешь бэкап, то можно экспериментировать уже с ним, а не с диском.

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Попробуй отмонтировать раздел и пройтись по нему fsck.ext3 -fv /dev/чтотамутебя.

Да именно это я и делал с самого начала.

Вообще-то файлы из каталога копируются, если указать полный путь с именем файла.

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> strace bash -c 'cd otstoinik' может что выплюнет интересное

тогда уж strace bash -c 'ls'
зацикливается на этом:

getdents(3, /* 85 entries */, 4096) = 4080
getdents(3, /* 85 entries */, 4096) = 4080
getdents(3, /* 85 entries */, 4096) = 4080
getdents(3,




athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> getdents(3, /* 85 entries */, 4096) = 4080
> getdents(3, /* 85 entries */, 4096) = 4080

> getdents(3, /* 85 entries */, 4096) = 4080

> getdents(3,


Strace это выводит и останавливается (зависает) или постоянно срёт такими сообщениями? И сколько в этой директории файлов?

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> А ls из поставки busybox? Зайди в шелл бизибокса (bb) и сделай ls оттуда.

Да, не, это не ls.

Во-первых, вчера еще все работало.
Во-вторых, я пробовал цеплять это диск на других компах, как под гентой, так и под убунтой.

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Да, понятно это. Как исправить-то, вот в чем вопрос.

Ты же говорил, что по полному пути файлы читаются? Попробуй их перенести в другую директорию.

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Ты же говорил, что по полному пути файлы читаются? Попробуй их перенести в другую директорию.

Это очень трудоемкий процесс. Хочется так "раз" и кривой каталог поправил:)

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Опять же причина непонятна, а это не есть хорошо.

Тогда:
1. Создать образ раздела;
2. Удалить с него всё по максисмуму, кроме проблемного каталога;
3. "Обнулить" все файлы внутри каталога (если это конечно _не_ решит проблему), чтобы они не занимали место;
4. Сжать полученный образ;
5. Отправить его в LKML и лично вот этому чуваку: http://en.wikipedia.org/wiki/Theodore_Ts%27o, пусть разбираются что могло к такому привести.

И кстати, ты пробовал обновлять/откатывать ядро и e2fsprogs?

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

Весело, значит ls всегда хочет прочитать все имена файлов из каталога сохраняя их в память и только потом их выводить на экран. Надо будет запомнить.

А так размер каталога "235790336" байт как бы намекает, что у вас там до одного места файлов. Посмотрите, "strace -v ls", там будут видны имена файлов, может поможет.

mky ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Весело, значит ls всегда хочет прочитать все имена файлов из каталога сохраняя их в память и только потом их выводить на экран. Надо будет запомнить.

ls по умолчанию сортирует по имени, а для сортировки необходимо сначала весь список прочитать. Я думал, что с выключенной сортировкой он будет выдавать имена сразу, но похоже разработчики ls решили не напрягаться и не писать лишний код...

> А так размер каталога "235790336" байт как бы намекает, что у вас там до одного места файлов. Посмотрите, "strace -v ls", там будут видны имена файлов, может поможет.


Автор сказал, что у него в той директории всего ~400 файлов. День назад всё работало, так что не думаю что файлы там успели расплодиться.

Я абсолютно не знаю структуру ext3, но мне почему-то кажется, что список айнодов файлов в директории каким-то образом "зациклился" и getdents постоянно ходит по кругу.

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Посмотрите, "strace -v ls", там будут видны имена файлов, может поможет.

Непереставая вываливает вот такое:

_reclen=48, d_name=".directory.lock.aKhz56"} {d_ino=11439183, d_off=72449835, d_reclen=48, d_name=".directory.lock.UiUk56"} {d_ino=12901464, d_off=72450191, d_reclen=48, d_name=".directory.lock.JXov56"} {d_ino=14600354, d_off=72451049, d_reclen=48, d_name=".directory.lock.zmtH56"} {d_ino=12141602, d_off=72451317, d_reclen=48, d_name=".directory.lock.XWTp56"} {d_ino=13788577, d_off=72451513, d_reclen=48, d_name=".directory.lock.CbFB56"} {d_ino=12433469, d_off=72451621, d_reclen=48, d_name=".directory.lock.OTXr56"} {d_ino=9828422, d_off=72451647, d_reclen=48, d_name=".directory.lock.gAw656"} {d_ino=11347966, d_off=72452616, d_reclen=48, d_name=".directory.lock.Lwmk56"} {d_ino=11443172, d_off=72452666, d_reclen=48, d_name=".directory.lock.FHVk56"} {d_ino=13045665, d_off=72453053, d_reclen=48, d_name=".directory.lock.Ooqw56"} {d_ino=13814739, d_off=72453338, d_reclen=48, d_name=".directory.lock.IKOB56"} {d_ino=10288398, d_off=72453402, d_reclen=48, d_name=".directory.lock.zEKc56"}},

athost ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

ИМХО, ваша torrent качалка сошла с ума. Убейте её, запустите как советовали "ls -f1" и подождите, допустим 1 час (вывод ls можно перенаправить в файл). А потом надо перемещать нужные файлы из этого каталога и делать "rm -rf otstoinik". Интерестно, у вас иноды на этом диске остались?

235790336 / 48 = 4912298 файлов в каталоге?

mky ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

200 Метров то не лишнии, удалив файлы из каталога мы не освободим место, занятое самим каталогом. Во всяком случае раньше было так. Поэтом каталог лучше удалять. Правда не знаю, rm -rf удаляет файлы по мере их чтения с помощью getdents() или, аналогично ls, сначала будет создавать список в памяти.

mky ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> 200 Метров то не лишнии, удалив файлы из каталога мы не освободим место, занятое самим каталогом.

Зато ls не будет давиться списком файлов =).

Deleted ()

Re: Проблема с хардом. Не могу прочитать каталог.

Дак дайте им свопа :)

Вот код на Си, который чистит заданный каталог от файлов вида ".directory.lock.*".
Запишите его в файл cld.c, потом "gcc cld.c -o cld", потом "./cld /share/store/otstoinik"
--------------------------------------
#include <unistd.h>                                                             
#include <sys/types.h>                                                          
#include <dirent.h>                                                             
#include <string.h>                                                             
#include <stdio.h>                                                              
                                                                                
int main(int argc, char *argv[]){                                               
    DIR *d;                                                                    
    struct dirent *dpt;                                                                                                                                        

                                                                                    if ( argc < 2 || chdir(argv[1]) ) return 1;                                 
    if ( (d = opendir("./")) == NULL ) return 2;                                
    while ( (dpt = readdir(d)) != NULL ) {                                      
        fputs(dpt->d_name, stdout);                                             
        if ( !memcmp(".directory.lock.", dpt->d_name, 16))                      
            if ( !unlink(dpt->d_name) )                                         
                fputs( " : removed", stdout);                                   
         fputs( "\n", stdout);                                                  
    }                                                                           
    return 0;                                                                   
}
--------------------------------------
P.S. Надеюсь у вас установлен gcc
P.P.S. GPLv3, никакой гарантии.

mky ★★★★★ ()

Re: Проблема с хардом. Не могу прочитать каталог.

> Вот код на Си, который чистит заданный каталог от файлов вида ".directory.lock.*".

+1, я то же самое хотел написать. Но пришёл домой и лёг спать =).

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.