Работа с дисками: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
(Дополнительное пояснение про рандомность назначения имён /dev/sdX.)
 
(не показана 21 промежуточная версия 9 участников)
Строка 1: Строка 1:
{{Викифицировать}}
{{Crap}}
{{MovedFromFreesourceInfo|AltLinux/Документация/РаботаСДисками}}
== Работа с дисками ==
== Работа с дисками ==


См. также [[Документация/ТестированиеКомпьютера|ТестированиеКомпьютера]]
См. также [[Документация/ТестированиеКомпьютера|ТестированиеКомпьютера]]


<div style="display: inline; color: red;">Не рекомендуется использовать программы fdisk/cfdisk для первичного разбиения диска, один из разделов в котором предназначен для загрузки Windows</div>. Используйте parted.
Не рекомендуется использовать программы fdisk/cfdisk для первичного разбиения диска, один из разделов в котором предназначен для загрузки Windows. Используйте parted.


0. Создать загрузочную запись
0. Создать загрузочную запись
Строка 13: Строка 9:


1. Увидеть, что пишет система о дисках при загрузке  
1. Увидеть, что пишет система о дисках при загрузке  
# dmesg | grep hd  
# dmesg | grep sd
или, на старых (< 2.6.18) ядрах
# dmesg | grep hd  
 
2. Вывести перечень всех разделов и всех дисков  
2. Вывести перечень всех разделов и всех дисков  
# fdisk -l  
# fdisk -l
либо команда 
# blkid
   
   
3. Полная информация о диске  
3. Полная информация о диске  
# hdparm -I /dev/hd?
# hdparm -I /dev/sda
   
   
4. Вывести информацию о состоянии диска  
4. Вывести информацию о состоянии диска  
Пакет: smartmontools
# smartctl -a /dev/sda
<div style="display: inline; color: red;">Не забывайте указывать параметр -d ata если у вас SATA-диск</div>
# smartctl -a /dev/hd?
Запустить внутренний тест диска
Запустить внутренний тест диска
# smartctl -t short /dev/hd?
# smartctl -t short /dev/sda
или
# smartctl -t long /dev/sda
   
   
5. Программа работы с разделами диска  
5. Программа работы с разделами диска  
# parted /dev/hd?  
# parted /dev/sd?  
   
   
6. Программы восстановления потерянных разделов  
6. Программы восстановления потерянных разделов  
# testdisk (более user-friendly)
# testdisk (более user-friendly)
# gpart (более могучая, но надо тщательно читать man)
# gpart (более могучая, но надо тщательно читать man)
   
   
7. Графическая программа для работы с разделами диска  
7. Графическая программа для работы с разделами диска  
$ qtparted  
$ qtparted  
   
   
8. Вывод температуры диска  
8. Вывод температуры диска  
# hddtemp /dev/hd?
# hddtemp /dev/sda
   
   
9. Простая программа работы с разделами диска  
9. Простая программа работы с разделами диска  
# cfdisk  
# cfdisk  


10. Восстановление файлов на разделе ext2
10. Восстановление файлов на разделе ext2
man recover
$ man recover
 
11. Сканирование диска на сбойные сектора (вместо badblocks)
# diskscan


Восстановление стёртых файлов с любых файловых систем - photorec из пакета testdisk.
12. Восстановление стёртых файлов с любых файловых систем
# photorec из пакета testdisk
   
   
=== Таблица соответствия устройств ===
=== Таблица соответствия устройств ===


Таблица соответствия устройств  
Таблица соответствия IDE-устройств  
{| border="1"
{| border="1"
|-
|-
|
| Устройство
Устройство
| Подключение
|
Подключение
|-
|-
|
| /dev/hda
/dev/hda
| Master на IDE0 (Primary)
|
Master на IDE0 (Primary)
|-
|-
|
| /dev/hdb
/dev/hdb
| Slave на IDE0 (Primary)
|
Slave на IDE0 (Primary)
|-
|-
|
| /dev/hdc
/dev/hdc
| Master на IDE1 (Secondary)
|
Master на IDE1 (Secondary)
|-
|-
|
| /dev/hdd
/dev/hdd
| Slave на IDE1 (Secondary)
|
Slave на IDE1 (Secondary)
|-
|
/dev/sda
|
SATA-устройство
|}
|}


Для SATA-устройств (так же как и для SCSI) чёткого порядка именования нет, устройствам выдаются имена sda,sdb,... в порядке их обнаружения системой.


