Bagaimana saya bisa mengecilkan partisi LUKS, apa yang dilakukan `ukuran cryptsetup` lakukan?

14

Saya sedang dalam proses mengubah ukuran partisi terenkripsi LUKS yang berisi sistem file ext4 tunggal (tidak ada LVM atau sesuatu). The cryptsetup FAQ merekomendasikan untuk menghapus partisi yang lama dan menciptakan itu, tapi itu terdengar seperti membuang-buang waktu banyak. Karena itu saya ingin proceeed secara manual, dengan hati-hati mengubah ukuran partisi.

Sejauh ini, saya pikir saya perlu melakukan:

  1. Buat cadangan (terenkripsi) dari sistem file. Penting! Anda tidak akan menjadi orang pertama yang kehilangan data saat melakukan tugas-tugas berikut.
  2. Lepas sistem file ext4 yang ada (mis. Dengan boot ke Live CD). Jika mem-boot dari Live CD, pasang partisi terenkripsi menggunakancryptsetup luksOpen /dev/sdXY ExistingExt4
  3. Ubah ukuran sistem file ext4 yang ada .
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. Tutup / "unmount" partisi LUKS menggunakan cryptsetup luksClose ExistingExt4
  6. Kecilkan ukuran partisi.

Apakah langkah-langkah di atas benar?

Pada langkah 4, apa yang harus saya pilih $SECTORS? Apakah langkah ini bahkan perlu? The cryptsetuphalaman pengguna tidak benar-benar deskriptif pada resizepilihan:

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

Akhirnya, jika saya mengecilkan partisi ext4 dengan 15 GiB, dapatkah saya berasumsi bahwa 15 GiB dapat dihapus dari menggunakan partisi yang ada parted? Jika ya, bagaimana cara melakukannya? Disk saya dipartisi GPT, jika itu penting.

Lekensteyn
sumber
1
Saya selalu bertanya-tanya tentang opsi ukuran pada cryptsetup juga. Bahkan FAQ cryptsetup mengatakan: "2.15 Dapatkah saya mengubah ukuran partisi dm-crypt atau LUKS? Ya, Anda bisa, karena dm-crypt atau LUKS tidak menyimpan ukuran partisi." Jadi mengapa itu memiliki opsi ukuran jika tidak ada hubungannya dengan ukuran partisi ...
Dago

Jawaban:

15

Setelah mencadangkan (langkah 1) dan melepaskan (antara 2 dan 3), jalankan fsck untuk memastikan bahwa sistem file sehat:

e2fsck -f /dev/mapper/ExistingExt4

Selain itu, langkah-langkahnya OK.

apa yang harus saya pilih untuk $ SEKTOR? Apakah langkah ini bahkan perlu?

Langkah ini diperlukan, jika tidak partisi akan tetap muncul di sisi yang lama. Ini dikonfirmasi dengan Nautilus, bahkan setelah mengubah ukuran dengan resize2fs, partisi LUKS muncul sebagai ukuran lama. Setelah berjalan cryptsetup resize, nomor yang benar ditampilkan. Langkah ini tidak perlu. Ini hanya memengaruhi status ukuran saat ini seperti yang ditunjukkan di browser file. Setelah mengubah ukuran dan menutup / membuka kembali partisi, angkanya dikembalikan. Jadi, ketika menutup partisi LUKS seperti yang ditunjukkan nanti akan membuat ini menjadi usang.

$SECTORSdapat ditentukan dengan melihat output dari cryptsetup status ExistingExt4:

    / dev / mapper / ExistingExt4 aktif.
      ketik: LUKS1
      cipher: aes-cbc-essiv: sha256
      keysize: 256 bit
      perangkat: / dev / sda2
      offset: 2056 sektor
      ukuran:     156049348 sektor
      mode: baca / tulis

Satu sektor selalu 512 byte (disebutkan di cryptsetuphalaman manual). Jadi, untuk mengurangi 15 GiB, gunakan ukuran sektor 156049348 - 15 * 1024 * 1024 * 2 = 124592068:

cryptsetup resize ExistingExt4 -b 124592068

Sedangkan untuk mengubah ukuran partisi, partedberfungsi baik dengan partisi GPT. Namun, resizeperintah ini tidak berfungsi, sebagai solusi (atau solusi), hapus informasi partisi dan buat partisi baru seperti yang terinspirasi oleh http://ubuntuforums.org/showthread.php?p=8721017#post8721017 :

