Вернитесь btrfs к ext4 на набеге mdadm

Проблема с разрешениями связана не с правами доступа к файлам, а с тем, что SELinux запрещает исполняемому файлу sendmail доступ к файлам в файловой системе в определенном месте. Ваш лучший друг для решения этих проблем - использовать графический интерфейс средства устранения неполадок SELinux.

$ sealert -b 

ss#1

Затем вы захотите последовать совету, чтобы добавить необходимые контексты в вашу файловую систему, чтобы успокоить SELinux.

ss #2

ПРИМЕЧАНИЕ: В приведенном выше примере я выбрал второй вариант и запустил команды semanage и restorecon , как описано, чтобы исправить мою проблему здесь. Вам нужно будет сделать то же самое с проблемой sendmail .

Является частью Fedora?

Да, SELinux, и поэтому инструменты, используемые для устранения неполадок, являются частью всех дистрибутивов Red Hat. Когда я не могу найти имя пакета, членом которого является данный исполняемый файл, я обращаюсь к команде repoquery .

$ repoquery -qf */sealert
setroubleshoot-server-0:3.2.17-1.fc20.x86_64
setroubleshoot-server-0:3.2.14-2.fc20.x86_64

Проблемы, возникающие при работе с графическим интерфейсом

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

$ sudo sealert -a /var/log/audit/audit.log | less

У вас будет чтобы просмотреть вывод для вашей конкретной проблемы и использовать предлагаемые команды для устранения проблем с SELinux. Вы ищете строки, которые говорят что-то вроде этих строк:

***** Плагин openvpn (уверенность 47,5) предлагает ********************* ******

Те, у которых выше значение «уверенности», - это действия, которые вы, вероятно, захотите предпринять. Команды для «исправления» проблем SELinux следуют после этих строк, например:

$ sudo semanage fcontext -a -t home_cert_t /home/slm/somedom.com.ca.crt
$ sudo restorecon -R -v /home/slm/somedom.com.ca.crt

Ссылки

1
10.03.2015, 02:31
1 ответ

Признаю, ничто в более документации не выскакивает на меня, говоря, что это произойдет. Но, поскольку вы хотите начать просмотр (вывод/обработка) входных данных (список файлов) по указанному номеру строки (в частности, 11) используется логическая команда tail :

ls -r | tail -n +11 | …

Слово wise: тестировать подобные вещи путем прокладки в cat или xargs (без команды) прежде чем сделать что-то опасное, как xargs rm .

-121--133633-

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

Во-первых, комментарий : вы упоминаете, что /dev/md/5 не содержит таблицы разделов, но это вполне нормально. Устройства MD обычно используются в одной из двух конфигураций: (1) поместить файловую систему непосредственно на устройство MD, как вы сделали, или (2) использовать устройство MD в качестве физического тома LVM (PV), который затем является членом группы томов (VG), на котором вы затем создаете любое желаемое количество логических томов (LV), которые вы используете для файловых систем, устройств подкачки, образов ВМ и т.д. Последний звучит как множество слоев, но это просто обычная архитектура LVM. Размещение таблицы разделов на устройстве MD - это не то, что я когда-либо видел. Это позволит вам разбить MD-устройство на несколько частей так же, как создание нескольких LV, но вы также можете использовать LVM вместо этого. Кроме того, я даже не уверен, что размещение таблицы разделов непосредственно на устройстве MD работает автоматически: вам может понадобиться использовать инструмент, такой как kpartx , чтобы сделать это работает, который использует технологию отображения устройств так же, как LVM, так что, опять же, вы можете также использовать LVM.

Введение

Поскольку фактически используется менее половины доступного размера /dev/md/5 , способ включает разделение устройства на 2 половины, перемещение данных с первой половины на вторую половину, создание нового типа файловой системы в первой половине, перемещение данных обратно в первую половину, затем избавление от разделения на 2 половины.

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

Мы будем использовать device-mapper для создания двух виртуальных блочных устройств, которые представляют каждую половину большого /dev/md/5 устройства.

устройство -mapper - это та же технология, которую LVM использует для отображения различных порций и частей физических томов (PV) в виде логических томов (LV). Для типа отображения, известного как линейный, это выполняется путем указания устройства-источника, смещения источника и длины цели. (device-mapper имеет и другие типы сопоставлений, о которых мы не будем говорить.) Отличие заключается в том, что LVM автоматически управляет и отслеживает эти сопоставления и постоянно сохраняет их в метаданных, которые хранятся в виде заголовка на PV. Он также автоматически и прозрачно выбирает информацию о размещении (смещения и размеры, несколько блоков...). Здесь мы не можем использовать LVM для выполнения работы, потому что мы должны строго контролировать смещения и размеры вручную, а также потому, что у нас нет места в начале /dev/md/5 для вставки заголовка метаданных PV. Поэтому мы будем использовать device-mapper непосредственно через команду dmsetup .

Отказ от ответственности

Я не пытался выполнить эту процедуру. Это должно сработать в принципе, но я мог ошибиться. Если я совершил ошибку или вы совершили ошибку, то ВЫ ПОТЕРЯЕТЕ СВОИ ДАННЫЕ.