Кроме особо указанных случаев, все программы хранятся в одноимённых пакетах.
Порядок обнаружения системой может рандомно отличаться при каждой последующей перезагрузке системы, поэтому по умолчанию полагаться на соответствие конкретному устройству имени /dev/sdb, например, как и любому прочему /dev/sdX, нельзя.


=== Как пользоваться smartctl ===
=== Как пользоваться smartctl ===


# smartctl -a /dev/sd?
# smartctl -a /dev/sda


Смотрим на следующие параметры:
Смотрим на следующие параметры:
<pre>1 Raw_Read_Error_Rate    0x000b  100  100  051    Pre-fail Always      -      11
<pre>
  1 Raw_Read_Error_Rate    0x000b  100  100  051    Pre-fail Always      -      11
   5 Reallocated_Sector_Ct  0x0033  051  051  010    Pre-fail Always      -      101
   5 Reallocated_Sector_Ct  0x0033  051  051  010    Pre-fail Always      -      101
   7 Seek_Error_Rate        0x000b  253  253  051    Pre-fail Always      -      0
   7 Seek_Error_Rate        0x000b  253  253  051    Pre-fail Always      -      0
Строка 107: Строка 98:
* Dmitry (Mothlike) Marochko
* Dmitry (Mothlike) Marochko
* Vitaly Lipatov
* Vitaly Lipatov
== Частая парковка головок жесткого диска ==
На некотором оборудовании под управлением Альт могут появиться щелчки жесткого диска. Это звук парковки головок жесткого диска. Парковка является функцией контроллера жесткого диска, и производится с целью сбережения энергии и защиты головок от повреждений при ударах. Частая парковка головок приводит к увеличению счетчика S.M.A.R.T. <code>Load_Cycle_Count</code>, и, теоретически, может привести к сокращению ресурса жесткого диска. Проблема особенно характерна для дисков WD Green. Если диск всё время паркуется, а потом опять включается (слышно, что каждые 5-15 секунд щёлкает), нужно либо настроить ОС, чтобы не было принудительной парковки так часто, либо настроить диск, чтобы он не занимался (так часто) автопарковкой.
Проверить, есть ли проблема (<code>smartctl</code> работает от имени '''root'''):
$ su -
# smartctl -a /dev/sdX | grep Load_Cycle_Count
где sdX - имя нужного жесткого диска в системе.
На диске, на котором когда-то не сразу была выключена автопарковка, 241232 автопарковки:
193 Load_Cycle_Count        0x0032  120  120  000    Old_age  Always      -      241232
=== Hdparm ===
<code>hdparm</code> - программа для получения/установки параметров устройств SATA/IDE - из одноимённого пакета, которая поддерживает управление временем автопарковки:
Проверить, что установлено (<code>hdparm</code> работает от имени '''root'''):
$ su -
# hdparm -J /dev/sdX
Выключить:
# hdparm -J0 --please-destroy-my-drive /dev/sdX
Настройка диска (команда idle3ctl из пакета idle3-tools)
# idle3ctl -s 900 /dev/sda
# idle3ctl -d /dev/sda
* https://forum.altlinux.org/index.php?topic=29692.105
* https://bugs.etersoft.ru/show_bug.cgi?id=9438
Если указанный выше способ не сработал, можно отключить парковку головок жесткого диска через функцию '''APM (расширенного управления питанием)''' жесткого диска.
Сначала нужно узнать, какой уровень управления энергопитанием установлен:
$ su -
# hdparm -B /dev/sdX
где sdX - имя нужного жесткого диска в системе.
Возможные значения варьируются от 1 до 254.  Наивысшая степень управления питанием достигается при значении 1, а наивысшая производительность ввода-вывода - при значении 254. Значение 255 указывает <code>hdparm</code> на полное отключение расширенного управления питанием на диске (не все диски поддерживают его отключение, но большинство поддерживают).
Для настройки APM при загрузке — создаем исполняемый файл <code>[[rc.local]]</code>:
$ su -
# echo '#!/bin/sh' > /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local
В этот файл добавляем строчку:
hdparm -B 254 /dev/sda
Для настройки APM при выходе из ждущего режима — создаем файл <code>/etc/systemd/system/root-resume.service</code>:
# touch /etc/systemd/system/root-resume.service
В этот файл добавляем строчки:
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=/sbin/hdparm -B 254 /dev/sda
[Install]
WantedBy=suspend.target
И выполняем команду:
# systemctl enable root-resume
Для настройки APM при выходе из спящего режима — создаем файл <code>/etc/systemd/system/root-resume-sleep.service</code>:
# touch /etc/systemd/system/root-resume-sleep.service
В этот файл добавляем строчки:
[Unit]
Description=Local system resume actions
After=hibernate.target
[Service]
Type=simple
ExecStart=/sbin/hdparm -B 254 /dev/sda
[Install]
WantedBy=hibernate.target
И выполняем команду:
# systemctl enable root-resume-sleep


