LINUX.ORG.RU

Проблемы с диском и порядок монтирования

 , , ,


0

1

Что-то случилось с моим бесперебойником и он отключился. После отключения один из дисков длительно проверялся и сыпал ошибками.

Сейчас его SMART такой:

> sudo smartctl -a /dev/sdb
[sudo] password for alex: 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.0.4-040004-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Green
Device Model:     WDC WD6400AADS-00M2B0
Serial Number:    WD-WCAV57630362
LU WWN Device Id: 5 0014ee 203fbba9c
Firmware Version: 01.00A01
User Capacity:    640 135 028 736 bytes [640 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Jan  4 01:27:59 2016 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x84)	Offline data collection activity
					was suspended by an interrupting command from host.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(15060) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 175) minutes.
Conveyance self-test routine
recommended polling time: 	 (   5) minutes.
SCT capabilities: 	       (0x3037)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       2391
  3 Spin_Up_Time            0x0027   088   088   021    Pre-fail  Always       -       8625
  4 Start_Stop_Count        0x0032   098   098   000    Old_age   Always       -       2044
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   040   040   000    Old_age   Always       -       44295
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1985
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       505
193 Load_Cycle_Count        0x0032   001   001   000    Old_age   Always       -       703684
194 Temperature_Celsius     0x0022   125   096   000    Old_age   Always       -       22
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   190   190   000    Old_age   Always       -       1140
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       34
199 UDMA_CRC_Error_Count    0x0032   200   198   000    Old_age   Always       -       16080
200 Multi_Zone_Error_Rate   0x0008   196   195   000    Old_age   Offline      -       585

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     14069         -
# 2  Extended offline    Interrupted (host reset)      90%     14069         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay
Причем при прошлой перезагрузке было меньше тысячи поврежденных скторов. Походу он умирает. Я не сильно переживаю, поскольку бэкапы есть но вот что странно - тут нужен отрывок из fstab, вот он:
UUID=d3120e12-4dfe-4d3c-bc6b-50b948f7447f 	/mnt/dev/storage 		ext4    defaults,noatime,commit=117        						0       2

bindfs#/mnt/dev/storage 	/mnt/storage	fuse	create-as-mounter,create-for-group=users,create-with-perms=u+rwD:g=rD:o-rwx,chmod-filter=g-w:o-rwx,perms=u+rwD:g=rD:o-rwx,mirror=alex:marianna,force-group=users		0	0
Именно в таком порядке. Так вот, он биндится в /mnt/storage раньше чем монтируется в /mnt/dev/storage и в /mnt/storage пустата соотвественно. Почему так?

И еще в dmesg сыплет такое когда по нему ходишь ФМом:

[  630.688000] sd 1:0:0:0: [sdb] tag#15 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  630.688000] sd 1:0:0:0: [sdb] tag#15 Sense Key : Medium Error [current] [descriptor] 
[  630.688000] sd 1:0:0:0: [sdb] tag#15 Add. Sense: Unrecovered read error - auto reallocate failed
[  630.688000] sd 1:0:0:0: [sdb] tag#15 CDB: Read(10) 28 00 45 40 0a 88 00 00 08 00
[  630.688000] blk_update_request: I/O error, dev sdb, sector 1161824905
[  630.688000] ata2: EH complete
[  633.760000] ata2.00: exception Emask 0x0 SAct 0x7fff87ff SErr 0x0 action 0x0
[  633.760000] ata2.00: irq_stat 0x40000008
[  633.760000] ata2.00: failed command: READ FPDMA QUEUED
[  633.760000] ata2.00: cmd 60/08:50:c8:0a:40/00:00:45:00:00/40 tag 10 ncq 4096 in
[  633.760000]          res 41/40:00:cb:0a:40/00:00:45:00:00/40 Emask 0x409 (media error) <F>
[  633.760000] ata2.00: status: { DRDY ERR }
[  633.760000] ata2.00: error: { UNC }
[  633.764000] ata2.00: configured for UDMA/133
[  633.764000] sd 1:0:0:0: [sdb] tag#10 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  633.764000] sd 1:0:0:0: [sdb] tag#10 Sense Key : Medium Error [current] [descriptor] 
[  633.764000] sd 1:0:0:0: [sdb] tag#10 Add. Sense: Unrecovered read error - auto reallocate failed
[  633.764000] sd 1:0:0:0: [sdb] tag#10 CDB: Read(10) 28 00 45 40 0a c8 00 00 08 00
[  633.764000] blk_update_request: I/O error, dev sdb, sector 1161824971
[  633.764000] ata2: EH complete

