Какие параметры задают физический адрес блока информации на жестком диске

Обновлено: 21.11.2024

Проблема 2

  1. Сколько страниц находится в виртуальном адресном пространстве?
  2. Каков максимальный размер адресуемой физической памяти в этой системе?
  3. Если средний размер процесса составляет 8 ГБ, вы бы использовали одноуровневую, двухуровневую или трехуровневую таблицу страниц? Почему?
  4. Вычислите средний размер таблицы страниц в ответе на вопрос 3 выше.

    36-битный адрес может адресовать 2 ^ 36 байтов в машине с байтовой адресацией. Поскольку размер страницы составляет 8 КБ (2^13), количество адресуемых страниц равно 2^36 / >2^13 = 2^23

Чтобы принять решение, нам необходимо проанализировать требования к памяти и времени для схем подкачки. В приведенных ниже расчетах учитывается средний размер процесса.

Пейджинг 1 уровня
Поскольку у нас есть 2^23 страницы в каждом виртуальном адресном пространстве, и мы используем 4 байта на запись в таблице страниц, размер таблицы страниц будет 2^23 * 2^2 = 2 ^ 25. Это 1/256 собственного пространства памяти процесса, так что это довольно дорого. (32 МБ)

Пейджинг 2 уровня
Адрес будет разделен на 12 | 11 | 13, так как мы хотим, чтобы страницы таблицы страниц умещались на одной странице, и мы также хотим разделить биты примерно поровну.

Поскольку размер процесса составляет 8 ГБ = 2^33 Б, я предполагаю, что это означает, что общий размер всех отдельных страниц, к которым обращается процесс, составляет 2^33 Б. Следовательно, этот процесс обращается к 2^33 / 2^13 = 2^20 страниц. Нижний уровень таблицы страниц содержит 2^20 ссылок. Мы знаем, что размер каждого фрагмента нижнего уровня таблицы страниц составляет 2 ^ 11 записей. Таким образом, нам нужно 2^20 / 2^11 = 2^9 фрагментов нижнего уровня.

Тогда общий размер таблицы страниц равен:

//размер внешней таблицы страниц //общий размер внутренних страниц< /td>
1 * 2^12 * 4 + 2^9 * 2^11 * 4 = 2^20 * ( 2^-6 + 4) ~4 МБ

3 уровня пейджинга
Для 3 уровня пейджинга мы можем разделить адрес следующим образом:
8 | 8 | 7 | 13

Опять же, используя те же рассуждения, что и выше, нам нужно 2 ^ 20/2 ^ 7 = 2 ^ 13 фрагментов таблицы страниц уровня 3. Каждый фрагмент таблицы страниц уровня 2 ссылается на 2^8 фрагментов таблицы страниц уровня 3. Итак, нам нужно 2^13/2^8 = 2^5 таблиц уровня 2. И, конечно же, одна таблица уровня 1.

Общий размер таблицы страниц равен:

//размер внешней таблицы страниц //общий размер таблиц уровня 2 //общий размер самых внутренних таблиц
1 * 2^8 * 4 2^5 * 2^8 *4 2^13 * 2^7 * 4 ~4MB
Как легко заметить, двухуровневая и трехуровневая подкачка требуют гораздо меньше места, чем подкачка уровня 1. схема. И поскольку наше адресное пространство недостаточно велико, 3-уровневая подкачка работает не лучше, чем 2-уровневая подкачка. Из-за стоимости доступа к памяти гораздо логичнее выбрать двухуровневую схему подкачки для этого процесса.

Проблема 3

  1. Каков размер страницы в такой системе? Объясните свой ответ (число без обоснования не будет засчитано).

    4К. Последние 12 бит виртуального адреса представляют собой смещение на странице, которое варьируется от 0 до 4095. Таким образом, размер страницы равен 4096, то есть 4 КБ.

Поскольку физические адреса имеют длину 44 бита, а размер страницы — 4 КБ, номер кадра страницы занимает 32 бита. Принимая во внимание 4 защитных бита, каждая запись таблицы страниц уровня 3 занимает (32+4) = 36 бит. Округление для выравнивания записей по байтам (словам) приведет к тому, что каждая запись будет потреблять 40 (64) бит или 5 (8) байтов. Для таблицы из 256 записей нам потребуется 1280 (2048) байт.

Таблица страниц верхнего уровня не должна предполагать, что таблицы страниц 2-го уровня выровнены по страницам. Итак, мы храним там полные физические адреса. К счастью, нам не нужны управляющие биты. Таким образом, каждая запись занимает не менее 44 бит (6 байтов для выравнивания по байтам, 8 байтов для выравнивания по словам). Таким образом, каждая таблица страниц верхнего уровня имеет размер 256*6 = 1536 байт (256 * 8 = 2048 байт).

Попытка воспользоваться выравниванием по 256 элементам для уменьшения размера элемента, вероятно, не стоит усилий. Сделать это было бы сложно; вам нужно будет написать новый распределитель памяти, который гарантирует такое выравнивание. Кроме того, мы не можем полностью уместить таблицу в выровненную область размером 1024 байта (44-10 = 34 бита на адрес, что потребовало бы более 4 байтов на запись), и округление размера до следующей степени двойки не спасло бы использовать любой размер, а не просто хранить указатели и использовать обычный распределитель.

Аналогично каждая запись в таблице страниц 2-го уровня представляет собой 44-битный физический указатель, 6 байтов (8 байтов) при выравнивании по байтам (словам). Таким образом, таблица с 16 элементами занимает 96 (128) байт. Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 96 (128) байт для одной таблицы страниц второго уровня + 1280 (2048) байт для одной таблицы страниц третьего уровня = 2912 (4224) байт. Поскольку процесс может уместиться ровно на 16 страницах, внутренняя фрагментация не тратит память впустую.

Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 3 * 96 (3 * 128) байт для 3 таблиц страниц второго уровня + 3 * 1280 (3 * 2048) для 3 таблиц страниц третьего уровня. таблица страниц = 5664 (8576) байт.

Проблема 4