=== Ссылки ===
=== Ссылки ===
Строка 115: Строка 200:
* [http://offline.computerra.ru/ http://offline.computerra.ru/] - указать ссылку, когда сделают
* [http://offline.computerra.ru/ http://offline.computerra.ru/] - указать ссылку, когда сделают
* [http://smartmontools.sourceforge.net/BadBlockHowTo.txt http://smartmontools.sourceforge.net/BadBlockHowTo.txt]
* [http://smartmontools.sourceforge.net/BadBlockHowTo.txt http://smartmontools.sourceforge.net/BadBlockHowTo.txt]
* [https://forum.altlinux.org/index.php?topic=36532.0 https://forum.altlinux.org - Тема: Устраняем частую парковку головок HDD]


=== [[Документация/FreeBSD|FreeBSD]] ===
=== [[Документация/FreeBSD|FreeBSD]] ===
Строка 120: Строка 206:
Также в базовой системе есть команда diskinfo.
Также в базовой системе есть команда diskinfo.


[[Category:Documentation]]
{{Category navigation|title=Работа с дисками|category=Работа_с_дисками|sortkey={{SUBPAGENAME}}}}
[[category:admin]]
{{Category navigation|title=Использование оборудования|category=использование оборудования|sortkey={{SUBPAGENAME}}}}
[[category:использование оборудования]]

Текущая версия от 09:48, 31 октября 2023

Работа с дисками

См. также ТестированиеКомпьютера

Не рекомендуется использовать программы fdisk/cfdisk для первичного разбиения диска, один из разделов в котором предназначен для загрузки Windows. Используйте parted.

0. Создать загрузочную запись См. man ms-sys или sys в DOS/Win95/Win98 или fixboot в консоли восстановления 2003

1. Увидеть, что пишет система о дисках при загрузке

# dmesg | grep sd

или, на старых (< 2.6.18) ядрах

# dmesg | grep hd 

2. Вывести перечень всех разделов и всех дисков

# fdisk -l

либо команда

# blkid

3. Полная информация о диске

# hdparm -I /dev/sda

4. Вывести информацию о состоянии диска

# smartctl -a /dev/sda

Запустить внутренний тест диска

# smartctl -t short /dev/sda

или

# smartctl -t long /dev/sda

5. Программа работы с разделами диска

# parted /dev/sd? 

6. Программы восстановления потерянных разделов

# testdisk (более user-friendly)
# gpart (более могучая, но надо тщательно читать man)

7. Графическая программа для работы с разделами диска

$ qtparted 

8. Вывод температуры диска

# hddtemp /dev/sda

9. Простая программа работы с разделами диска

# cfdisk 

10. Восстановление файлов на разделе ext2

$ man recover

11. Сканирование диска на сбойные сектора (вместо badblocks)

# diskscan

12. Восстановление стёртых файлов с любых файловых систем

# photorec из пакета testdisk

Таблица соответствия устройств

Таблица соответствия IDE-устройств

Устройство Подключение
/dev/hda Master на IDE0 (Primary)
/dev/hdb Slave на IDE0 (Primary)
/dev/hdc Master на IDE1 (Secondary)
/dev/hdd Slave на IDE1 (Secondary)

Для SATA-устройств (так же как и для SCSI) чёткого порядка именования нет, устройствам выдаются имена sda,sdb,... в порядке их обнаружения системой.

Порядок обнаружения системой может рандомно отличаться при каждой последующей перезагрузке системы, поэтому по умолчанию полагаться на соответствие конкретному устройству имени /dev/sdb, например, как и любому прочему /dev/sdX, нельзя.

Как пользоваться smartctl

# smartctl -a /dev/sda

Смотрим на следующие параметры:

  1 Raw_Read_Error_Rate     0x000b   100   100   051    Pre-fail Always       -       11
  5 Reallocated_Sector_Ct   0x0033   051   051   010    Pre-fail Always       -       101
  7 Seek_Error_Rate         0x000b   253   253   051    Pre-fail Always       -       0
197 Current_Pending_Sector  0x0033   253   253   010    Pre-fail Always       -       0
198 Offline_Uncorrectable   0x0031   253   253   010    Pre-fail Offline      -       0
200 Multi_Zone_Error_Rate   0x000b   100   100   051    Pre-fail Always       -       0
201 Soft_Read_Error_Rate    0x000b   100   100   051    Pre-fail Always       -       2

Если вкратце, то это все означает, что у вашего диска есть

проблемы

с поверхностью диска и часть секторов уже переназначена на запасные (параметр Reallocated_Sector_Count), а часть вообще потеряна (параметр Offline_Uncorrectable). Когда первый параметр достигнет нуля, есть большая вероятность появления bad секторов. Но эта вероятность есть и сейчас, поскольку нет 100% вероятности, что переназначенный сектор содержит ту же информацию, что и раньше. Я бы вам посоветовал озаботиться сохранением всех важных данных на более надежном носителе.

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

  • Dmitry (Mothlike) Marochko
  • Vitaly Lipatov

Частая парковка головок жесткого диска

На некотором оборудовании под управлением Альт могут появиться щелчки жесткого диска. Это звук парковки головок жесткого диска. Парковка является функцией контроллера жесткого диска, и производится с целью сбережения энергии и защиты головок от повреждений при ударах. Частая парковка головок приводит к увеличению счетчика S.M.A.R.T. Load_Cycle_Count, и, теоретически, может привести к сокращению ресурса жесткого диска. Проблема особенно характерна для дисков WD Green. Если диск всё время паркуется, а потом опять включается (слышно, что каждые 5-15 секунд щёлкает), нужно либо настроить ОС, чтобы не было принудительной парковки так часто, либо настроить диск, чтобы он не занимался (так часто) автопарковкой.

Проверить, есть ли проблема (smartctl работает от имени root):

$ su -
# smartctl -a /dev/sdX | grep Load_Cycle_Count

где sdX - имя нужного жесткого диска в системе.

На диске, на котором когда-то не сразу была выключена автопарковка, 241232 автопарковки:

193 Load_Cycle_Count        0x0032   120   120   000    Old_age   Always       -       241232

Hdparm

hdparm - программа для получения/установки параметров устройств SATA/IDE - из одноимённого пакета, которая поддерживает управление временем автопарковки:

Проверить, что установлено (hdparm работает от имени root):

$ su -
# hdparm -J /dev/sdX

Выключить:

# hdparm -J0 --please-destroy-my-drive /dev/sdX

Настройка диска (команда idle3ctl из пакета idle3-tools)

  1. idle3ctl -s 900 /dev/sda
  2. idle3ctl -d /dev/sda

Если указанный выше способ не сработал, можно отключить парковку головок жесткого диска через функцию APM (расширенного управления питанием) жесткого диска. Сначала нужно узнать, какой уровень управления энергопитанием установлен:

$ su -
# hdparm -B /dev/sdX

где sdX - имя нужного жесткого диска в системе.

Возможные значения варьируются от 1 до 254. Наивысшая степень управления питанием достигается при значении 1, а наивысшая производительность ввода-вывода - при значении 254. Значение 255 указывает hdparm на полное отключение расширенного управления питанием на диске (не все диски поддерживают его отключение, но большинство поддерживают).

Для настройки APM при загрузке — создаем исполняемый файл rc.local:

$ su - 
# echo '#!/bin/sh' > /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local

В этот файл добавляем строчку:

hdparm -B 254 /dev/sda

Для настройки APM при выходе из ждущего режима — создаем файл /etc/systemd/system/root-resume.service:

# touch /etc/systemd/system/root-resume.service

В этот файл добавляем строчки:

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/sbin/hdparm -B 254 /dev/sda

[Install]
WantedBy=suspend.target

И выполняем команду:

# systemctl enable root-resume

Для настройки APM при выходе из спящего режима — создаем файл /etc/systemd/system/root-resume-sleep.service:

# touch /etc/systemd/system/root-resume-sleep.service

В этот файл добавляем строчки:

[Unit]
Description=Local system resume actions
After=hibernate.target

[Service]
Type=simple
ExecStart=/sbin/hdparm -B 254 /dev/sda

[Install]
WantedBy=hibernate.target

И выполняем команду:

# systemctl enable root-resume-sleep

Ссылки

FreeBSD

На FreeBSD нет hdparm (smartctl есть). Вместо него используйте rawio, iozone, or bonnie. Также в базовой системе есть команда diskinfo.