Не нужно ли переместить сжатую файловую систему, прежде чем изменять размер раздела?

У меня есть раздел размером X GB, заполненный файловой системой ext4. Теперь я хочу сжать этот раздел (и файловую систему) только на последнем X / 2 ГБ. Я использую инструменты командной строки и не parted . Итак, я прочитал ( здесь и здесь, например), что мне нужно resize2fs а затем использовать fdisk для сжатия раздела. Однако как насчет перемещения файловой системы на X / 2 GB вперед в разделе? Разве это не необходимый шаг?

Кроме того, если предположить, что это необходимо – следует ли использовать dd для перемещения данных или что-то еще необходимо / лучше?

One Solution collect form web for “Не нужно ли переместить сжатую файловую систему, прежде чем изменять размер раздела?”

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

Конец вашей файловой системы может быть изменен (выращен и сжат) относительно начальной точки, но нет простого способа выйти за пределы первого блока (или уменьшить файловую систему «назад»), поскольку вы вводите смещение между блочным устройством и начало файловой системы на нем. Теоретически это, конечно, возможно, однако текущий набор инструментов и ядро ​​Linux не готовы к этому типу операций.

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

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

Процедура будет выглядеть так:

  1. сделать резервную копию, он никогда не болит
  2. снизьте существующую файловую систему вниз (или под) размер нового раздела
  3. вычислить текущую начальную позицию файловой системы на диске (не в разделе)
  4. передел вашего диска
  5. dd количество данных на диске в нужное место (поскольку вы знаете старую отправную точку, новую начальную точку и длину)
  6. расширьте свою файловую систему (в случае, если на шаге 2 вы сделали ее меньше)

Я хотел бы подчеркнуть, что эта процедура не будет работать, если ваша сжимаемая файловая система (точка 2) и ее новое место (новый раздел в пункте 4) накладывается на диск.

Подумайте об использовании LVM для смягчения этих проблем, подобных этому, и многих других. С LVM вы могли бы просто:

  1. сжать вашу файловую систему
  2. уменьшите свой логический объем (и пусть LVM справится с этим беспорядком)
  • расширение раздела с помощью resize2fs
  • Увеличьте корневой раздел, уменьшив / home
  • Почему я не могу восстановить (почти) все свободное место с помощью resize2fs?
  • Расширьте мою LVM после обновления SSD
  • Невозможно изменить размер файловой системы на многолучевом устройстве
  • Как уменьшить размер раздела ниже минимального размера, указанного в resize2fs?
  • изменить размер корневого тома с ошибкой пространства lvextend
  • Файловая система по-прежнему показывает старое значение после сокращения в Linux, однако показывает правильное значение в LVM
  • Уменьшить время сжатия файловой системы ext4
  • почему resize2fs говорит мне неверную информацию
  • Безопасно ли изменять размер раздела при записи на него?
  • Linux и Unix - лучшая ОС в мире.