Дополнительный вопрос - как узнать какие файлы в поврежденных секторах? Очень не хочется тянуть весь бэкап.

Ну и на последок вопрос - что купить на замену? Это файлохранилище, как наверно понятно их имен точек монтирования. Фоточки, кинцо, музыка. Скорость особенно не нужна соответственно. Надежность и тишина в приоритете.

Варианты:
Seagate SV35 ST1000VX000 1 Тб
Seagate Surveillance ST1000VX001 1 Тб
WD Blue WD10EZRZ 1 Тб
Toshiba DT 01ACA100 1 Тб

★★★★★

Последнее исправление: Suntechnic (всего исправлений: 3)

1. может и умирает, а может кабель плохой или питание. Проверь. (есть смарт тест для кабеля)

2. выбирай диски, на которые гарантия 5+ лет.

soomrack ★★★★
()
Ответ на: комментарий от soomrack

1. может и умирает, а может кабель плохой или питание. Проверь. (есть смарт тест для кабеля)

До этого аварийного отключения был хороший, а теперь плохой стал? Странной совподение. Да и кабель я менял с полгода назад (до этого были проблемы с кабелями - все сменил) и стало вроде нормуль. А диск этот давно уже выкабенивается.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

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

Но попробуй просто кабель переткнуть. Может пыль или еще что. Еще бывают варианты, когда БП не держит ток — либо дохнет, либо повесил на линию со всякими вентиляторами с регуляторами... У меня как-то было так — переключаю вентиляторы на повышенное напряжение рычажком, диски отваливаются...

soomrack ★★★★
()
Ответ на: комментарий от soomrack

Ну например то, что 197 Current_Pending_Sector растет. Уже 1176. И до этого отключения такого не было. Но попробую завтра с кабелями конечно...

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от soomrack

И еще меня напрягает то что он теперь монтируется медленно. Не успевает примонтироваться к тому времени как его же забиндить надо.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

С современным systemd из fstab'a генерируются юниты, которые выполняются параллельно. Какого-то прямого способа указать зависимости нет. Выход - зависимые операции выносить в отдельный юнит. Самое простое и прозрачное - логику вынести в bash скрипт(ы), а уже его запуск(остановку) осуществлять через юнит.

П.С. пришли к единообразию, простоте и отсутствию велосипедов и костылей с вводом systemd. Ага...

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от Jurik_Phys

Ты не прав:

  1. зависимости между mount-юнитами расставляются автоматически, бинды учитываются;
  2. любые юниты можно дополнять, в том числе автогенерируемые и в том числе на предмет зависимостей.

Так что да, пришли к единообразию. Кто ж мог подумать, что люди с почти религиозной яростью ополчатся против нового софта, станут показательно игнорировать маны и все проблемы по-прежнему будут пытаться решить с помощью местечковых хаков (а потом сетовать на неполноценность оного софта, питая положительную обратную связь).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Вполне реальная задача. Монтировать sda1 в каталог «1» и sda2 в каталог «2», после этого объединить их в общий каталог «3» с помощью aufs.

Systemd, без написания отдельного юнита на процесс объединения «1» и «2», вполне могло объединить их до монтирования sda1, sda2. В итоге, получалась тыква.