В соответствии с философией проектирования процессоров RISC, заключающейся в перемещении аппаратной функциональности в программное обеспечение, вы видите предложение о том, чтобы разработчики процессоров удаляли MMU (блок управления памятью) из аппаратного обеспечения. Чтобы заменить MMU, компиляторы генерируют так называемый позиционно-независимый код (PIC). PIC может быть загружен и запущен по любому адресу без выполнения какого-либо перемещения. Если предположить, что код PIC работает так же быстро, как код без PIC, в чем будет недостаток этой схемы по сравнению со страничным MMU, используемым в современных микропроцессорах?

Решение:
Нужно решение.

Проблема 5

Опишите преимущества использования MMU, включающего сегментацию и пейджинг, по сравнению с теми, которые используют только пейджинг или чистую сегментацию. Представьте свой ответ в виде отдельных списков преимуществ перед каждой из чистых схем.

Решение:
Нужно решение.

Проблема 6

Рассмотрите следующий фрагмент кода, который умножает две матрицы. Предположим, что двоичный файл для выполнения этой функции умещается на одной странице, и стек также умещается на одной странице. Предположим далее, что для хранения целого числа требуется 4 байта. Вычислите количество промахов TLB, если размер страницы равен 4096, а TLB имеет 8 записей с замещающей политикой, состоящей из LRU.

Решение:
1024*(2+1024*1024) = 1073743872
Двоичный файл и стек умещаются на одной странице, поэтому каждый занимает одну запись в TLB. Пока функция работает, она постоянно обращается к двоичной странице и странице стека. Таким образом, две записи TLB для этих двух страниц будут все время находиться в TLB, а данные могут занимать только оставшиеся 6 записей TLB.

Мы предполагаем, что две записи уже находятся в TLB, когда функция начинает выполняться. Затем нам нужно рассмотреть только эти страницы данных.

Поскольку для хранения целого числа требуется 4 байта, а размер страницы составляет 4096 байт, для каждого массива требуется 1024 страницы. Предположим, что каждая строка массива хранится на одной странице. Тогда эти страницы можно представить в виде a[0..1023], b[0..1023], c[0..1023]: Страница a[0] содержит элементы a[0][0..1023], страница a[1] содержит элементы a[1][0..1023] и т. д.

Для фиксированного значения i, скажем, 0, функция выполняет цикл по j и k, у нас есть следующая ссылочная строка:

Для ссылочной строки (всего 1024 строки) a[0], c[0] приведут к двум промахам TLB. Поскольку доступ к a[0] и b[0] будет осуществляться через каждые четыре обращения к памяти, эти две страницы не будут заменены алгоритмом LRU. Для каждой страницы в b[0..1023] каждый раз при доступе к ней будет происходить один промах TLB. Таким образом, количество промахов TLB для второго внутреннего цикла равно
2+1024*1024 = 1048578.

По умолчанию команда virsh domblkstat отображает статистику блокировки для первого блочного устройства, определенного для домена. Чтобы просмотреть статистику других блочных устройств, используйте команду virsh domblklist domain, чтобы вывести список всех блочных устройств, а затем выберите конкретное блочное устройство и отобразите его, указав либо Target, либо Исходное имя из вывода команды virsh domblklist после имени домена. Обратите внимание, что не каждый гипервизор может отображать каждое поле. Чтобы убедиться, что вывод представлен в наиболее разборчивой форме, используйте аргумент --human.

Пример 20.21. Как отобразить статистику блокировки для гостевой виртуальной машины

В следующем примере отображаются устройства, определенные для виртуальной машины guest1, а затем приводится статистика блокировки для этого устройства.

20.12.2. Получение статистики сетевого интерфейса

Команда virsh domifstat domain interface-device отображает статистику сетевого интерфейса для указанного устройства, работающего на данной гостевой виртуальной машине.

Чтобы определить, какие интерфейсные устройства определены для домена, используйте команду virsh domiflist и используйте выходные данные в столбце Интерфейс.

Пример 20.22. Как отобразить сетевую статистику для гостевой виртуальной машины

В следующем примере получается сетевой интерфейс, определенный для виртуальной машины guest1, а затем отображается сетевая статистика для полученного интерфейса (macvtap0):

20.12.3. Изменение состояния связи виртуального интерфейса гостевой виртуальной машины

Команда virsh domif-setlink domain interface-device state настраивает состояние ссылки на указанное интерфейсное устройство как рабочее или нерабочее. . Чтобы определить, какие интерфейсные устройства определены для домена, используйте команду virsh domiflist и используйте столбец Interface или MAC в качестве параметра интерфейсного устройства. По умолчанию virsh domif-setlink изменяет состояние ссылки для работающего домена.Чтобы изменить постоянную конфигурацию домена, используйте аргумент --config.

Пример 20.23. Как включить интерфейс гостевой виртуальной машины

В следующем примере показано определение интерфейсного устройства домена rhel7, затем настройка ссылки как down и, наконец, как up :< /p>

20.12.4. Список состояния канала виртуального интерфейса гостевой виртуальной машины

Команда virsh domif-getlink domain interface-device извлекает указанное состояние ссылки на интерфейсное устройство. Чтобы определить, какие интерфейсные устройства определены для домена, используйте команду virsh domiflist и используйте столбец Interface или MAC в качестве параметра интерфейсного устройства. По умолчанию virsh domif-getlink извлекает состояние ссылки для работающего домена. Чтобы получить постоянную конфигурацию домена, используйте параметр --config .

Пример 20.24. Как отобразить состояние связи интерфейса гостевой виртуальной машины

В следующем примере показано определение интерфейсного устройства домена rhel7, затем определение его состояния как up и изменение состояния на down , а затем проверка успешного изменения:

20.12.5. Настройка параметров пропускной способности сетевого интерфейса

Команда virsh domiftune domain interface-device извлекает или устанавливает параметры пропускной способности интерфейса указанного домена. Чтобы определить, какие интерфейсные устройства определены для домена, используйте команду virsh domiflist и используйте столбец Interface или MAC в качестве параметра интерфейсного устройства. Следует использовать следующий формат:

Параметры --config , --live и --current описаны в Разделе 20.43, «Настройка параметров расписания». Если опция --inbound или --outbound не указана, virsh domiftune запрашивает указанный сетевой интерфейс и отображает параметры пропускной способности. Указав --inbound или --outbound , или оба, а также среднее, пиковое и пиковое значения, virsh domiftune устанавливает параметры пропускной способности. Требуется как минимум среднее значение. Чтобы очистить настройки полосы пропускания, укажите 0 (ноль). Описание средних, пиковых и пакетных значений см. в Раздел 20.27.6.2, «Подключение интерфейсных устройств».

Пример 20.25. Как настроить параметры сетевого интерфейса гостевой виртуальной машины

20.12.6. Получение статистики памяти

Команда

] [--config] [--live] [--current] отображает статистику памяти для работающей гостевой виртуальной машины. Для использования дополнительного переключателя периода требуется период времени в секундах. Установка для этого параметра значения больше 0 позволит драйверу шара возвращать дополнительную статистику, которая будет отображаться при выполнении последующих команд dommemstat. Установка для параметра периода значения 0 останавливает сбор драйвера балуна, но не очищает статистику, которая уже есть в драйвере балуна. Вы не можете использовать параметры --live , --config или --current без установки параметра периода. Если указана опция --live, будет собираться только запущенная статистика гостя. Если используется параметр --config, он будет собирать статистику для постоянного гостя, но только после следующей загрузки. Если используется параметр --current, будет собираться текущая статистика.

Можно использовать оба параметра --live и --config, но --current является исключительным. Если флаг не указан, состояние гостя будет определять поведение сбора статистики (работает или нет).

Пример 20.26. Как собрать статистику памяти для работающей гостевой виртуальной машины

20.12.7. Отображение ошибок на блочных устройствах

Команда virsh domblkerror домен выводит список всех блочных устройств в состоянии ошибка и ошибки, обнаруженные на каждом из них. Эту команду лучше всего использовать после того, как команда virsh domstate сообщит, что гостевая виртуальная машина приостановлена ​​из-за ошибки ввода-вывода.

Пример 20.27. Как отобразить ошибки блочного устройства для виртуальной машины

20.12.8. Отображение размера блочного устройства

Команда virsh domblkinfo domain выводит список емкости, распределения и размеров физических блоков для определенного блочного устройства в виртуальной машине. Используйте команду virsh domblklist, чтобы вывести список всех блочных устройств, а затем выберите отображение определенного блочного устройства, указав имя Target или Source из выходных данных virsh domblklist после имени домена. .

Пример 20.28. Как отобразить размер блочного устройства

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

20.12.9. Отображение блочных устройств, связанных с гостевой виртуальной машиной

Команда virsh domblklist domain [--inactive] [--details] отображает таблицу всех блочных устройств, связанных с указанной гостевой виртуальной машиной.

Если указано --inactive, в результате будут показаны устройства, которые будут использоваться при следующей загрузке, и не будут показаны те, которые в настоящее время используются запущенной гостевой виртуальной машиной. Если указано --details, в таблицу будут включены тип диска и значение устройства. Информация, отображаемая в этой таблице, может использоваться с другими командами, требующими предоставления блочного устройства, такими как virsh domblkinfo и virsh snapshot-create. Дисковые контексты Target или Source также можно использовать при создании контекстной информации xmlfile для команды virsh snapshot-create.

Пример 20.29. Как отобразить блочные устройства, связанные с виртуальной машиной

В следующем примере показаны сведения о блочных устройствах, связанных с виртуальной машиной rhel7.

20.12.10. Отображение виртуальных интерфейсов, связанных с гостевой виртуальной машиной

Команда virsh domblklist domain отображает таблицу всех виртуальных интерфейсов, связанных с указанным доменом. Команде virsh domiflist требуется имя виртуальной машины (или домена), и при желании можно использовать аргумент --inactive. Последний извлекает неактивную, а не текущую конфигурацию, которая извлекается с настройкой по умолчанию. Если указано --inactive, результат показывает устройства, которые будут использоваться при следующей загрузке, и не показывает устройства, которые в настоящее время используются работающим гостем. Команды Virsh, которым требуется MAC-адрес виртуального интерфейса (например, detach-interface , domif-setlink , domif-getlink , domifstat и domiftune ), принимают выходные данные, отображаемые этой командой.

Пример 20.30. Как отобразить виртуальные интерфейсы, связанные с гостевой виртуальной машиной

В следующем примере отображаются виртуальные интерфейсы, связанные с виртуальной машиной rhel7, а затем отображается статистика сетевого интерфейса для устройства vnet0.

В этой главе описывается природа логических структур хранения и отношения между ними. Эти структуры создаются и распознаются Oracle Database и неизвестны операционной системе.

Эта глава состоит из следующих разделов:

Введение в логические структуры хранения

База данных Oracle выделяет логическое пространство для всех данных в базе данных. Логическими единицами распределения пространства базы данных являются блоки данных, экстенты, сегменты и табличные пространства. На физическом уровне данные хранятся в файлах данных на диске (см. главу 11, «Физические структуры хранения»). Данные в файлах данных хранятся в блоках операционной системы.

Рисунок 12-1 представляет собой диаграмму отношения объект-связь для физического и логического хранилища. Обозначение «гусиная лапка» представляет отношение «один ко многим».

Рис. 12-1. Логическое и физическое хранилище

Логическая иерархия хранения

На рис. 12-2 показаны отношения между блоками данных, экстентами и сегментами в табличном пространстве. В этом примере сегмент имеет два экстента, хранящихся в разных файлах данных.

Рис. 12-2. Сегменты, экстенты и блоки данных в табличном пространстве

С высочайшим уровнем детализации Oracle Database хранит данные в блоках данных. Один логический блок данных соответствует определенному количеству байтов физического дискового пространства, например, 2 КБ. Блоки данных — это наименьшие единицы хранения, которые может использовать или выделять база данных Oracle.

