Что такое системные флаги диска
Соответственно, в Unix, права доступа и участники, сгруппированы три по три, read/write/execution для user/group/other. Кроме вышеупомянутых прав доступа, операционные системы Unix, поддерживает "файловые флаги", для обеспечения дополнительного уровня защиты, контроля и управления объектами системы. Например, с помощью флагов, можно запретить удаление файла, даже пользователю root. Вообще, правильней говорить не о правах пользователей, на тот или иной файл/директорию, а о правах процессов, так как все манипуляции с файлами ( создание, чтение, изменение, удаление ), производятся с помощью какой-то программы, например текстового редактора, который в запущенном виде, собственно и является процессом. Каждому пользователю системы, присваиваются идентификаторы, UserID ( идентификатор пользователя ) и GroupID ( идентификатор группы ), именно по ним операционная система определяет владельца и группу для того или иного объекта системы. Символические имена назначаются исключительно для удобства чтения, пользователями. Каждый процесс в операционной системе Unix, имеет не два, а четыре идентификатора, это, реальный UserID ( UID ) и эффективный UserID ( UID ) а так-же реальный и эффективный идентификатор группы GroupID ( GID ). Реальный UserID ( Реальный GroupID ) - реальные номера применяются для учета использования системных ресурсов. Эффективный UserID ( Эффективный GroupID ) - новый идентификатор, полученный процессом уже во время выполнения, применяются для определения прав доступа. Процессы запущенные автоматически ( например при старте системы ), так-же получают UserID, какой именно, определяется запускающей программой ( cron, inetd и т.д. ), в обычных случаях, UserID наследуется от родительского процесса. Некоторые процессы - "родители", могут присваивать, дочернему процессу - "потомку", UserID, не совпадающий со своим. Иногда, запущенный процесс, может во время выполнения, менять свои идентификаторы. Это происходит, когда в правах доступа на файл, установлены дополнительные биты, SUID ( Set user ID - бит смены идентификатора пользователя ) и SGID ( Set group ID - бит смены идентификатора группы ). Когда пользователь или процесс запускает файл, у которого установлен один из этих битов, процессу, временно присваиваются права владельца данного файла ( а не того, кто его запускает ). Таким образом, обычный пользователь, может выполнять команды от имени пользователя root. Как было упомянуто выше, права доступа к файлам и директориям, определяются по Реальному UserID и Реальному GroupID. Если идентификатор не меняется в процессе выполнения программы, Реальный UserID ( реальный GroupID ) и Эффективный UserID ( эффективный GroupID ) совпадают. Система обеспечения прав доступа в операционных системах Unix, имеет числовое и символическое, выражения. Числовае выглядит следующим образом: Плюс к этому, биты смены идентификаторов SUID и SGID, восьмеричные значения 4000 и 2000, как было сказано выше, они обеспечивают программам, доступ к файлам и процессам, к которым в обычных условиях, пользователь доступа не имеет. В случае установки бита SGID для директории, созданные в ней файлы, при запуске, будут принимать идентификатор группы каталога, а не группы в которую входит владелец файла. Существует еще один бит с восьмеричным значением 1000, так называемый Stiky-bit ( липучка ). Если данный бит установлен на директорию, содержащиеся в ней файлы, разрешено удалять и переименовывать, только в случае, если пользователь является, владельцем каталога, владельцем файла или это пользователь root. Символические выражения для установки прав доступа. В качестве аргументов команды chmod, вместо восьмеричных значений, используются буквенные эквиваленты. Что-бы посмотреть права доступа и владельцев на файлы и директории в режиме листинга, можно использовать команду ls с флагом -l. В данном листинге видно, что владельцем всех файлов является пользователь root и группа wheel. Первый символ слева в колонке прав доступа, означает тип объекта, объекты могут быть следующих типов:
- Обычный файл. b Специальный файл блочного устройства. c Файл символьного устройства. d Директория. l Символьная ссылка. p FIFO. s Сокет. w Whiteout ( скрытый ).
- Файл file.txt, доступен на чтение и запись - пользователя, только для чтения - группой и для чтения - другим;
- Файл file.sh, доступен на чтение, запись и выполнение - пользователем, только для чтения - группой, для чтения - другим;
- test_dir, является директорией и имеет следующие права доступа, для пользователя: чтение, запись, выполнение; для группы: чтение, выполнение; для других: чтение, выполнение;
- r ( Read ) - чтение. Соответствующий пользователь ( процесс ), имеет права на чтение содержимого данного файла, и копирования этого файла.
- w ( Write ) - запись. Соответствующий пользователь ( процесс ), имеет права редактировать, изменять, удалять содержимое файла, добавлять в него что-либо ( например содержимое другого файла ). Однако, это не дает прав на удаление или переименование самого файла, это определяется правами доступа на директорию, в которой этот файл находится.
- x ( eXecute ) - выполнение. Дает право, соответствующему пользователю ( процессу ), запускать данный файл, при условии что он является исполняемой программой или скриптом.
- r ( Read ) - чтение. Разрешает получение списка содержимого данной директории ( файлов, поддиректорий ), однако, это еще не означает, что можно получить доступ к содержимому данной директории, читать, изменять или запускать файлы, находящиеся в ней, даже при условии, что права на самих файлах это разрешают. Как правило, данный атрибут устанавливается совместно с правами доступа на запуск, "x" ( eXecute ).
- w ( Write ) - запись. Атрибут, позволяющий менять содержимое директории, то есть, создавать в ней новые файлы, копировать в нее файлы из других директорий, переименовывать и удалять файлы.
- x ( eXecute ) - выполнение. Данный атрибут, в контексте директории, означает, что соответствующий пользователь, может зайти в директорию, получив доступ к файлам и поддиректориям и выполнять с ними какие-либо действия, при условии что права на самих файлах, это позволяют.
Важно помнить, что система полностью проверяет путь до конкретной поддиректории или файла, на наличие прав доступа, к каждому участку данного пути, и если на кокой-либо участок пути, не установлен соответствующий бит прав доступа ( x ), пользователю будет отказано в доступе. Проще говоря, есть путь: /usr/home/vds-admin/public_html/, даже если пользователь имеет достаточные права на поддиректории public_html, но на вышестоящую директорию, home, бит x не установлен, при попытке зайти в поддиректорию, ему будет отказано в доступе.
Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.
Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.
Remarks
Этот атрибут может быть нулевым или сочетанием одного или нескольких из следующих значений.
область применения: Windows Server 2022, Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 Windows Server 2012 и Windows server 2008 R2, Windows server 2008
Интерпретатор команд DiskPart помогает управлять дисками компьютера (дисками, разделами, томами или виртуальными жесткими дисками).
Прежде чем можно будет использовать команды DiskPart , необходимо сначала вывести список, а затем выбрать объект, чтобы получить фокус. После того как объект находится в фокусе, любые команды DiskPart, которые вы вводите, будут действовать для этого объекта.
Windows Server 2008 R2
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Неверно |
В глобальном каталоге | Неверно |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Windows 2000 Server
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Нет |
В глобальном каталоге | Нет |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Как лучше выполнять Chkdsk на системном диске
Загрузится после этого система и будет ли нормально работать? Трудно сказать. Всё зависит от того, окажутся ли повреждёнными важные системные файлы. А вообще, применять Chkdsk с параметрами /R и /F было бы более правильным, сняв жёсткий диск и подключив его другому компьютеру. Если это по какой-то причине невозможно (нет другого ПК, нельзя снять диск и т.п.) , запускайте утилиту из-под установочного диска Windows.
Здесь всё просто.
Загрузившись с носителя с дистрибутивом, запустите уже известным вам образом командную строку и определите букву системного раздела. Проще всего это сделать, открыв в консоли командой notepad Блокнот и выбрав в меню Файл -> Сохранить как. При этом у вас откроется окно Проводника, в котором вы легко сможете определить букву диска в разделе «Этот компьютер».
Зная букву (у нас это D) , возвращаемся в консоль и выполняем команду chkdsk D: /f /r .
Прибегнуть к этому способу можно, если система перестала загружаться после прерывания Chkdsk. Также рекомендуем выполнить команду sfc /scannow /offbootdir=C: /offwindir=D: — это позволит найти и восстановить повреждённые системные файлы в загрузочном и основном разделах.
Синтаксис
Чтобы запустить интерпретатор команд DiskPart, в командной строке введите:
Для запуска DiskPart необходимо быть членом локальной группы администраторов или группы с аналогичными разрешениями.
Целостность файлов на жёстком диске является важной компонентной стабильно работающей компьютерной системы. Появление в файлах и файловой структуре различных ошибок, нарушение логической структуры диска, возникновение на диске битых секторов приводит к некорректной работе ПК, сбоям в работе системы, глюкам и зависаниям. Для профилактики подобных проблем в операционной системе, начиная с архаичной MS DOS и заканчивая современными версиями ОС Windows 10, предусмотрен специальный инструмент, призванный проверять и восстанавливать целостность файловой системы, бороться с логическими и физическими ошибками на диске. Речь идёт о системной утилите CHKDSK, и в данном материале я расскажу, что это за утилита, для чего она предназначена, и как может помочь команда CHKDSK /F /R для устранения повреждений файловой системы на вашем ПК.
Используйте CHKDSK /F /R для устранения повреждений файловой системы
Если нет точек восстановления
И когда она откроется, выполните в ней команду regedit .
В открывшемся окне редактора выделите раздел HKEY_LOCAL_MACHINE .
В меню выберите Файл -> Загрузить куст.
А затем укажите путь к файлу SYSTEM , проследовав в Проводнике по адресу Windowssystem32config на диске с установленной системой.
Примечание: скорее всего, буква системного диска будет не C, а D, смотрите внимательно в Проводнике.
Откроется маленькое окошко, в котором вам нужно ввести временное имя раздела. Пусть это будет temp.
После этого откройте раздел HKEY_LOCAL_MACHINE , в нём найдите загруженный куст и разверните ветку имя_разделаControlSet001ControlSession Manager. Найдите в правой колонке мультистроковый параметр BootExecute и замените его значение, каким бы оно ни было, строкой autocheck autochk * .
Выделите созданный раздел мышкой, в меню выберите «Выгрузить куст».
Готово, можете перезагружаться, повторно Chkdsk не запустится.
Windows Server 2008
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Неверно |
В глобальном каталоге | Неверно |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Windows Server 2012
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Неверно |
В глобальном каталоге | Неверно |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Структура GPT
В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.
Кроме того, в отличие от MBR, структура GPT хранит на диске две своих копии, одну в начале диска, а другую в конце. Таким образом, в случае повреждения основной структуры, будет возможность восстановить ее из сохраненной копии.
Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:
LBA-адрес | Размер (секторов) | Назначение |
LBA 0 | 1 | Защитный MBR-сектор |
LBA 1 | 1 | Первичный GPT-заголовок |
LBA 2 | 32 | Таблица разделов диска |
LBA 34 | NN | Содержимое разделов диска |
LBA -34 | 32 | Копия таблицы разделов диска |
LBA -2 | 1 | Копия GPT-заголовка |
Защитный MBR-сектор
Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.
Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).
При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.
Первичный GPT-заголовок
Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.
Структура GPT-заголовка:
Смещение (байт) | Размер поля (байт) | Пример заполнения | Название и описание поля |
0x00 | 8 байт | 45 46 49 20 50 41 52 54 | Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как "EFI PART". |
0x08 | 4 байта | 00 00 01 00 | Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0 |
0x0C | 4 байта | 5C 00 00 00 | Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта) |
0x10 | 4 байта | 27 6D 9F C9 | Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю. |
0x14 | 4 байта | 00 00 00 00 | Зарезервировано. Должно иметь значение 0 |
0x18 | 8 байт | 01 00 00 00 00 00 00 00 | Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1. |
0x20 | 8 байт | 37 C8 11 01 00 00 00 00 | Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске. |
0x28 | 8 байт | 22 00 00 00 00 00 00 00 | Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска |
0x30 | 8 байт | 17 C8 11 01 00 00 00 00 | Адрес последнего сектора диска, отведенного под разделы |
0x38 | 16 байт | 00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6D | GUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке |
0x48 | 8 байт | 02 00 00 00 00 00 00 00 | Адрес начала таблицы разделов |
0x50 | 4 байта | 80 00 00 00 | Максимальное число разделов, которое может содержать таблица |
0x54 | 4 байта | 80 00 00 00 | Размер записи для раздела |
0x58 | 4 байта | 27 C3 F3 85 | Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32 |
0x5C | 420 байт | 0 | Зарезервировано. Должно быть заполнено нулями |
Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.
У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.
Таблица разделов диска
Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.
Целочисленное значение, содержащее флаги, определяющие дополнительные свойства класса. См. заметки.
Ввод | Значение |
---|---|
CN | System-Flags |
LDAP-отображаемое имя | systemFlags |
Размер | - |
Привилегия обновления | Это значение задается администратором схемы. |
Частота обновления | При изменении состояния объекта. |
Attribute-Id | 1.2.840.113556.1.4.375 |
System-ID — GUID | e0fa1e62-9b45-11d0-afdd-00c04fd930c9 |
Синтаксис | Перечисление |
Функционал команды CHKDSK
Существуют две основные формы активации данной утилиты, позволяющие вам запустить chkdsk:
-
Активация стандартным способом. Жмём на «Мой компьютер», выбираем нужный диск для проверки, наводим на него курсор, и кликаем правую клавишу мыши. В появившемся меню выбираем «Свойства», переходим на вкладку «Сервис» и жмём на «Выполнить проверку» вверху.
Нажмите на «Выполнить проверку» для доступа к функционалу CHKDSK
Установите требуемые галочки и нажмите на «Ок»
- Если диск не системный, тогда проверка будет проведена незамедлительно, если же диск системный – тогда компьютер внесёт в своё расписание проверку данного диска, и при последующей перезагрузке ваш диск будет проверен функционалом CHKDSK;
- Активация с помощью командной строки. Запустите командную строку от имени администратора, в ней введите:
CHKDSK (имя тома) /(флаг)
Например, часто используемой формой активации CHKDKS является команда:
CHKDSK C: /F /R
где С: — имя тома, /F и /R — используемые флаги.
Приведённая мной команда запускает CHKDSK, предписывая последнему выполнить проверку диска С на наличие повреждённых секторов, и восстановить имеющиеся на них данные (флаг /F обязывает CHKDSK исправлять ошибки на диске, флаг /R обязывает CHDSK искать на диске повреждённые сектора, и попытаться восстановить данные на них).
Команда CHKDSK /F /R применяется для проверки и исправления ошибок на диске
Другие флаги (команды) CHKDSK таковы:
- /V – во время проверки файловой системы FAT/FAT32 показывает путь к файлам на диске и их имена;
- /X – предварительное отключение тома (требуется обязательное задействование флага /F);
- /I – отключает тщательную проверку индексов. Используется только в файловой системе NTFS, позволяет ускорить проверку диска;
- /C — отключает проверку циклов внутри папок. Используется только в NTFS, также позволяет ускорить проверку;
- /L:(размер в килобайтах) – изменение размера файла журнала до указанной величины (только NTFS);
- /B – повторная проверка повреждённых кластеров диска (только NTFS, требует обязательного наличия ключа /R)
Если же вы просто введёте в командной строке команду «CHKDSK» (без кавычек), то утилита «CHKDSK /F /R для устранения повреждений файловой системы» просканирует ваш диск на наличие ошибок в режиме «просто чтение» (read only), никак не исправляя их.
Расширенные разделы
Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).
В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:
- В EBR нет исполняемого кода. Некоторые загрузчики могут его туда записывать, но обычно это место заполнено нулями
- Сигнатуры диска и два неиспользуемых байта должны быть заполнены нулями
- В таблице разделов могут быть заполнены только две первых записи. Остальные две записи должны быть заполнены нулями
В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.
Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.
Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.
А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.
Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.
Для второй записи таблицы разделов EBR в поле начального сектора раздела записывается расстояние между сектором самой первой EBR и сектором следующей EBR в списке. В поле количества секторов раздела в этом случае пишется размер области диска от сектора этой следующей структуры EBR и до конца логического раздела, относящегося к этой структуре.
Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.
Структура MBR
До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.
MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.
Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.
Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.
Структура записи для одного раздела:
Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.
Следующие три байта — это так называемые CHS-координаты первого сектора раздела.
По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.
После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.
Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.
Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.
Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.
Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).
В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.
Список доступных объектов
Вы можете получить список доступных объектов и определить число или букву диска с помощью:
list disk — Отображает все диски на компьютере.
list volume — Отображает все тома на компьютере.
list partition — Отображает разделы на диске, на котором находится фокус на компьютере.
list vdisk — Отображает все виртуальные диски на компьютере.
После выполнения команд List рядом с объектом с фокусом отображается звездочка (*).
Варианты реализации решения
Windows Server 2003
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Нет |
В глобальном каталоге | Нет |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Нет |
В глобальном каталоге | Нет |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Windows Server 2003 R2
Ввод | Значение |
---|---|
Идентификатор ссылки | - |
MAPI-Id | - |
System-Only | Верно |
Является однозначным | Верно |
Индексируется | Неверно |
В глобальном каталоге | Неверно |
NT-Security-дескриптор | О:БАГ: BAD: S: |
Range-Lower | - |
Range-Upper | - |
Search-Flags | 0x00000008 |
System-Flags | 0x00000010 |
Классы, используемые в | Вверх |
Структура MBR
До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.
MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.
Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.
Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.
Структура записи для одного раздела:
Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.
Следующие три байта — это так называемые CHS-координаты первого сектора раздела.
По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.
После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.
Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.
Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.
Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.
Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).
В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.
Определение фокуса
При выборе объекта фокус остается на этом объекте до тех пор, пока не будет выбран другой объект. Например, если фокус установлен на диске 0 и вы выбрали том 8 на диске 2, фокус переместится с диска 0 на диск 2, том 8.
Некоторые команды автоматически меняют фокус. Например, при создании новой секции фокус автоматически переключается на новую секцию.
Вы можете передать фокус только на раздел на выбранном диске. После того как раздел имеет фокус, связанный с ним том (если он есть) также имеет фокус. После того как у тома будет фокус, связанный диск и раздел также будут иметь фокус, если том сопоставляется с одним конкретным разделом. Если это не так, фокус на диске и разделе будет потерян.
Что такое CHKDSK?
CHKDSK (сокращение от английского «check disk» — проверка диска) – это системный инструмент, предназначенный для проверки жёсткого диска на наличие логических ошибок, битых секторов (bad sector), а также исправления найденных им проблем.
Функционал CHKDSK позволяет восстанавливать логическую структуру диска, включая исправление некорректных точек входа MFT (главной файловой таблицы). В случае нахождения битых секторов, выступающих в двух основных формах – «мягкой» (появляются, когда данные были записаны некорректно) и «жёсткой» (битые сектора возникли из-за физического повреждения диска), CHKDKS обычно восстанавливает «мягкие» битые сектора, и маркирует «жёсткие» таким образом, чтобы они не могли быть далее использованы системой.
Работа данной утилиты может занять довольно продолжительное время, причём для своей работы CHKDSK требует обязательного наличия эксклюзивных прав на запись диска. Потому, если вы, находясь в ОС Виндовс, захотите проверить системный диск (обычно С) с помощью данного инструмента, то система предложит вам перезагрузить компьютер, и, при последующем старте, CHKDSK получит расширенные права, а затем проведёт проверку вашего диска на наличие ошибок.
Заключение
Утилита проверки и исправления ошибок на жёстком диске Microsoft CHKDSK (“проверка диска”) была представлена более 30 лет назад, но используется до сих пор. Даже пользователи последних версий операционной системы Microsoft могут воспользоваться данной командой, чтобы выполнить проверку своих жёстких дисков на ошибки и их исправление при необходимости. Ниже приведена инструкция по запуску CHKDSK в Windows 10.
Если после использования утилиты CHKDSK у вас всё ещё возникают ошибки, попробуйте альтернативные программы.
Сначала выберите “Поиск в Windows” и выполните поиск Командной строки, введя “cmd”. Щёлкните по ярлыку правой кнопкой мыши и выберите “Запуск от имени администратора” в контекстном меню.
Параметр “/f” указывает CHKDSK выполнить исправление найденных ошибок; “/r” указывает программе обнаружить повреждённые секторы на диске и восстановить информацию, которую возможно прочитать; “/x” заставляет диск размонтироваться перед началом процесса. Дополнительные параметры доступны для более специализированных заданий, и подробно расписаны на web-сайте Microsoft.
В итоге полная команда, которую требуется ввестив Командную Строку, выглядит так:
chkdsk [Диск:] [параметры]
Стоит отметить, что CHKDSK должен заблокировать диск, поэтому не удастся выполнить проверку системного загрузочного диска, если компьютер работает. В нашем случае целевой диск – внешний, поэтому процесс начнётся сразу после ввода команды. Если целевой диск – загрузочный, система спросит вас, хотите ли вы запустить команду перед следующей загрузкой. Введите “yes”, перезагрузите компьютер, и команда запустится до загрузки операционной системы, получив полный доступ к диску.
Выполнение команды CHKDSK может занять продолжительное время, особенно на больших дисках. При завершении программа подытожит результаты, такие как общий объём места на диске, размещение байтов, а также самое главное – информацию о найденных и исправленных ошибках.
Команда CHKDSK доступна во всех версиях Windows, поэтому пользователи как Windows 7, так и Windows XP, могут выполнить приведённые выше шаги для инициализации проверки жёсткого диска. В случае использования старых версий Windows, можно выполнить следующее:
- Нажать “Пуск – Выполнить…”
- Ввести cmd
- Ввести chkdsk [Диск:] [параметры]
Этапы “CHKDSK”
5 главных этапов описаны ниже:
Этап 1. Проверка базовой структуры файловой системы…
На первом этапе файлы с записями в MFT (главная файловая таблица) сравниваются и проверяются.
Этап 2. Проверка связей имен файлов…
На данном этапе проверяются директории и структура. Они проверяются на соответствие размеру файла и временной метки информации.
Этап 3. Проверка дескрипторов безопасности…
На последнем этапе проверки (3), файлы и папки проверяются на наличие дескрипторов безопасности, включая информацию о владельце прав NTFS.
Четвёртый и пятый этапы выполняются только при наличии аргумента /r!
Этап 4. Поиск поврежденных кластеров в данных пользовательских файлов…
Секторы кластера, включая данные, проверяются на возможность использования.
Этап 5. Поиск поврежденных и свободных кластеров…
На пятом этапе секторы кластера проверяются на отсутствие данных.
Если невозможно решить проблемы с жёстким диском, используя “CHKDSK”, рекомендуется использовать утилиты для работы с жёстким диском соответствующих производителей.
Также в Windows можно получить доступ к графическому интерфейсу CHKDSK
Для выполнения проверки с использованием графического интерфейса, выполните следующее:
Щёлкните правой кнопкой мыши по диску, который вы хотите проверить. Выберите Свойства – Сервис – Выполнить проверку.
Это графический интерфейс “CHKDSK”. Две опции соответствуют параметрам “/f” и “/r”.
Помогла ли Вам эта статья в поиске решения?
(75 оценки, средняя оценка 4.63 из 5)
С утилитой Chkdsk , предназначенной для исправления логических ошибок файловой системы, хорошо знакомы большинство пользователей. Этот встроенный инструмент может оказаться весьма полезным, но в определённых обстоятельствах он же может доставить массу проблем. Так, наиболее опасным в плане последствий является зависание Chkdsk, запущенной с параметрами /F и/или /R для системного раздела.
Известно, что для исправления обнаруженных утилитой Chkdsk на диске С ошибок требуется перезагрузка. Проверка запускается, но на каком-то этапе всё зависает и такое состояние может продолжаться часами. В сложившейся ситуации руки сами тянутся к кнопке Reset , но принудительная перезагрузка обычно не приносит результатов, так как Chkdsk запускается повторно. Более того, принудительное прерывание проверки может привести к повреждению системных файлов и самой файловой системы NTFS .
Как правило, зависание Chkdsk наблюдается при более серьёзных проблемах с жёстким диском — физическом износе его участков, наличии нестабильных секторов, а также ошибок в области файлов, загружаемых на первых этапах старта системы. И всё же как быть, если Chkdsk завис? Самое разумное – это подождать несколько часов. И только если прогресс не изменяется длительное время (12 часов и более) , проверку можно будет рискнуть прервать принудительно, а затем восстановить исходное значение отвечающего за её запуск параметра реестра BootExecute .
Сделать это проще всего, выполнив откат к предыдущей точке восстановления. Для дела вам понадобиться установочный диск с вашей версией системы. Загрузившись с диска, выберите Восстановление системы.
Поиск и устранение неисправностей.
Восстановление системы.
На этом этапе вам нужно указать целевую ОС.
После чего будет запущен привычный мастер восстановления.
Выберите в нём последнюю точку и проследуйте дальнейшим указаниям.
В процессе реестр восстановится, и запуск Chkdsk будет отключён.
Читайте также: