Làm cách nào tôi có thể thu nhỏ phân vùng LUKS, `cryptsetup thay đổi kích thước 'làm gì?


14

Tôi đang tiến hành thay đổi kích thước phân vùng được mã hóa LUKS có chứa một hệ thống tệp ext4 duy nhất (không có LVM hoặc một cái gì đó). Các hỏi thường gặp về cryptsetup khuyên bạn nên xóa phân vùng cũ và tạo lại nó, nhưng điều đó nghe có vẻ lãng phí rất nhiều thời gian. Vì vậy, tôi muốn tiến hành bằng cách thủ công, thay đổi kích thước phân vùng một cách cẩn thận.

Cho đến nay, tôi nghĩ rằng tôi cần phải làm:

  1. Tạo một bản sao lưu (được mã hóa) của hệ thống tập tin. Quan trọng! Bạn sẽ không phải là người đầu tiên mất dữ liệu trong khi thực hiện các tác vụ sau.
  2. Ngắt kết nối hệ thống tập tin ext4 hiện có (ví dụ: bằng cách khởi động vào Live CD). Nếu khởi động từ đĩa CD Live, hãy gắn phân vùng được mã hóa bằng cách sử dụngcryptsetup luksOpen /dev/sdXY ExistingExt4
  3. Thay đổi kích thước hệ thống tập tin ext4 hiện có .
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. Đóng / "ngắt kết nối" phân vùng LUKS bằng cách sử dụng cryptsetup luksClose ExistingExt4
  6. Thu nhỏ kích thước phân vùng.

Các bước trên có đúng không?

Ở bước 4, tôi nên chọn $SECTORScái gì? Là bước này thậm chí cần thiết? Các cryptsetuptrang hướng dẫn là không thực sự mô tả trên resizetùy chọn:

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

Cuối cùng, nếu tôi thu nhỏ phân vùng ext4 bằng 15 GiB, tôi có thể giả định rằng 15 GiB có thể được gỡ bỏ khỏi phân vùng hiện có bằng cách sử dụng partedkhông? Nếu có, làm thế nào để làm như vậy? Đĩa của tôi là phân vùng GPT, nếu đó là vấn đề.


1
Tôi đã luôn tự hỏi về tùy chọn thay đổi kích thước trên cryptsetup. Ngay cả FAQ của cryptsetup cũng nói: "2.15 Tôi có thể thay đổi kích thước phân vùng dm-crypt hoặc LUKS không? Có, bạn có thể, vì cả dm-crypt và LUKS đều không lưu trữ kích thước phân vùng." Vậy tại sao nó có tùy chọn thay đổi kích thước nếu nó không liên quan gì đến kích thước phân vùng ...
Dago

Câu trả lời:


15

Sau khi sao lưu (bước 1) và ngắt kết nối (giữa 2 và 3), hãy chạy fsckđể đảm bảo hệ thống tập tin khỏe mạnh:

e2fsck -f /dev/mapper/ExistingExt4

Ngoài ra, các bước là OK.

Tôi nên chọn gì cho $ SECTORS? Là bước này thậm chí cần thiết?

Bước này là cần thiết, nếu không phân vùng vẫn sẽ hiển thị ở phía cũ. Điều này được xác nhận với Nautilus, ngay cả sau khi thay đổi kích thước resize2fs, phân vùng LUKS hiển thị như kích thước cũ. Sau khi chạycryptsetup resize , số chính xác được hiển thị. Bước này là không cần thiết. Nó chỉ ảnh hưởng đến trạng thái kích thước hiện tại như được hiển thị trong trình duyệt tệp. Sau khi thay đổi kích thước và đóng / mở lại phân vùng, số được khôi phục. Vì vậy, khi đóng phân vùng LUKS như hiển thị sau sẽ làm cho lỗi thời này.

$SECTORScó thể được xác định bằng cách nhìn vào đầu ra của cryptsetup status ExistingExt4:

    / dev / mapper / Ex HiệnExt4 đang hoạt động.
      loại: LUKS1
      mật mã: aes-cbc-essiv: sha256
      keyize: 256 bit
      thiết bị: / dev / sda2
      bù: 2056 ngành
      kích thước:     156049348 ngành
      chế độ: đọc / ghi

Một sector luôn là 512 byte (được đề cập trong cryptsetuptrang thủ công). Do đó, để trừ 15 GiB, hãy sử dụng kích thước cung của 156049348 - 15 * 1024 * 1024 * 2 = 124592068:

cryptsetup resize ExistingExt4 -b 124592068

Đối với thay đổi kích thước phân vùng, partedhoạt động tốt với phân vùng GPT. Các resizelệnh không hoạt động tuy nhiên, như một cách giải quyết (hoặc dung dịch), loại bỏ các thông tin phân vùng và tạo một phân vùng mới như lấy cảm hứng từ http://ubuntuforums.org/showthread.php?p=8721017#post8721017 :

# cryptsetup luksĐóng ExExExt4 
# parted / dev / sda2
GNU chia tay 2.3
Sử dụng / dev / sda
Chào mừng bạn đến với GNU Parted! Nhập 'trợ giúp' để xem danh sách các lệnh.
(chia tay) đơn vị s 
(chia tay) p
Model: ATA INTEL SSDSA2CW08 (scsi)
Đĩa / dev / sda: 156301488s
Quy mô ngành (logic / vật lý): 512B / 512B
Bảng phân vùng: gpt

Số Bắt đầu Kích thước Kết thúc Hệ thống tệp Tên cờ
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s 156301438s 156051404s Mọi thứ

Khi 15 GiB phải được cạo sạch, kết thúc mới trở thành 156301438 - 15 * 1024 * 1024 * 2 = 124844158. Vì tôi muốn thay đổi phân vùng 2, trước tiên tôi phải xóa nó và sau đó tạo lại nó với nhãn "Mọi thứ" (điều này có thể được thay đổi nếu bạn muốn). Lưu ý : đĩa này có bố cục GPT. Đối với MBR, bạn nên thay thế Everythingbằng primaryhoặc extended(chưa được kiểm tra, thay đổi kích thước phân vùng trên MBR chưa được kiểm tra và không được khuyến nghị vì chưa được kiểm tra).

CẢNH BÁO : các lệnh sau đã hủy dữ liệu . Đừng sao chép nó mà không hiểu chuyện gì đang xảy ra. Kích thước của khu vực phải được thay đổi, nếu không, bạn sẽ phá hủy (các) phân vùng của bạn. Tôi không chịu trách nhiệm cho sự ngu ngốc của bạn, BACKUP BACKUP BACKUP dữ liệu của bạn sang phương tiện lưu trữ thứ hai trước khi mạo hiểm dữ liệu của bạn.

(chia tay) rm 2 
(chia tay) mkpart Mọi thứ 250035s 124844158s
Cảnh báo: Phân vùng kết quả không được căn chỉnh chính xác để có hiệu suất tốt nhất.
Bỏ qua / Hủy bỏ? bỏ qua 
(chia tay) p
Model: ATA INTEL SSDSA2CW08 (scsi)
Đĩa / dev / sda: 156301488s
Quy mô ngành (logic / vật lý): 512B / 512B
Bảng phân vùng: gpt

Số Bắt đầu Kích thước Kết thúc Hệ thống tệp Tên cờ
 1 34s 2082s 2049s Boot bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s   124844158s 124594124s                Mọi thứ
(chia tay) bỏ

Trong partedví dụ trên , các lĩnh vực của tôi không được căn chỉnh, đó là một lỗi từ cài đặt trước đó, đừng quá chú ý đến nó.

Thế là xong! Bạn có thể sử dụng cryptsetup statusfile -Ls /dev/...để xác minh rằng mọi thứ đều ổn và sau đó khởi động lại.


1
Tôi thực sự khuyên bạn không nên sử dụng giải pháp này mà không sao lưu toàn bộ, vì nó rất có thể bị lỗi. Nhưng nếu bạn có một bản sao lưu đầy đủ, việc tạo một phân vùng mới sẽ dễ dàng hơn rất nhiều.

Hãy để tôi đoán, một con người đã làm điều này? Dù sao, bây giờ tôi đã nhấn mạnh rõ ràng rằng một bản sao lưu nên được thực hiện trước khi chơi với điều này. Tôi nghĩ rằng rõ ràng là một bản sao lưu phải được thực hiện trước khi thực hiện việc này một cách thủ công ... thậm chí sau đó làm thế nào một ai đó có thể làm hỏng điều này bằng cách đưa ra các hướng dẫn rõ ràng và cách để xác minh?
Lekensteyn

Bạn cũng có một nguồn cho sự thất bại mà bạn đề cập? Mọi người có thể đưa ra tuyên bố rằng thông tin được cung cấp là không chính xác, nhưng tôi muốn xác minh nó. Nó có thể hữu ích cho những người dùng khác trong tương lai ...
Lekensteyn

Arno đã nói về bài đăng này trong danh sách gửi thư: saout.de/pipermail/dm-crypt/2013-September/003521.html
Philipp Wendler

Thay vì rm 2mkpart [part-type] [start] [end], người ta cũng có thể sử dụng resizepart 2 [end]để thay đổi kích thước phân vùng mà không thay đổi tên hoặc bắt đầu bù.
Rob W

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.