Экстент — это набор логически смежных блоков данных, выделенных для хранения определенного типа информации. На рис. 12-2 экстент размером 24 КБ содержит 12 блоков данных, а экстент размером 72 КБ — 36 блоков данных.

Сегмент — это набор экстентов, выделенных для определенного объекта базы данных, например таблицы. Например, данные для таблицы сотрудников хранятся в отдельном сегменте данных, тогда как каждый индекс для сотрудников хранится в своем собственном сегменте индекса. Каждый объект базы данных, занимающий место в хранилище, состоит из одного сегмента.

Каждый сегмент принадлежит одному и только одному табличному пространству. Таким образом, все экстенты сегмента хранятся в одном и том же табличном пространстве. Внутри табличного пространства сегмент может включать экстенты из нескольких файлов данных, как показано на рис. 12-2. Например, один экстент сегмента может храниться в файле users01.dbf, а другой — в файле users02.dbf. Один экстент никогда не может охватывать файлы данных.

Логическое управление пространством

База данных Oracle должна использовать логическое управление пространством для отслеживания и распределения экстентов в табличном пространстве. Когда объекту базы данных требуется экстент, база данных должна иметь метод его поиска и предоставления. Точно так же, когда объекту больше не требуется экстент, в базе данных должен быть способ сделать этот свободный экстент доступным.

База данных Oracle управляет пространством в табличном пространстве на основе типа, который вы создаете. Вы можете создать любой из следующих типов табличных пространств:

Локально управляемые табличные пространства (по умолчанию)

База данных использует растровые изображения в самих табличных пространствах для управления экстентами. Таким образом, в локально управляемых табличных пространствах часть табличного пространства отведена для растрового изображения. В пределах табличного пространства база данных может управлять сегментами с помощью автоматического управления пространством сегментов (ASSM) или ручного управления пространством сегментов (MSSM).

На рис. 12-3 показаны варианты управления логическим пространством в табличном пространстве.

Рис. 12-3 Управление логическим пространством

Локально управляемые табличные пространства

Локально управляемое табличное пространство поддерживает растровое изображение в заголовке файла данных для отслеживания свободного и используемого пространства в теле файла данных. Каждый бит соответствует группе блоков. Когда пространство выделяется или освобождается, Oracle Database изменяет значения растрового изображения, чтобы отразить новое состояние блоков.

На следующем рисунке показано концептуальное представление хранилища, управляемого растровыми изображениями. 1 в заголовке относится к используемому пространству, а 0 — к свободному.

Локально управляемое табличное пространство имеет следующие преимущества:

Не использовать словарь данных для управления экстентами

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

Автоматически отслеживает соседнее свободное пространство

Таким образом, база данных избавляет от необходимости объединять свободные экстенты.

Автоматически определяет размер локально управляемых экстентов

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

Oracle настоятельно рекомендует использовать локально управляемые табличные пространства с автоматическим управлением пространством сегментов.

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

Автоматическое управление пространством сегмента

Метод ASSM использует растровые изображения для управления пространством. Растровые изображения имеют следующие преимущества:

ASSM избавляет от необходимости вручную определять правильные настройки для многих параметров хранения. Только один важный параметр SQL управляет распределением пространства: PCTFREE. Этот параметр указывает процент пространства, которое должно быть зарезервировано в блоке для будущих обновлений (см. «Процент свободного места в блоках данных»).

Несколько транзакций могут выполнять поиск в отдельных списках свободных блоков данных, тем самым уменьшая конкуренцию и время ожидания. Для многих стандартных рабочих нагрузок производительность приложения с ASSM выше, чем производительность хорошо настроенного приложения, использующего MSSM.

Динамическое соответствие пространства экземплярам в среде Oracle Real Application Clusters (Oracle RAC)

ASSM более эффективен и используется по умолчанию для постоянных табличных пространств с локальным управлением.

В этой главе предполагается использование ASSM во всех обсуждениях логического пространства хранения.

Ручное управление пространством сегмента

Устаревший метод MSSM использует связанный список, называемый свободным списком, для управления свободным пространством в сегменте. Для объекта базы данных со свободным пространством в списке свободных блоков отслеживаются блоки под верхней отметкой (HWM), которая является разделительной линией между используемым и еще не использованным пространством сегмента. По мере использования блоков база данных добавляет блоки или удаляет блоки из списка свободных по мере необходимости.

В дополнение к PCTFREE, MSSM требует, чтобы вы управляли выделением пространства с помощью параметров SQL, таких как PCTUSED, FREELISTS и FREELIST GROUPS. PCTUSED устанавливает процент свободного места, который должен существовать в используемом в данный момент блоке, чтобы база данных поместила его в список свободных. Например, если вы установите для параметра PCTUSED значение 40 в операторе CREATE TABLE, вы не сможете вставлять строки в блок сегмента до тех пор, пока не будет использовано менее 40 % пространства блока.

В качестве иллюстрации предположим, что вы вставляете строку в таблицу. База данных проверяет свободный список таблицы на наличие первого доступного блока. Если строка не помещается в блоке, а используемое пространство в блоке больше или равно PCTUSED, то база данных удаляет блок из списка и ищет другой блок. Если вы удаляете строки из блока, то база данных проверяет, меньше ли используемого пространства в блоке, чем PCTUSED. Если да, то база данных помещает блок в начало списка свободных мест.

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

Как показано на рис. 12-4, вы также можете создать объект с одной или несколькими группами свободных списков, которые представляют собой наборы списков свободных мест. Каждая группа имеет главный список свободных процессов, который управляет отдельными списками свободных процессов в группе.Накладные расходы на пространство для бесплатных списков, особенно для групп бесплатных списков, могут быть значительными.

Рисунок 12-4 Свободные группы списка

Управлять пространством сегмента вручную может быть сложно. Вы должны настроить PCTFREE и PCTUSED, чтобы уменьшить миграцию строк (см. «Сцепленные и перенесенные строки») и избежать лишнего пространства. Например, если каждый используемый блок в сегменте заполнен наполовину, а значение PCTUSED равно 40, то база данных не разрешает вставки ни в один из этих блоков. Из-за сложности точной настройки параметров распределения пространства Oracle настоятельно рекомендует ASSM. В ASSM PCTFREE определяет, можно ли вставить новую строку в блок, но не использует списки свободных мест и игнорирует PCTUSED .

