После выполнения операций с большим кол-вом файлов ФС переходит в режим только для чтения
После копирования, перемещения, удаления большого количества файлов файловая система корневого каталога переходит в режим только для чтения. Грешил на диск сначала (когда эти операции проводил в пределах физического диска), но последний раз копировал много файлов на другой физических диск, и в итоге всё-равно система перешла в режим только для чтения. Причём происходило это и раньше на этой же машине, но с другим ядром и другими сборками софта (недавно обновил gcc и пересобрал весь софт), иногда и без моего участия (просто во время работы).
Система:
Linux router 2.6.33 #3 Sun Mar 28 12:49:11 MSD 2010 i686 Intel(R) Celeron(R) CPU 2.66GHz GenuineIntel GNU/Linux
/etc/fstab:
/dev/sda1 /boot ext2 noauto,noatime 1 2
/dev/sda4 / reiserfs noatime 0 1
/dev/sda3 /home reiserfs noatime 0 1
/dev/sda2 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
SMART вроде ничего плохого о состоянии диска не говорит:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 103 095 006 Pre-fail Always - 0
3 Spin_Up_Time 0x0003 095 095 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 67
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 163389386
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 2269
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 115
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 058 050 045 Old_age Always - 42 (Lifetime Min/Max 25/42)
194 Temperature_Celsius 0x0022 042 050 000 Old_age Always - 42 (0 18 0 0)
195 Hardware_ECC_Recovered 0x001a 065 046 000 Old_age Always - 117971011
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
После момента перехода системы в режим только чтение в логах я уже ничего не вижу (да и последние записанные события ничего не предвещали), но при перезагрузке есть такая информация (dmesg):
REISERFS (device sda4): found reiserfs format "3.6" with standard journal
REISERFS (device sda4): using ordered data mode
REISERFS (device sda4): journal params: device sda4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
REISERFS (device sda4): checking transaction log (sda4)
REISERFS (device sda4): replayed 376 transactions in 11 seconds
REISERFS (device sda4): Using r5 hash to sort names
VFS: Mounted root (reiserfs filesystem) readonly on device 8:4.
REISERFS (device sda4): Removing [36767 2319905 0x0 SD]..done
REISERFS (device sda4): There were 1 uncompleted unlinks/truncates. Completed
REISERFS (device sda3): found reiserfs format "3.6" with standard journal
REISERFS (device sda3): using ordered data mode
REISERFS (device sda3): journal params: device sda3, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
REISERFS (device sda3): checking transaction log (sda3)
REISERFS (device sda3): Using r5 hash to sort names
Кто что может подсказать, что посмотреть, куда копать?
- Для комментирования войдите или зарегистрируйтесь
fsck
Начните с загрузки с параметром init=/bin/bash и прогоните reiserfsck --check --logfile check.log /dev/sda4
В сообщениях ядра ничего аномального не наблюдается, за исключением, VFS: Mounted root (reiserfs filesystem) readonly on device 8:4.
Seagate?
Да, Seagate. Позже попробую с
Да, Seagate. Позже попробую с LiveCD загрузиться и ещё раз прогнать fsck.
reiser
Именно с reiserfs и seagate на рабочем компьютере некоторое время назад боролся с проблемой. Заметно тормозил вывод ls в директории с большим количеством файлов, причем эта задержка со временем прогрессировала. В конце-концов работать стало невозможно, поставил новый винт - испугало похожее значение параметра, потом прочитал, что для сигейта это ничего не значит.
7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 163389386
В результате, аппаратная проблема не подтвердилась. reiserfsck проблем не обнаруживал. Со старого диска с помощью dd успешно и без ошибок был слит образ. При попытке копирования файлов как с reiserfs диска, так и со смонтированного через -o loop образа, на некотором (не повторяющемся) файле происходило зависание процесса. Терминал в "иксах" не убивался никак. kill -9 на процессы cp, сам терминал и родительский bash не работали. Получалось убивать процесс только через alt+sysrq+k в консоли. В сообщениях ядра - пусто. Пришлось заключить, что баг рейзера.