ฉันจะลดขนาดพาร์ติชัน LUKS ได้อย่างไรการปรับขนาด cryptsetup จะทำอย่างไร


14

ฉันกำลังดำเนินการปรับขนาดพาร์ติชันที่เข้ารหัสของ LUKS ที่มีระบบไฟล์ ext4 เดียว (ไม่มี LVM หรือบางอย่าง) คำถามที่พบบ่อย cryptsetupแนะนำในการลบพาร์ทิชันเก่าและสร้างมัน แต่ที่เสียงเหมือนเสียเวลามาก ดังนั้นฉันต้องการ proceeed ด้วยตนเองปรับขนาดพาร์ติชันอย่างระมัดระวัง

จนถึงตอนนี้ฉันคิดว่าฉันต้องทำ:

  1. สร้างการสำรองข้อมูล (เข้ารหัส) ของระบบไฟล์ สำคัญ! คุณจะไม่เป็นคนแรกที่สูญเสียข้อมูลของคุณในขณะที่ทำงานต่อไปนี้
  2. ถอนติดตั้งระบบไฟล์ ext4 ที่มีอยู่ (เช่นโดยการบูตเข้าสู่ Live CD) หากการบูตจาก Live CD ให้กำหนดพาร์ติชันที่เข้ารหัสโดยใช้cryptsetup luksOpen /dev/sdXY ExistingExt4
  3. ปรับขนาดระบบแฟ้ม ext4 ที่มีอยู่
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. ปิด / "unmount" พาร์ติชัน 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 เก็บขนาดพาร์ติชัน" เหตุใดจึงไม่ได้มีตัวเลือกในการปรับขนาดถ้ามันมีอะไรจะทำอย่างไรกับขนาดพาร์ติชัน ...
Dago

คำตอบ:


15

หลังจากสำรองข้อมูล (ขั้นตอนที่ 1) และยกเลิกการต่อเชื่อม (ระหว่าง 2 และ 3) ให้รันfsckเพื่อให้แน่ใจว่าระบบไฟล์มีความสมบูรณ์:

e2fsck -f /dev/mapper/ExistingExt4

นอกเหนือจากนั้นขั้นตอนก็โอเค

ฉันควรเลือกอะไรสำหรับ $ SECTORS ขั้นตอนนี้จำเป็นหรือไม่

ขั้นตอนนี้เป็นสิ่งจำเป็นมิฉะนั้นพาร์ติชันจะยังคงปรากฏที่ด้านเก่า สิ่งนี้ได้รับการยืนยันด้วย Nautilus แม้หลังจากปรับขนาดด้วยresize2fsพาร์ติชัน LUKS ก็ปรากฏเป็นขนาดเก่า หลังจากทำงานcryptsetup resizeตัวเลขที่ถูกต้องจะปรากฏขึ้น ขั้นตอนนี้ไม่จำเป็น มันจะมีผลต่อสถานะขนาดปัจจุบันตามที่แสดงในเบราว์เซอร์ไฟล์ หลังจากเปลี่ยนขนาดและปิด / เปิดพาร์ติชันอีกครั้งหมายเลขจะถูกกู้คืน ดังนั้นเมื่อปิดพาร์ติชัน LUKS ดังที่แสดงในภายหลังจะทำให้สิ่งนี้ล้าสมัย

$SECTORSสามารถกำหนดได้โดยดูที่ผลลัพธ์ของcryptsetup status ExistingExt4:

    / dev / mapper / ExistingExt4 เปิดใช้งานอยู่
      ประเภท: LUKS1
      cipher: aes-cbc-essiv: sha256
      ขนาด: 256 บิต
      อุปกรณ์: / dev / sda2
      ชดเชย: 2056 ภาค
      ขนาด:     156049348ภาค
      โหมด: อ่าน / เขียน

เซ็กเตอร์หนึ่งเซ็กเตอร์จะมีขนาด 512 ไบต์ (กล่าวถึงในcryptsetupหน้าคู่มือ) ดังนั้นหากต้องการลบ 15 GiB ให้ใช้ขนาดเซกเตอร์ของ156049348 - 15 * 1024 * 1024 * 2 = 124592068:

cryptsetup resize ExistingExt4 -b 124592068

สำหรับการปรับขนาดพาร์ติชันpartedทำงานได้ดีกับพาร์ติชัน GPT resizeคำสั่งไม่ทำงาน แต่เป็นวิธีแก้ปัญหา (หรือวิธีการแก้ปัญหา) ลบข้อมูลพาร์ทิชันและสร้างพาร์ทิชันใหม่เป็นแรงบันดาลใจจากhttp://ubuntuforums.org/showthread.php?p=8721017#post8721017 :

# cryptsetup luksClose ExistingExt4 
# แยก / dev / sda2
GNU แยก 2.3
ใช้ / dev / sda
ยินดีต้อนรับสู่ GNU Parted! พิมพ์ 'ความช่วยเหลือ' เพื่อดูรายการคำสั่ง
(แยก) หน่วย s 
(แยก) หน้า
รุ่น: 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 156301438 - 15 * 1024 * 1024 * 2 = 124844158จะต้องมีการโกนปลายใหม่กลายเป็น เนื่องจากฉันต้องการเปลี่ยนพาร์ติชัน 2 ฉันต้องลบมันก่อนแล้วสร้างมันใหม่ด้วยป้ายกำกับ "ทุกอย่าง" (อาจเปลี่ยนได้ถ้าคุณต้องการ) หมายเหตุ : ดิสก์นี้มีเลย์เอาต์ GPT สำหรับ MBR คุณควรแทนที่Everythingด้วยprimaryหรือextended(ยังไม่ได้ทดสอบการปรับขนาดพาร์ติชันบน MBR ยังไม่ได้รับการทดสอบและไม่แนะนำเนื่องจากไม่ได้ทำการทดสอบ)

คำเตือน : คำสั่งต่อไปได้destructed ข้อมูล อย่าคัดลอกโดยไม่เข้าใจว่าเกิดอะไรขึ้น ต้องเปลี่ยนขนาดของส่วนข้อมูลมิฉะนั้นคุณจะทำลายพาร์ติชันของคุณ ผมในทางที่ไม่รับผิดชอบในการ stupidness ของคุณสำรองข้อมูลสำรองข้อมูลของคุณไปที่สองสื่อเก็บข้อมูลก่อนที่จะเสี่ยงกับข้อมูลของคุณ

(แยก) 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

คุณมีแหล่งที่มาสำหรับความล้มเหลวที่คุณกล่าวถึงหรือไม่? ทุกคนสามารถอ้างสิทธิ์ได้ว่าข้อมูลที่ให้นั้นไม่ถูกต้อง แต่ฉันต้องการยืนยัน มันอาจเป็นประโยชน์สำหรับผู้ใช้รายอื่นในอนาคต ...
Lekensteyn

Arno กำลังพูดถึงโพสต์นี้ในรายชื่อผู้รับจดหมาย: saout.de/pipermail/dm-crypt/2013-September/003521.html
Philipp Wendler

แทนrm 2และmkpart [part-type] [start] [end]หนึ่งสามารถใช้resizepart 2 [end]เพื่อปรับขนาดพาร์ติชันโดยไม่ต้องเปลี่ยนชื่อหรือเริ่มชดเชย
Rob W

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.