Руководство администратора базы данных Oracle для изучения локально управляемых табличных пространств

Oracle Database 2 Day DBA и Oracle Database Administrator’s Guide, чтобы узнать больше об автоматическом управлении пространством сегментов

Справочник по языку Oracle Database SQL, чтобы узнать о параметрах хранения, таких как PCTFREE и PCTUSED

Табличные пространства, управляемые словарем

Табличное пространство, управляемое словарем, использует словарь данных для управления своими экстентами. База данных Oracle обновляет таблицы в словаре данных всякий раз, когда экстент выделяется или освобождается для повторного использования. Например, когда таблице требуется экстент, база данных запрашивает таблицы словаря данных и ищет свободные экстенты. Если база данных находит место, она модифицирует одну таблицу словаря данных и вставляет строку в другую. Таким образом, база данных управляет пространством, изменяя и перемещая данные.

SQL, который база данных выполняет в фоновом режиме, чтобы получить место для объектов базы данных, является рекурсивным SQL. Частое использование рекурсивного SQL может отрицательно сказаться на производительности, поскольку обновления словаря данных должны быть сериализованы. Локально управляемые табличные пространства, используемые по умолчанию, позволяют избежать этой проблемы с производительностью.

Руководство администратора базы данных Oracle, чтобы узнать, как перенести табличные пространства из управляемых по словарю в локально управляемые

Обзор блоков данных

База данных Oracle управляет логическим пространством хранения в файлах данных базы данных в единицах, называемых блоками данных, также называемыми блоками или страницами Oracle. Блок данных — это минимальная единица ввода-вывода базы данных.

Блоки данных и блоки операционной системы

На физическом уровне данные базы данных хранятся в дисковых файлах, состоящих из блоков операционной системы. Блок операционной системы — это минимальная единица данных, которую операционная система может читать или записывать. Блок Oracle, напротив, представляет собой логическую структуру хранения, размер и структура которой неизвестны операционной системе.

На рис. 12-5 показано, что блоки операционной системы могут отличаться по размеру от блоков данных. База данных запрашивает данные кратными блокам данных, а не блокам операционной системы.

Рис. 12-5 Блоки данных и блоки операционной системы

Когда база данных запрашивает блок данных, операционная система преобразует эту операцию в запрос данных в постоянном хранилище. Логическое отделение блоков данных от блоков операционной системы имеет следующие последствия:

Приложениям не нужно определять физические адреса данных на диске.

Данные базы данных можно чередовать или зеркально отображать на нескольких физических дисках.

Размер блока базы данных

Каждая база данных имеет размер блока базы данных. Параметр инициализации DB_BLOCK_SIZE задает размер блока данных для базы данных при ее создании. Размер устанавливается для табличных пространств SYSTEM и SYSAUX и является значением по умолчанию для всех остальных табличных пространств. Размер блока базы данных нельзя изменить, кроме как путем повторного создания базы данных.

Если DB_BLOCK_SIZE не задан, размер блока данных по умолчанию зависит от операционной системы. Стандартный размер блока данных для базы данных составляет 4 КБ или 8 КБ. Если размер блоков данных и блоков операционной системы различается, то размер блока данных должен быть кратен размеру блока операционной системы.

Справочник по базе данных Oracle, чтобы узнать о параметре инициализации DB_BLOCK_SIZE

Размер блока табличного пространства

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

Руководство администратора базы данных Oracle, чтобы узнать, как указать нестандартный размер блока для табличного пространства

Формат блока данных

Каждый блок данных имеет формат или внутреннюю структуру, которая позволяет базе данных отслеживать данные и свободное пространство в блоке. Этот формат одинаков, если блок данных содержит данные таблицы, индекса или кластера таблиц. На рис. 12-6 показан формат несжатого блока данных (см. «Сжатие блока данных», чтобы узнать о сжатых блоках).

Рисунок 12-6 Формат блока данных

Заголовок блока данных

База данных Oracle использует служебные данные блока для управления самим блоком. Заголовок блока недоступен для хранения пользовательских данных.Как показано на рис. 12-6, заголовок блока включает следующие части:

Эта часть содержит общую информацию о блоке, включая адрес диска и тип сегмента. Для блоков, управляемых транзакциями, заголовок блока содержит активную и историческую информацию о транзакциях.

Запись транзакции требуется для каждой транзакции, которая обновляет блок. База данных Oracle изначально резервирует место в заголовке блока для записей транзакций. В блоках данных, выделенных для сегментов, которые поддерживают транзакционные изменения, свободное пространство может также содержать записи транзакций, когда пространство заголовка исчерпано. Пространство, необходимое для записей транзакций, зависит от операционной системы. Однако записи транзакций в большинстве операционных систем требуют приблизительно 23 байта.

Для таблицы, организованной в куче, этот каталог содержит метаданные о таблицах, строки которых хранятся в этом блоке. Несколько таблиц могут хранить строки в одном блоке.

Для таблицы, организованной в виде кучи, этот каталог описывает расположение строк в части данных блока.

После выделения места в каталоге строк база данных не освобождает это пространство после удаления строки. Таким образом, блок, который в настоящее время пуст, но ранее имел до 50 строк, по-прежнему имеет 100 байтов, выделенных для каталога строк. База данных повторно использует это пространство только тогда, когда в блок вставляются новые строки.

Некоторые части заголовка блока имеют фиксированный размер, но общий размер может меняться. В среднем служебные данные блока составляют от 84 до 107 байт.

Формат строки

Часть данных строки блока содержит фактические данные, такие как строки таблицы или записи ключа индекса. Как каждый блок данных имеет внутренний формат, так и каждая строка имеет формат строки, который позволяет базе данных отслеживать данные в строке.

База данных Oracle хранит строки в виде записей переменной длины. Строка состоит из одной или нескольких частей строки. Каждая часть строки имеет заголовок строки и данные столбца .

