Як я можу скоротити розділ LUKS, що робить `cryptsetup '?


14

У мене зараз змінюється розмір зашифрованого розділу LUKS, який містить одну файлову систему ext4 (немає LVM чи чогось іншого). Cryptsetup FAQ рекомендує видалити старий розділ і створити його заново, але це звучить як витрачати багато часу. Тому я хочу перейти вручну, обережно змінивши розмір розділу.

Поки я думаю, що мені потрібно зробити:

  1. Створіть (зашифровану) резервну копію файлової системи. Важливо! Ви не будете першими, хто втратить свої дані, виконуючи такі завдання.
  2. Демонтуйте існуючу файлову систему ext4 (наприклад, завантажившись на живий компакт-диск). Якщо завантажуєтесь з живого компакт-диска, змонтуйте зашифрований розділ за допомогоюcryptsetup luksOpen /dev/sdXY ExistingExt4
  3. Змініть розмір існуючої файлової системи ext4 .
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. Закрийте / "відключіть" розділ LUKS, використовуючи cryptsetup luksClose ExistingExt4
  6. Зменшіть розмір перегородки.

Чи правильно вказані вище дії?

На кроці 4, що мені вибрати $SECTORS? Чи необхідний цей крок? Сторінка cryptsetupкерівництва насправді не описує resizeпараметр:

resize <name>
    resizes an active mapping <name>.
    If --size (in sectors) is not specified, the size of the underlying
    block device is used.

Нарешті, якщо я скорочу розділ ext4 на 15 GiB, чи можна сміливо припускати, що 15 GiB можна видалити з існуючого розділу за допомогою parted? Якщо так, то як це зробити? Мій диск розділений GPT, якщо це має значення.


1
Я завжди цікавився варіантом зміни розміру і в cryptsetup. Навіть поширені запитання про cryptsetup говорять: "2.15 Чи можна змінити розмір dm-crypt або LUKS-розділу? Так, ви можете, як ні dm-crypt, ні LUKS не зберігають розмір розділу." То чому він має параметр зміни розміру, якщо він не має нічого спільного з розміром розділу ...
Даго

Відповіді:


15

Після резервного копіювання (крок 1) та відключення (між 2 і 3) запустіть, fsckщоб переконатися, що файлова система є здоровою:

e2fsck -f /dev/mapper/ExistingExt4

Крім цього, кроки в порядку.

що мені вибрати для $ СЕКТОРІВ? Чи необхідний цей крок?

Цей крок необхідний, інакше розділ все ще з’явиться на старій стороні. Це підтверджено з Nautilus, навіть після зміни розміру resize2fsрозділ LUKS виявився як старий розмір. Після запуску cryptsetup resizeвідображається правильне число. Цей крок не є необхідним. Це впливає лише на поточний стан розміру, як показано у файловому браузері. Після зміни розміру та повторного закриття / відкриття перегородки номер відновлюється. Таким чином, закриття розділу LUKS, як показано далі, зробить це застарілим.

$SECTORSможна визначити, дивлячись на вихід cryptsetup status ExistingExt4:

    / dev / mapper / ExistingExt4 активний.
      тип: LUKS1
      шифр: aes-cbc-essiv: sha256
      Розмір клавіш: 256 біт
      пристрій: / dev / sda2
      зміщення: 2056 секторів
      розмір:     156049348 сектори
      режим: читання / запис

В одному секторі завжди є 512 байт (згадується на cryptsetupсторінці керівництва). Таким чином, щоб відняти 15 Гб, використовуйте розмір сектора 156049348 - 15 * 1024 * 1024 * 2 = 124592068:

cryptsetup resize ExistingExt4 -b 124592068

Що стосується зміни розміру розділу, він partedдобре працює з розділами GPT. Однак resizeкоманда не працює, як усунення (або рішення), видаліть інформацію про розділи та створіть новий розділ, натхненний http://ubuntuforums.org/showthread.php?p=8721017#post8721017 :

# cryptsetup luksЗакрити існуючийExt4 
# parted / dev / sda2
ГНУ розлучився 2.3
Використання / dev / sda
Ласкаво просимо до GNU Parted! Введіть "help", щоб переглянути список команд.
(розлучена) одиниця s 
(розлучена) p
Модель: ATA INTEL SSDSA2CW08 (scsi)
Диск / dev / sda: 156301488s
Розмір сектора (логічний / фізичний): 512B / 512B
Таблиця розділів: gpt

Число Початковий Кінець Розмір Файлова назва файлової системи
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s 156301438s 156051404s Усе

Оскільки 15 GiB доводиться голити, стає новим кінцем 156301438 - 15 * 1024 * 1024 * 2 = 124844158. Оскільки я хочу змінити розділ 2, спершу потрібно його видалити, а потім відтворити з міткою "Все" (це можна змінити, якщо вам подобається). Примітка . Цей диск має макет GPT. Для MBR, ви повинні замінити Everythingна primaryабо extended(неперевірені, зміна розміру розділу на MBR ще НЕ був перевірений і НЕ рекомендується , оскільки це НЕ тестувалося).

ПОПЕРЕДЖЕННЯ . Наступні команди знищили дані . Не копіюйте його, не розуміючи, що відбувається. Розміри секторів повинні бути змінені, в іншому випадку ви БУДЕТЕ знищити розділ (и). Я жодним чином НЕ несе відповідальності за stupidness, BACKUP BACKUP BACKUP даних на другий носій даних , перш ніж ризикувати дані.

(розлучений) rm 2 
(розлучений) mkpart Усе 250035s 124844158s
Попередження: Отриманий розділ неправильно вирівняний для найкращої роботи.
Ігнорувати / Скасувати? ігнорувати 
(розлучитися) с
Модель: ATA INTEL SSDSA2CW08 (scsi)
Диск / dev / sda: 156301488s
Розмір сектора (логічний / фізичний): 512B / 512B
Таблиця розділів: gpt

Число Початковий Кінець Розмір Файлова назва файлової системи
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s   124844158s 124594124s                Усе
(розлучився) кинути

У наведеному вище partedприкладі мої сектори не вирівняні, що є помилкою попередньої установки, не звертайте на це занадто великої уваги.

Це все! Ви можете використовувати cryptsetup statusта file -Ls /dev/...перевірити, що все в порядку, а потім перезавантажити.


1
Я настійно раджу не використовувати це рішення без повної резервної копії, оскільки велика ймовірність піти не так. Але якщо у вас є повна резервна копія, створити новий розділ набагато простіше.

Дозвольте здогадатися, людина зробив це? У будь-якому разі я чітко підкреслив, що резервне копіювання потрібно проводити перед тим, як грати з цим. Я подумав, що очевидно, що резервне копіювання потрібно зробити перед тим, як робити це вручну ... навіть тоді, як хтось може це зіпсувати, даючи чіткі вказівки та способи перевірити?
Лекенштейн

Чи є у вас також джерело згаданої промови? Кожен може заявити, що надана інформація невірна, але я хотів би її перевірити. Це може бути корисним для інших користувачів у майбутньому ...
Lekensteyn

Арно говорив про цю публікацію у списку розсилки: saout.de/pipermail/dm-crypt/2013-September/003521.html
Philipp Wendler

Замість rm 2і mkpart [part-type] [start] [end], також можна використовувати resizepart 2 [end]для зміни розміру розділу, не змінюючи ім'я або починаючи зміщення.
Роб Ш

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.