# cryptsetup luksClose ExistingExt4 
# parted / dev / sda2
GNU Parted 2.3
Menggunakan / dev / sda
Selamat datang di GNU Parted! Ketik 'bantuan' untuk melihat daftar perintah.
(berpisah) unit s 
(berpisah) hlm
Model: ATA INTEL SSDSA2CW08 (scsi)
Disk / dev / sda: 156301488s
Ukuran sektor (logis / fisik): 512B / 512B
Tabel Partisi: gpt

Nomor Mulai Akhir Ukuran File sistem Nama Bendera
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s 156301438s 156051404s Semuanya

Karena 15 GiB harus dicukur, akhir yang baru menjadi 156301438 - 15 * 1024 * 1024 * 2 = 124844158. Karena saya ingin mengubah partisi 2, pertama-tama saya harus menghapusnya dan kemudian membuatnya kembali dengan label "Semuanya" (ini bisa diubah jika Anda mau). Catatan : disk ini memiliki tata letak GPT. Untuk MBR, Anda harus mengganti Everythingdengan primaryatau extended(belum diuji, mengubah ukuran partisi pada MBR belum diuji dan tidak disarankan karena belum teruji).

PERINGATAN : perintah berikut ini telah merusak data . Jangan menyalinnya tanpa memahami apa yang terjadi. Dimensi sektor harus diubah, jika tidak, Anda AKAN menghancurkan partisi Anda. Saya sama sekali tidak bertanggung jawab atas kebodohan Anda, BACKUP BACKUP BACKUP data Anda ke media penyimpanan kedua sebelum mempertaruhkan data Anda.

(berpisah) rm 2 
(berpisah) mkpart Semuanya 250035s 124844158s
Peringatan: Partisi yang dihasilkan tidak selaras dengan benar untuk kinerja terbaik.
Abaikan / Batalkan? abaikan 
(berpisah) hal
Model: ATA INTEL SSDSA2CW08 (scsi)
Disk / dev / sda: 156301488s
Ukuran sektor (logis / fisik): 512B / 512B
Tabel Partisi: gpt

Nomor Mulai Akhir Ukuran File sistem Nama Bendera
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s   124844158s 124594124s                Semuanya
(berpisah) berhenti

Dalam partedcontoh di atas , sektor saya tidak selaras yang merupakan kesalahan dari instalasi sebelumnya, jangan terlalu memperhatikannya.

Hanya itu saja! Anda dapat menggunakan cryptsetup statusdan file -Ls /dev/...memverifikasi bahwa semuanya OK dan kemudian reboot.

Lekensteyn
sumber
1
Saya sangat menyarankan untuk tidak menggunakan solusi ini tanpa cadangan penuh, karena sangat mungkin salah. Tetapi jika Anda memiliki cadangan lengkap, membuat partisi baru jauh lebih mudah.
Biar saya tebak, manusia melakukan ini? Lagi pula saya sekarang jelas menekankan bahwa cadangan harus dilakukan sebelum bermain dengan ini. Saya pikir sudah jelas bahwa cadangan harus dilakukan sebelum melakukan ini secara manual ... bahkan kemudian bagaimana mungkin seseorang mengacaukannya dengan petunjuk dan cara memverifikasi yang jelas?
Lekensteyn
Apakah Anda juga memiliki sumber kegagalan yang Anda sebutkan? Setiap orang dapat membuat klaim bahwa informasi yang diberikan salah, tetapi saya ingin memverifikasinya. Mungkin bermanfaat bagi pengguna lain di masa depan ...
Lekensteyn
Arno membicarakan pos ini di milis: saout.de/pipermail/dm-crypt/2013-September/003521.html
Philipp Wendler
Alih-alih rm 2dan mkpart [part-type] [start] [end], Anda juga dapat menggunakan resizepart 2 [end]untuk mengubah ukuran partisi tanpa mengubah nama atau memulai offset.
Rob W
3

Perhatikan bahwa KDE Partition Manager 2.2.0 dapat melakukan langkah-langkah tersebut dan mengubah ukuran partisi LUKS berfungsi dengan baik.

Andrius Štikonas
sumber