Пришлось писать юнит на процесс объединения каталогов, указывая необходимые зависимости, автоматически ничего не учитывалось. Возможно, bind, как распространенный случай и запихнули в systemd, но судя по результатам ТС'а (если предположение о наличии у него systemd верное), работает оно не очень.

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от Jurik_Phys

если предположение о наличии у него systemd верное

верное, верное

работает оно не очень

ну вот как проблемы с винтом начались - стала всплывать эта трбла. Винт заменил (взял таки WD Blue) - сейчас нормально. Но когда при перезагрузке попадаю на проверку диска - проскакивает. Биндится раньше ((( В таких случаях я тупо перегружаюсь.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от intelfx

люди с почти религиозной яростью ополчатся против нового софта, станут показательно игнорировать маны

Ничего особого против systemd не имею, но при попытке сделать что-то сложнее самых простых примеров упирался в стену ограничений systemd (маны курил, видеолекции с лора смотрел, арче-вики читал и.т.д.). И, спасибо, что можно весь функционал, за исключением зависимостей вынести в скрипты. Хоть какой-то способ заставить систему выполнить то, что требуется.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от Jurik_Phys

Systemd, без написания отдельного юнита на процесс объединения «1» и «2», вполне могло объединить их до монтирования sda1, sda2.

Это делается путём явного указания недостающих зависимостей в .mount-юните (для чего есть аж два способа, о которых ты, конечно же, не слышал). Здесь совершенно необязательно писать свой велосипед и потом жаловаться на systemd, что он-де не гибкий.

bind, как распространенный случай и запихнули в systemd

bind действительно обрабатывается автоматически, как распространённый случай, но это не отменяет вышесказанного.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от Suntechnic

Покажи fstab (или как ты там биндишь) и вывод systemctl show -p Wants,Requires,Before,After,WantedBy,RequiredBy,RequiresMountsFor <путь> для путей к обоим точкам монтирования (исходной и той, куда биндишь).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       34

Срочно тырить все данные которые на диски еще живые, а диск - в мусорку

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Нечего там тырить. Все ценное из бэкапа востановил. Фильмицо перекачаю. Ну музло скопировал, но диск очень медленно работает - всё копировать вломы. Чо за параметр?

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от intelfx
> systemctl
fish: Unknown command “systemctl”
systemctl: команда не найдена

А выдержки из fstab в стартовом сообщении.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Это делается путём явного указания недостающих зависимостей в .mount-юните (для чего есть аж два способа, о которых ты, конечно же, не слышал)

Ну, почему же не слышал. Слышал, все настроил, работает.

По теме, ТС'у тоже надо осваивать кактус и его особенности, перезагружать систему не комильфо.

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от Suntechnic

Сектора, которые не удалось перераспределить(reallocate). Если их число или число current pending sectors продолжает расти - диску явно пора на свалку

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Понятно. Спасибо. Т.е. использовать его уже даже как флэшку нихрена не выйдет? Ну пусть тогда в столе поваляется (вдруг что-то забыл ценное на нем), а потом на магнитики пойдет ;)

Suntechnic ★★★★★
() автор топика

что купить на замену?

отсортировал в порядке «не стоит это брать». Или гуглить статистику в наше время уже не судьба?

Seagate
Toshiba
WD

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

Да погуглил и взял в итоге WD. Хитачи как-то уж дороговаты...

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

Нет, ну ты же говоришь, что «написал отдельный юнит». А можно и не писать, просто дописать зависимости. И только попробуй скажи, что это костыль.

intelfx ★★★★★
()
Ответ на: комментарий от Suntechnic

> systemctl
fish: Unknown command “systemctl”
systemctl: команда не найдена

Тогда

если предположение о наличии у него systemd верное

верное, верное

Нет, неверное.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

А можно и не писать, просто дописать зависимости.

просто

Согласен, давай попробуем... /etc/fstab (монтирование жёстких дисков):

UUID=0b239431-a9cf-414e-b4df-a31a3be8e1da  /var/mnt/hitachi-3tb-[9FA9034E] ext4 defaults,noatime,nodiratime 0 0
UUID=8560a6f0-37f0-4646-9280-363f9d3863c9  /var/mnt/toshiba-3tb-[63D9B162] ext4 defaults,noatime,nodiratime 0 0

Объединение, согласно, мануалу и раз, через x-systemd.requires-mounts-for:

none /mnt/backup/local.archives/ aufs br:/var/mnt/hitachi-3tb-[9FA9034E]=rw:/var/mnt/toshiba-3tb-[63D9B162]=rw,create=mfs,sum,x-systemd.requires-mounts-for=/var/mnt/toshiba-3tb-[63D9B162],x-systemd.requires-mounts-for=/var/mnt/hitachi-3tb-[9FA9034E] 0 0

После перезагрузки смотрим, что показывает df -h и видим, что объединения нет:

none                                              34G          19G   14G           59% /mnt/backup/local.archives
/dev/sdd1                                        2,7T         1,2T  1,6T           43% /var/mnt/hitachi-3tb-[9FA9034E]
/dev/sdc1                                        2,7T         321G  2,4T           12% /var/mnt/toshiba-3tb-[63D9B162]

Смотрим, что за юнит сгенерировал systemd

root@backup-storage:/run/systemd/generator# cat /run/systemd/generator/mnt-backup-local.archives.mount 
# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target

[Mount]
What=none
Where=/mnt/backup/local.archives
Type=aufs
Options=br:/var/mnt/hitachi-3tb-[9FA9034E]=rw:/var/mnt/toshiba-3tb-[63D9B162]=rw,create=mfs,sum,x-systemd.requires-mounts-for=/var/mnt/toshiba-3tb-[63D9B162],x-systemd.requires-mounts-for=/var/mnt/hitachi-3tb-[9FA9034E]

Видно, что зависимостей никаких не распознано, x-systemd.requires-mounts-for ушлов в параметры FS.

С какой стороны подойти к этой шайтан-машине, чтобы «просто» прописав зависимости в опциях fstab всё заработало.

Через отдельный юнит всё «просто» работает.

[Unit]
Description=Union via aufs 3tb hdd
Requires = var-mnt-hitachi\x2d3tb\x2d\x5b9FA9034E\x5d.mount var-mnt-toshiba\x2d3tb\x2d\x5b63D9B162\x5d.mount
After    = var-mnt-hitachi\x2d3tb\x2d\x5b9FA9034E\x5d.mount var-mnt-toshiba\x2d3tb\x2d\x5b63D9B162\x5d.mount

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/var/mnt/union.sh
ExecStop=/var/mnt/disunion.sh

[Install]
WantedBy = multi-user.target

union.sh:

#! /bin/bash

mount -t aufs -o br:/var/mnt/hitachi-3tb-\[9FA9034E\]=rw:/var/mnt/toshiba-3tb-\[63D9B162\]=rw,create=mfs,sum none /mnt/backup/local.archives/

systemctl enable mnt-backup-local.archives.service
Jurik_Phys ★★★★★
()
Ответ на: комментарий от intelfx

В debian stable нельзя в fstab прописать зависимости, ибо, в нём systemd 215, а опции «x-systemd.{after,requires-mounts-for}=» появились в systemd 220. Вопрос закрыт.

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от soomrack

может кабель плохой

Может и плохой, но диску от этого лучше уже не станет

198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 34

aidaho ★★★★★
()
Ответ на: комментарий от Jurik_Phys

Я же не просто так написал про два способа, да?

Верно, опции x-systemd.* появились не так давно, но ты всегда можешь создать файл с именем вида /etc/systemd/system/mnt-backup-local.archives.mount.d/чтонибудь.conf и вписать в него директиву RequiresMountsFor=.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.