Действительно ли диски являются взаимозаменяемыми в зеркальной установке RAID?

Как насчет просто этого?

$ gunzip *.txt.gz

gunzip создаст gunzipped файл без .gz снабдите суффиксом и удалите исходный файл по умолчанию (см. ниже для деталей). *.txt.gz будет расширен Вашей оболочкой до всего соответствия файлов.

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


Из страницы справочника gzip(1):

gunzip takes a list of files on its command line and  replaces  each  file
whose  name  ends  with  .gz, -gz, .z, -z, or _z (ignoring case) and which
begins with the correct magic number with an uncompressed file without the
original  extension.

Отметьте о 'настоящем имени'

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

Из gzip страницы справочника:

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

И эти имена файлов, сохраненные в метаданных, могут также быть просмотрены с file:

$ echo "foo" > myfile_orig
$ gzip myfile_orig 
$ mv myfile_orig.gz myfile_new.gz 
$ file myfile_new.gz 
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug  5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz        # gunzip without -N
$ ls myfile_*
myfile_new

$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz 
# gunzip with -N
$ gunzip -N myfile_new.gz     # gunzip with -N
$ ls myfile_*
myfile_orig
5
23.10.2013, 04:45
2 ответа

Идентичная копия Ваших данных хранится на каждом диске (если массив не "грязен" — например, если питание потеряно после записи в диск 0, но прежде, чем записать в диск 1). Однако метаданные отличаются; это позволяет mdadm и md говорить эти два диска независимо.

Можно ли подкачать кабели вокруг?

Можно подкачать кабели на этих двух дисках. Когда Вы (или сценарии начальной загрузки Вашего дистрибутива) делаете mdadm --assemble на массиве mdadm смотрит на метаданные по каждому диску, и от этого выясняет, который является диском 1 и который является диском 2.

Это на самом деле чрезвычайно гибко — Вы могли, например, удалить один из дисков, поместить его в корпус USB-SATA и присоединить его к USB-порту, и mdraid все еще будет совершенно счастлив.

Я могу восстановить ухудшенный массив при помощи dd?

Нет. Если бы Вы сделали это, то у Вас было бы два диска 1's или два диска 2's, и mdadm был бы перепутан (и, я не протестировал это, но я предполагаю, что он отказался бы собирать массив).

В целом все управление массивами, покончили mdadm и далее это редко - хорошая идея обойти mdraid. Для восстановления массива Вы добавляете новый диск/раздел к нему. Что-то вроде этого, принимая sdb1 раздел на замещающем диске:

mdadm --add /dev/md0 /dev/sdb1

mdraid затем скопирует данные, и можно наблюдать состояние cat /proc/mdstat. Вы свободны продолжить использовать массив во время пересинхронизации. Нет никакой потребности загрузиться с живого CD или подобный (необходимо смочь загрузиться от ухудшенного массива). На самом деле, если у Вас есть лотки замены в горячем режиме в Вашей машине, можно заменить неудавшийся sdb как это:

  1. mdadm -r /dev/md0 /dev/sdb1
  2. Удалите диск
  3. Вставьте новый диск
  4. Разделите новый диск (часто, но не всегда, будет sdb снова).
  5. mdadm -a /dev/md0 /dev/sdb1

Это не требует никакого времени простоя.

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

Что-нибудь еще?

Да. mdadm --create не шаг восстановления. Это используется для создания нового, пустого массива, и следующий шаг обычно был бы pvcreate или mkfs. Уже существующие массивы запускаются с помощью mdadm --assemble. (Это, кажется, достаточно общая ошибка и имеет потенциал для уничтожения данных.)

Заключительные комментарии

Необходимо, вероятно, взять немного для ознакомления с mdraid документацией (Вы доверяете ей свои данные, в конце концов). В частности, прочитайте mdadm страница руководства, любая документация RAID Ваш дистрибутив производит, и Documentation/md.txt (из источников ядра, соответствуя Вашей версии ядра). Это, вероятно, не самые понятные документы, но они все обычно актуальны.

Существует также Набег Linux Wiki, но остерегайтесь этого не все, что там полностью актуально.

Существуют другие страницы там, но быть особенно осторожными чего-либо упоминание mkraid или /etc/raidtab кроме как исторический очерк, как те инструменты имеют быть устаревшими в течение десятилетия.

8
27.01.2020, 20:34
  • 1
    +1, большое спасибо за подробное объяснение и протест о старом mkraid и/etc/raidtab doscs! Это немного более ясно теперь. Я все еще не уверен, стоит ли это для конфигурирования на моем рабочем столе / рабочая станция, но я изучу его. –  Cedric Martin 23.10.2013, 17:55
  • 2
    @CedricMartin, если у Вас есть два диска, это стоит того на рабочем столе. Дело не в этом очень для конфигурирования (особенно при использовании дистрибутива как Debian, где установщик сделает это для Вас) и Вы будете довольно счастливы, когда он сохранит Вас от отказа диска, поврежденного сектора, и т.д. –  derobert 23.10.2013, 17:57

Диски не на 100% идентичны. Каждый Linux softraid устройство содержит блок метаданных с uniq гуидом. Таким образом, dd не мог бы работать.

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

3
27.01.2020, 20:34

Теги

Похожие вопросы