На рис. 12-7 показан формат строки.

Рис. 12-7. Формат фрагмента строки

Заголовок строки

База данных Oracle использует заголовок строки для управления частью строки, хранящейся в блоке. Заголовок строки содержит следующую информацию:

Столбцы в части строки

Части строки, расположенные в других блоках данных

Если целую строку можно вставить в один блок данных, Oracle Database сохранит эту строку как одну часть строки. Однако, если все данные строки не могут быть вставлены в один блок или обновление приводит к тому, что существующая строка перерастает свой блок, тогда база данных сохраняет строку в виде нескольких частей строки (см. «Сцепленные и перенесенные строки»). Блок данных обычно содержит только одну часть строки на строку.

Строка, полностью содержащаяся в одном блоке, имеет не менее 3 байтов заголовка строки.

Данные столбца

После заголовка строки в разделе данных столбца хранятся фактические данные в строке. Часть строки обычно хранит столбцы в порядке, указанном в операторе CREATE TABLE, но этот порядок не гарантируется. Например, столбцы типа LONG создаются последними.

Как показано на рис. 12-7, для каждого столбца в строке Oracle Database хранит длину столбца и данные отдельно. Необходимое пространство зависит от типа данных. Если тип данных столбца имеет переменную длину, то пространство, необходимое для хранения значения, может увеличиваться и уменьшаться при обновлении данных.

Каждая строка имеет слот в каталоге строк заголовка блока данных. Слот указывает на начало строки.

Формат строки

База данных Oracle использует идентификатор строки для уникальной идентификации строки. Внутри rowid представляет собой структуру, которая содержит информацию, необходимую базе данных для доступа к строке. Идентификатор строки физически не хранится в базе данных, а выводится из файла и блока, в котором хранятся данные.

Расширенный идентификатор строки включает номер объекта данных. Этот тип rowid использует кодировку base 64 физического адреса для каждой строки. Символы кодировки: A-Z , a-z , 0-9 , + и / .

Пример 12-1 запрашивает псевдостолбец ROWID, чтобы показать расширенный идентификатор строки в таблице сотрудников для сотрудника 100.

Пример 12-1. Псевдостолбец ROWID

На рис. 12.8 показан формат расширенного идентификатора строки.

Рис. 12-8. Формат ROWID

Расширенный идентификатор строки отображается в формате, состоящем из четырех частей, OOOOOOFFFBBBBBBRRR , причем формат разделен на следующие компоненты:

Номер объекта данных идентифицирует сегмент (объект данных AAAPec в примере 12-1). Каждому сегменту базы данных присваивается номер объекта данных. Объекты схемы в одном сегменте, например кластер таблицы, имеют одинаковый номер объекта данных.

Номер файла данных относительно табличного пространства идентифицирует файл данных, содержащий строку (файл AAF в примере 12-1).

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

Номер строки идентифицирует строку в блоке (строка AAA в примере 12-1).

После того, как элементу строки назначен идентификатор строки, в особых случаях он может измениться. Например, если включено перемещение строк, идентификатор строки может измениться из-за обновлений ключа секции, операций Flashback Table, операций сжатия таблиц и т. д. Если перемещение строк отключено, идентификатор строки может измениться, если строка экспортируется и импортируется с помощью утилит базы данных Oracle.

Внутренне база данных выполняет перемещение строк, как если бы строка была физически удалена и вставлена ​​повторно. Однако перемещение строк считается обновлением, которое влияет на триггеры.

Сжатие блоков данных

База данных может использовать сжатие таблиц для устранения повторяющихся значений в блоке данных (см. «Сжатие таблиц»). В этом разделе описывается формат блоков данных, использующих сжатие.

Формат блока данных, в котором используется базовое и расширенное сжатие строк, практически такой же, как и у несжатого блока. Разница в том, что таблица символов в начале блока хранит повторяющиеся значения для строк и столбцов. База данных заменяет вхождения этих значений короткой ссылкой на таблицу символов.

Предположим, что строки в примере 12-2 хранятся в блоке данных для таблицы продаж из семи столбцов.

Пример 12-2 Строки в таблице продаж

Когда к этой таблице применяется базовое или расширенное сжатие строк, база данных заменяет повторяющиеся значения ссылкой на символ. Пример 12-3 представляет собой концептуальное представление сжатия, в котором символ * заменяет 29-NOV-00, а % заменяет 9999.

Пример 12-3. Сжатые строки OLTP в таблице продаж

Таблица 12-1 концептуально представляет таблицу символов, которая сопоставляет символы со значениями.

Инструкции по использованию утилиты Windows chkdsk для устранения повреждения диска хранилища. Утилита Windows DISKPART также частично обсуждается здесь.

Acronis Сyber Protect Домашний офис

Вы только что приобрели образ Acronis True Image. Вы решили создать резервную копию диска с операционной системой Windows. Вы настраиваете задачу резервного копирования и запускаете ее. а то беда!

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

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

Windows предоставляет утилиту, известную как chkdsk, которая может исправить большинство ошибок на диске хранения. Утилита chkdsk должна запускаться из командной строки администратора для выполнения своей работы. В этой статье с практическими рекомендациями мы узнаем, что делает chkdsk и как его использовать для решения вышеуказанных проблем, а также других, не перечисленных во введении здесь.

Что именно делает chkdsk? Хороший вопрос. Основная функция chkdsk — сканирование файловой системы на диске (NTFS, FAT32) и проверка целостности файловой системы, включая метаданные файловой системы, а также исправление любых обнаруженных логических ошибок файловой системы. Эти ошибки могут включать в себя поврежденные записи в главной таблице файлов тома (MFT), неверные дескрипторы безопасности, связанные с файлами, или неверную отметку времени или информацию о размере файла для отдельных файлов.

Chkdsk также может сканировать поврежденные сектора. Плохие сектора бывают двух видов: мягкие поврежденные сектора, возникающие при неправильной записи данных, и твердые поврежденные сектора, возникающие из-за физического повреждения диска. Chkdsk пытается исправить эти проблемы, восстанавливая поврежденные сектора и помечая поврежденные сектора, чтобы они больше не использовались.