Процедура

  1. Измените размер файловой системы Btrfs на /dev/md/5 так, чтобы она занимала не более половины устройства. Используйте blockdev --getsize64/dev/md/5 , чтобы узнать точно , сколько байт содержит устройство, и сделать файловую систему Btrfs меньше половины. Err на стороне сделать его меньше, чем больше. Это нормально, если он занимает существенно меньше половины устройства, но это не нормально, если он превышает даже на 1 байт.

     Размер файловой системы btrfs < devid >: < половина >
    

    < devid > - идентификатор устройства члена Btrfs для изменения размера. Для просмотра устройств используется btrfs filesystem show/mountpoint . Я ожидаю, что для этой процедуры вы используете файловую систему Btrfs только с одним членом устройством.

    половина - половина числа байтов, сообщаемых blockdev --getsize64/dev/md/5 . Округлить вниз и вычесть еще больше, чтобы быть уверенным.

    Эта команда займет время. Я не уверен, вернется ли он немедленно и будет работать в фоновом режиме или будет работать на переднем плане. Мой опыт Btrfs предполагает, что он будет работать на переднем плане. В любом случае проверьте журналы ядра, чтобы убедиться в том, что операция завершена.

  2. Дважды проверьте размер файловой системы Btrfs

     btrfs filesystem show/mountpoint
    

    Убедитесь, что размер меньше половины /dev/md/5 . Эта команда, вероятно, покажет вам размер в гигабайтах только с 2 десятичными разрядами, и я не уверен, если он округляется вниз или вверх, поэтому вы хотите вычесть некоторый запас на предыдущем шаге, чтобы быть действительно уверенным, что показанное здесь значение меньше половины размера устройства.

  3. Теперь у нас следующая ситуация:

     | * * * * * * * * * ------- |/dev/md/5
    

    где * - используемое пространство и - - неиспользуемое пространство и | --| показывает диапазон блочного устройства.

    Вычислите номер первого сектора во второй половине устройства.

    Начните с выхода blockdev --getsize64/dev/md/5 и разделите его на 512, так как секторы сопоставления устройств составляют 512 байт. Это число секторов в /dev/md/5 .

    Делите это число на 2. Округление вниз. Позвоните по этому номеру < половина > .

    Создайте виртуальные блочные устройства для сопоставления первой и второй половины по отдельности:

     dmsetup создайте половину 2 --таблицу '0 < половина > linear/dev/md/5 < половина >'
    

    Теперь у вас есть:

     | * * * * * * * * * -------- |/dev/md/5
    | ------- |/dev/mapper/half2
    
  4. Создание временной файловой системы в/dev/mapper/half2

     mkdir/mnt/tmp
    mkfs.ext4/dev/mapper/half2
    монтировать/dev/mapper/half2/mnt/tmp
    
  5. Скопируйте все данные через

     rsync -avXSH/btrfs-mountpoint//mnt/tmp
    

    (используйте свой любимый инструмент копирования. Простой cp тоже будет работать.)

  6. Теперь пришло время избавиться от файловой системы Btrfs

     umount/btrfs-mountpoint
    
  7. Создать другое сопоставление устройств-сопоставителей

     dmsetup создать half1 --таблицу '0 < половина > linear/dev/md/5 0'
    

    Теперь у вас есть:

     | --------- * * * * * * * * * |/dev/md/5
    | ------- |/dev/mapper/half1
    | ******** |/dev/mapper/half2
    

    где * - используемое пространство, а - - пространство, которое использовалось раньше, но мы просто освободили его, переместив во вторую половину, и мы собираемся перезаписать его.

  8. Создайте окончательную конфигурацию в /dev/mapper/half1 . Вы можете создать файловую систему ext4 напрямую, но я рекомендую LVM.

    Direct:

     mkfs -t ext4/dev/mapper/half1
    

    LVM:

     pvcreate/dev/mapper/half1
    vgcreate volume-group-name/dev/mapper/half1
    lvcreate -n logical-volume-name -L < размер > имя группы томов
    mkfs -t ext4/dev/volume-group-name/logical-volume-name
    
  9. Смонтируйте его и скопируйте все данные через

     mount/dev/volume-group-name/logical-volume-name/new-mountpoint
    # или
    mount/dev/mapper/half1/new-mountpoint
    
    rsync -aXSH/mnt/tmp//new-mountpoint
    
  10. Избавиться от всех временных вещей

     umount/mnt/tmp
    dmsetup clear/dev/mapper/half2
    umount/новая точка установки
    
    # При использовании LVM
    lvchange -a n/dev/volume-group-name/logical-volume-name
    vgchange -a n volume-group-name
    
    dmsetup clear/dev/mapper/half1
    

    Если сопоставления устройств не удается очистить, можно либо устранить проблему, либо просто перезагрузиться.

    Вы вернулись к этому:

     | * * * * * * * * * -------- |/dev/md/5
    
  11. Теперь перемонтируйте с помощью полного /dev/md/5 устройства

     # При использовании LVM
    vgscan
    монтирование/dev/volume-group-name/logical-volume-name/new-mountpoint
    
    # в противном случае
    mount/dev/md/5/new-mountpoint
    
  12. Теперь вы можете развернуть вещь в полное устройство:

     # При использовании LVM
    pvresize/dev/md/5
    # Опционально увеличить НН
    
    # в противном случае
    resize2fs/dev/md/5
    

ух!

1
27.01.2020, 23:51

Теги

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