Как повреждается жесткий диск? Еще один хороший вопрос. Каждый раз, когда Windows аварийно закрывается или происходит системный сбой, это может привести к повреждению. Со временем вы можете ожидать, что вы столкнетесь с такой коррупцией. Запуск chkdsk в рамках обычной процедуры обслуживания является хорошей практикой, если вы хотите это сделать.

Достаточно технических вещей, давайте посмотрим, что мы можем сделать с помощью утилиты chkdsk.

Во-первых, давайте рассмотрим инструменты, различные переключатели командной строки и их использование.

Описание

Указывает букву диска (после двоеточия), точку подключения или имя тома.

Используйте только с таблицей размещения файлов (FAT) и FAT32. Указывает расположение и имя файла или набора файлов, которые программа chkdsk должна проверять на фрагментацию.Вы можете использовать? и * символы подстановки для указания нескольких файлов.

Исправляет ошибки на диске. Диск должен быть заблокирован. Если chkdsk не может заблокировать диск, появится сообщение с вопросом, хотите ли вы проверить диск при следующей перезагрузке компьютера.

Отображает имя каждого файла в каждом каталоге при проверке диска.

Обнаруживает поврежденные сектора и восстанавливает читаемую информацию. Диск должен быть заблокирован. /r включает функциональность /f с дополнительным анализом ошибок физического диска.

При необходимости принудительно отключает том. Все открытые дескрипторы диска становятся недействительными. /x также включает в себя функции /f.

Использовать только с файловой системой NTFS. Выполняет менее активную проверку записей индекса, что сокращает время, необходимое для запуска chkdsk.

Использовать только с файловой системой NTFS. Не проверяет циклы в структуре папок, что сокращает время, необходимое для запуска chkdsk.

Использовать только с файловой системой NTFS. Изменяет размер файла журнала на введенный вами размер. Если вы опустите параметр размера, /l отображает текущий размер.

Только для NTFS: очищает список поврежденных кластеров на томе и повторно сканирует все выделенные и свободные кластеры на наличие ошибок. /b включает функциональность /r. Используйте этот параметр после создания образа тома на новом жестком диске.

Отображает справку в командной строке.

Как видите, в инструменте chkdsk разрешено множество параметров, которые могут выполнять некоторые дополнительные операции.

Примечание. Где X: буква раздела диска, на котором должна быть запущена программа chkdsk.

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

На приведенном выше снимке экрана показан результат выполнения команды chkdsk с параметром /f для раздела C:. Как видите, команда не запустилась из-за того, что диск используется другим процессом. При желании он предлагает запуститься при следующем перезапуске, ввод y позволяет выполнить сканирование. Это обычное дело при запуске chkdsk при загрузке Windows.

Еще одно замечание: параметр /r команды chkdsk приводит к такому же сообщению, как показано ниже:

Что произойдет, если мы запустим chkdsk на разделе C: без каких-либо параметров? Ниже представлен один из результатов.

Если chkdsk запускается без параметров, он работает в режиме "Только для чтения" и сообщает об общем состоянии файловой системы в указанном разделе. Это хорошее сканирование для выполнения на разделах вашего диска в качестве планового обслуживания ваших дисков. Если проверка сканирования приводит к обнаружению проблемы с файловой системой, запуск или планирование запуска chkdsk /f затем попытаются исправить найденные ошибки.

Какая разница в использовании параметра /r в chkdsk? Chkdsk, используемый с параметром /r, запускает сканирование раздела «Этап 4:» и ищет плохие кластеры в данных пользовательского файла. По завершении утилита отобразит, сколько файлов было обработано, и статус этого сканирования.

После сканирования на этапе 4 утилита запускает сканирование раздела на этапе 5 и ищет на диске поврежденные свободные кластеры. После завершения сканирования утилита отображает количество обработанных свободных кластеров и состояние сканирования.

Ниже приведены скриншоты каждого этапа сканирования chkdsk /r после его завершения.

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

Теперь, когда мы рассмотрели основное использование утилиты chkdsk, пришло время углубиться в использование этой утилиты на диске операционной системы Windows. Мы уже обнаружили, что chkdsk не будет работать на загруженном разделе/томе Windows System C: до тех пор, пока не произойдет перезагрузка компьютера.Вы могли заметить, что chkdsk работает с отдельными разделами на диске. Диск операционной системы Windows, отформатированный как диск GPT, как и большинство современных установок Windows, может иметь несколько разделов на диске. Дело в том, что повреждение диска может существовать на любом разделе диска. Повреждение может существовать более чем в одном разделе на одном диске. Кроме того, системные диски Windows будут иметь разделы на диске, которым не назначены буквы дисков, что делает использование на них утилиты chkdsk более сложной задачей.

Итак, как вы решаете проблемы, поднятые выше? Хороший вопрос! Давайте посмотрим, как решить эти проблемы.

Для начала давайте рассмотрим типичную установку Windows 10 на диск в формате GPT с помощью управления дисками Windows.

Как видно на снимке экрана выше, этот диск имеет четыре раздела. Это Recovery (450 МБ), EFI (99 МБ), Windows 10 PRO (237,08 ГБ) и OEM (861 МБ). Обратите внимание, что только одному разделу назначена буква диска, то есть разделу Windows 10, которому назначена буква (C :), как и следовало ожидать. Остальные три раздела не имеют буквенного обозначения. Чтобы использовать утилиту chkdsk для поиска и исправления ошибок диска, эту утилиту необходимо запускать на каждом разделе диска по одной за раз. Затем необходимо временно назначить буквы дисков разделам, для которых не назначены буквы, чтобы выполнить на них сканирование chkdsk.

Можно использовать средство управления дисками Windows, чтобы назначить букву диска этим разделам. Для этого поместите курсор мыши внутрь раздела, которому вы хотите присвоить букву, и щелкните там левой кнопкой мыши. Вы заметите, что фон раздела выглядит заштрихованным, как показано ниже.

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

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

Снимки экрана здесь и ниже показывают, что разделу присвоена буква F:, что теперь позволяет запускать сканирование этого раздела с помощью chkdsk.

Вы можете обнаружить, что «Управление дисками» не может выполнить назначение буквы диска. Когда вы выбираете раздел, как указано выше, и щелкаете его правой кнопкой мыши, вы можете просто увидеть маленькое поле с отображаемым словом «Справка». Другая возникающая проблема заключается в том, что параметр «Изменить буквы дисков и пути» отображается серым цветом и поэтому не может быть выбран. Для этого может быть ряд причин. Одна из наиболее распространенных причин заключается в том, что формат раздела не NTFS или FAT32. В этом случае единственный способ решить проблему — удалить том и переформатировать его. Эта ситуация обычно является результатом того, что сам диск ранее использовался в MAC.

Еще одна проблема, которая может возникнуть, заключается в том, что для раздела установлен атрибут "Только для чтения". Удаление атрибута «Только для чтения» решит эту проблему

В других случаях потребуется использовать другую утилиту Windows, чтобы назначить букву выбранному разделу. Для этого мы будем использовать утилиту diskpart, которую необходимо запускать из командной строки администратора. Чтобы узнать, как использовать командную строку, нажмите ЗДЕСЬ.

Ниже приведены шаги, необходимые для назначения букв дисков разделам системного диска Windows, для которых не назначено назначение с помощью утилиты diskpart. В этом примере мы назначим букву диска X: разделу восстановления на нашем тестовом диске.

Откройте командную строку Windows от имени администратора и введите diskpart, чтобы запустить утилиту, как показано ниже.

Обратите внимание, что командная строка меняется на DISKPART.

После того, как утилита запущена, введите в томе списка подсказок DISKPART, как показано ниже.

Обратите внимание, что с помощью этой команды отображаются все тома, установленные на компьютере, включая тома на других дисках. Здесь вы должны отметить, что нам нужно назначать буквы только тем разделам, которые не имеют существующих назначений букв, чтобы на них можно было запустить chkdsk. На снимке экрана выше эти разделы/тома — тома 1, 3 и 4.

В нашем примере мы собираемся назначить букву диска X: Тому 1, разделу восстановления. Для этого мы сначала должны сосредоточиться на Томе 1.

  • В командной строке DISKPART введите select volume 1, чтобы выделить том 1.
  • В командной строке введите assign letter=X, чтобы назначить букву X тому/разделу.
  • В командной строке введите list volume, чтобы отобразить список томов, и подтвердите, что буква X назначена нужному тому/разделу.

Примечание. Звездочка слева от Тома 1 ниже. Это указывает на то, что том 1 является «в фокусе»/выбранным объектом, и проблема с командами повлияет на этот объект.

Обратите внимание, что diskpart отображает ответ, подтверждающий, что Volume 1 теперь является выбранным или «в фокусе» объектом. Теперь, когда Том 1 «в фокусе», вы можете выполнить свою задачу по присвоению ему буквы. (ПРИМЕЧАНИЕ. Знак = в предыдущей команде не выделен жирным шрифтом. Это означает, что аргумент = не является обязательным для работы команды, хотя вы найдете его как часть команды во многих источниках).

После запуска команды assign letter X обратите внимание, что diskpart отвечает сообщением о том, что требуемое назначение выполнено.

Особое примечание: я должен отметить, что при назначении буквы разделу EFI в формате GPT использование команды тома diskpart list не будет работать. Причина этого в том, что раздел EFI фактически является частью раздела «Система». Чтобы присвоить букву этому разделу, вы должны заменить команду списка разделов командой listvolume. Пожалуйста, просмотрите скриншот ниже для обзора этих замен.

Теперь для запуска команды chkdsk необходимо выйти из утилиты diskpart. В командной строке введите exit. Это завершит работу утилиты, которая вернет вашу командную строку для чтения C:\WINDOWS\system32>. В этом приглашении теперь вы можете запустить желаемое сканирование утилитой chkdsk. Взгляните на приведенный ниже снимок экрана для иллюстрации выполнения команды chkdsk x:/f.

Ширина

Обратите внимание, что выполняется три «этапа» сканирования параметра /f команды chkdsk.

При подозрении на повреждение диска рекомендуется отказаться от использования параметра /f команды chkdsk и вместо этого использовать параметр /r. Использование параметра /r включает параметр /f в сканирование, поэтому вы будете выполнять оба действия с использованием параметра /r.

После завершения сканирования chkdsk вы можете снова использовать утилиту diskpart, чтобы удалить букву диска, назначенную для тома/раздела, чтобы все вернулось в нормальное состояние. В командной строке Windows введите

  • diskpart для запуска утилиты.
  • По запросу DISKPART введите list volume, чтобы отобразить все тома/разделы.
  • По запросу введите select volume 1, чтобы выбрать нужный раздел.
  • По запросу введите remove letter x, чтобы удалить ранее назначенную букву диска.
  • По запросу введите list volume, чтобы отобразить список томов и подтвердить удаление письма.

Снимок экрана ниже иллюстрирует приведенные выше последовательности команд.

Примечание. В приведенном выше примере замените список дисков / список разделов на разделы EFI.

На снимке экрана ниже показано подтверждение успешного удаления буквы диска.

Примечание. Звездочка слева от тома 1 указывает на "в фокусе"/выбранный том/раздел.

Вы можете выполнить следующие действия, чтобы назначить буквы диска другим небуквенным разделам на диске, чтобы можно было выполнять на них сканирование chkdsk. Скорее всего, вы обнаружите ошибки в одном или нескольких из этих разделов.После сканирования chkdsk и исправления ошибок вы сможете создать резервную копию или восстановить свой диск.

На этом мы завершаем наше руководство по борьбе с повреждением диска хранилища с помощью встроенных в Windows служебных инструментов chkdsk и diskpart. С помощью этой инструкции вы сможете эффективно бороться с повреждением диска, что, в свою очередь, позволит выполнять резервное копирование и восстановление вашей системы.

Читайте также: