วิธีโอนย้ายการติดตั้ง LVM ที่เข้ารหัสไปยังดิสก์ใหม่


15

ฉันมีการติดตั้งแล็ปท็อปที่กำหนดเองบ้างฉันต้องการย้ายไปยัง SSD โดยตรงโดยไม่ต้องติดตั้ง Ubuntu ใหม่ติดตั้งแอปทั้งหมดอีกครั้งและทำการเปลี่ยนแปลงอื่น ๆ ทั้งหมดอีกครั้ง SSD นั้นเล็กกว่าดังนั้นฉันทำไม่ddได้

การติดตั้งดั้งเดิมนั้นทำโดยตัวติดตั้งสำรองของ Ubuntu เลือกการเข้ารหัสดิสก์เต็มรูปแบบด้วยตัวเลือก LVM

ขั้นตอนใดบ้างที่จำเป็นและฉันต้องทำอย่างไร ฉันคาดว่าจะต้อง:

  • ตั้งค่าพาร์ติชันดิสก์การเข้ารหัส ฯลฯ
  • คัดลอกข้อมูลข้าม
  • ติดตั้งด้วงและทำงานกับค่า UUID ใหม่เป็นต้น

คำตอบ:


14

การแบ่งพาร์ติชันและการคัดลอกไฟล์ - ขณะกำลังทำงาน

ฉันทำสิ่งนี้โดยเริ่มจากระบบที่ทำงานอยู่ ฉันเสียบ SSD ใหม่เข้ากับอะแดปเตอร์ USB SATA แล้วแบ่งพาร์ติชันตั้งค่า LVM และคัดลอกไฟล์ข้าม

# confirm disk size is as expected for sdc
sudo fdisk -l /dev/sdc
# now partition - 500 MB partition as boot, the rest as a single (logical) partition
sudo cfdisk /dev/sdc

ตอนนี้ดิสก์ของคุณควรมีลักษณะดังนี้:

sudo fdisk -l /dev/sdc
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63      979964      489951   83  Linux
/dev/sda2          979965   234441647   116730841+   5  Extended
/dev/sda5          980028   234441647   116730810   82  Linux swap / Solaris

ขั้นตอนต่อไปคือการเข้ารหัสลับบนพาร์ติชันและ LVM ที่ด้านบนของการเข้ารหัส

sudo cryptsetup -y luksFormat /dev/sdc5
sudo cryptsetup luksOpen /dev/sdc5 crypt
sudo vgcreate crypt-lvm /dev/mapper/crypt
sudo lvcreate -L4G -nswap crypt-lvm
sudo lvcreate -l100%FREE -nroot crypt-lvm

ตอนนี้ทำระบบไฟล์และติดตั้งและคัดลอกระบบของคุณ

sudo mkfs.ext2 /dev/sdc1
# you do ls /dev/mapper to check the name if different
sudo mkfs.ext4 /dev/mapper/crypt-root
sudo mkdir /mnt/boot
sudo mkdir /mnt/root
sudo mount -t ext2 /dev/sdc1 /mnt/boot
sudo mount -t ext4 /dev/mapper/crypt-root /mnt/root

# rsync files
sudo rsync -a /boot/* /mnt/boot/
sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /* /mnt/root/

จนถึงจุดนี้คุณสามารถให้ระบบทำงานและใช้งานได้ ตอนนี้คุณต้องปิดเครื่องและบู๊ตเป็น CD / USB สดเพื่อที่คุณจะได้ระบบอยู่ในสถานะปิดระบบ

การแบ่งพาร์ติชั่นและการคัดลอกไฟล์ - CD / USB สด

เมื่อคุณบู๊ตแล้วให้เปิดเทอร์มินัลและ:

sudo apt-get install lvm2

# mount old hard drive
sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
sudo mkdir /mnt/sdaroot
# you can do ls /dev/mapper to check the name if it is different
sudo mount -t ext4 /dev/mapper/sda5_crypt--root /mnt/sdaroot

# mount new hard drive (over USB)
sudo cryptsetup luksOpen /dev/sdc5 sdc5_crypt
sudo mkdir /mnt/sdcroot
sudo mount -t ext4 /dev/mapper/sdc5_crypt--root /mnt/sdcroot

# final rsync
sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /mnt/sdaroot/* /mnt/sdcroot/

chroot

# prepare chroot
cd /mnt/sdcroot
sudo mkdir boot

# these directories are set up by the system and we need them inside the chroot
sudo mount -t proc proc /mnt/sdcroot/proc
sudo mount -t sysfs sys /mnt/sdcroot/sys
sudo mount -o bind /dev /mnt/sdcroot/dev

# now enter the chroot
sudo chroot /mnt/root/

การเปลี่ยน UUID

ตอนนี้เราเป็นรูทภายใน chroot และรันคำสั่งต่อไปนี้:

# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid

ตอนนี้คุณจะเห็นUUIDทั้งหมดสำหรับดิสก์ต่างๆในระบบ คุณจะต้องแก้ไข UUID ใน/etc/fstabและ/etc/crypttabเพื่อให้ตรงกับค่าสำหรับ/dev/sdc?

ใน /etc/fstabคุณจำเป็นต้องใช้ UUID สำหรับดิสก์ - /dev/sdc1ถ้าดิสก์ของคุณมีตัวอักษรเดียวกับผม

ใน /etc/crypttabคุณต้องใช้ UUID สำหรับพาร์ติชันอื่น (ใหญ่) - /dev/sdc5ถ้าดิสก์ของคุณมีตัวอักษรเดียวกับฉัน

initramfs และด้วง

# now update initramfs for all installed kernels
update-initramfs -u -k all

# install grub and ensure it is up to date
grub-install /dev/sdc      # NOTE sdc NOT sdc1
update-grub

# hit Ctrl-D to exit chroot
sudo umount /mnt/root

ตอนนี้ปิดเครื่องใส่ SSD ในแล็ปท็อปของคุณข้ามนิ้วของคุณและบูตขึ้น

ลิงค์ที่มีประโยชน์

คำแนะนำที่ดีสำหรับสิ่ง cryptsetup ที่http://www.debian-administr.org/articles/577

สำหรับการติดตั้งด้วงบนพาร์ติชันภายนอก: /programming/247030/how-to-set-up-gr-grub-in-a-cloned-hard-disk

https://help.ubuntu.com/community/UsingUUID


เพิ่งค้นพบ rsync แยกของ sys ยกเว้นบางไดเรกทอรีที่ฉันต้องการรวม ฉันจะได้คำสั่ง rsync ที่ฉลาดขึ้นและอัพเดตคำตอบนี้
Hamish Downer

เพียงเตือนความจำ: คุณสัญญาว่าจะอัปเดตสำหรับคำตอบที่ยอดเยี่ยมนี้ :-)
guntbert

ในส่วน chroot ก่อนการติดตั้งฉันต้องสร้างจุดเชื่อมต่อ: sudo mount -t proc proc /mnt/sdcroot/proc sudo mount -t sysfs sys /mnt/sdcroot/sys sudo mount -o bind /dev /mnt/sdcroot/devก่อนทำ: sudo mkdir /mnt/sdcroot/proc sudo mkdir /mnt/sdcroot/sys--- ในกรณีของฉันคำสั่งเพื่อสร้าง initramfs ไม่ทำงานเพราะรุ่นเคอร์เนลไม่ตรงกันและ initramfs ไม่สามารถทำได้ ค้นหาเคอร์เนลที่เหมาะสมใน / boot ดังนั้นฉันจึงไม่สามารถทำงานทั้งหมดได้
Blindfreddy

ฉันได้ทำตามคำแนะนำ "ในขณะที่ทำงาน" ของคุณทำการปรับเปลี่ยนเล็กน้อย (ext4) และจนถึงตอนนี้มันก็ใช้งานได้อย่างยอดเยี่ยม ฉันเปลี่ยนเป็น fstab UUID สำหรับการบู๊ตเป็นพาร์ติชั่นใหม่ฉันเปลี่ยน mountpoints สำหรับ root และ swap มีอะไรนอกเหนือจาก fstab ที่จำเป็นต้องเปลี่ยนหรือไม่? ฉันจะลองบูทตอนนี้: D
Luka

เมื่อคุณทำ luksOpen ตรวจสอบให้แน่ใจว่าได้กำหนดป้ายกำกับเดียวกับที่ใช้ใน crypttab มิฉะนั้นการตั้งค่าด้วงจะไม่ทำงานอย่างถูกต้อง เอาฉันตลอดไปคิดออก คำตอบอื่นที่กล่าวถึงการรวม / เรียกใช้ / lvm ไม่ทราบว่าจำเป็นหรือไม่ สำหรับการดีบั๊กคุณสามารถประหยัดเวลาได้ด้วยการฝึกฝนบนดิสก์ USB และพยายามบูตด้วย kvm
Dan Stahlke

3

ฉันพยายามที่จะแสดงความคิดเห็น แต่ฉันขาดชื่อเสียง :-)

อย่างไรก็ตามฉันใช้คำแนะนำที่น่าทึ่งโดย Hamish เพื่อย้ายไปยัง ssd บนแล็ปท็อปที่ทำงานด้วยการเข้ารหัส luks ที่ใช้ linux ของฉัน หมายเหตุเพียงไม่กี่:
1. หลังจากสร้าง lv แลกเปลี่ยนยังใช้

# mkswap /dev/mapper/crypt-swap 

เพื่อเริ่มต้นการแลกเปลี่ยนมิฉะนั้นจะล้มเหลวในระหว่างการบูตตามที่ระบุไว้ในความคิดเห็นข้างต้น
2. rsyncคำสั่งนั้นเข้มงวดเกินไป เมื่อฉันใช้มัน--exclude runฉันวิ่งเข้าไปในโรงพยาบาลสัตว์ประหลาดทุกประเภทโดยทั่วไปมองไม่เห็นด้วยข้อผิดพลาดทางอินเทอร์เน็ต วิ่งจะต้องมีการรวม sys ว่างเปล่าอยู่แล้วเมื่อบูตเข้าสู่โหมดบำรุงรักษาเพื่อให้สามารถอยู่ได้ นอกจากนี้หากคุณไม่รวม tmp แล้วสิ่งที่สร้างขึ้นใหม่บนเป้าหมาย / tmp และ / var / tmp จะไม่เหนียวเหนอะหนะเลย - อย่าลืมตั้งค่าด้วยตัวเอง ฉันลงเอยด้วยการใช้สิ่งที่ชอบ

# rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude boot /mnt/sdaroot/* /mnt/sdcroot/

โดยรวม - คำแนะนำที่ดีแสดงภาพรวมของกระบวนการอย่างถูกต้อง! สอนวิธีตกปลาเพื่อพูด!


0

[ไม่สามารถใส่ความคิดเห็นได้แม้ว่าโพสต์นี้จะอยู่ในความคิดเห็นแทนที่จะตอบ]

การใช้วิธีนี้คุณสามารถย้ายการติดตั้ง lvm ที่ไม่เข้ารหัส ** ไปยังการติดตั้ง lvm ที่เข้ารหัสบนดิสก์ใหม่ คุณเพียงแค่ต้องทำตามขั้นตอนเพิ่มเติม (เพื่อติดตั้ง cryptsetup ในขณะที่ chroot'ed ลงในดิสก์เป้าหมาย) ดังที่กล่าวไว้ในhttp://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encrypt-lvm -luksโดยเฉพาะ:

apt-get install lvm2 cryptsetup

คำสั่งดังกล่าวยังติดตั้ง lvm2 บนดิสก์เป้าหมายแม้ว่ามันจะไม่จำเป็น แต่ก็มีประโยชน์ถ้าคุณย้ายระบบที่ไม่ใช่ lvm ไปยังระบบ lvm บน SSD ของคุณโดยใช้ Live CD / DVD โปรดทราบว่าคุณต้องคัดลอก /etc/resolve.conf ไปยัง chroot ของคุณเพื่อให้สามารถเรียกใช้ apt-get install ได้สำเร็จ: มีการกล่าวถึง URL ที่อ้างถึงข้างต้นส่วนของโค้ด:sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

นอกจากนี้ยังง่ายต่อการทำ cp (โดยใช้การติดตั้งอื่น (ไม่ใช่จากการติดตั้งภายในแหล่งที่มา) เช่น live CD / DVD) แทนที่จะเป็น rsync สำหรับ / partition ตามที่อธิบายไว้ในวิธีย้าย Ubuntu ไป SSD

คุณควรสร้าง swap โดยใช้พาร์ติชันmkswapของคุณ/dev/mapper/<swap-name-here>

ควรเปิดใช้งานการสนับสนุน TRIM ในเวลาเดียวกันตามที่ระบุไว้ในhttp://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html

คำเตือน: ข้อความเพิ่มเติมด้านล่างไม่ได้มีไว้สำหรับผู้ที่ใช้ MBR ซึ่งดูเหมือนว่าหัวข้อ / หัวข้อที่เกี่ยวข้อง ฉันพบว่ามีประโยชน์อยู่แล้วดังนั้นกำลังโพสต์เพื่อประโยชน์ของผู้ที่สามารถปรับคำแนะนำในหัวข้อ / หัวข้อนี้ไปยังดิสก์ GPT ของพวกเขา

และสำหรับผู้ที่ใช้ GPT แทน MBR (โดยใช้ parted / gparted และ gdisk แทน fdisk) ฉันได้เรียนรู้วิธีที่ยากที่พาร์ทิชัน / boot ของคุณ (ซึ่งไม่ได้เข้ารหัส) ไม่ควรนับเลขหลังจากอุปกรณ์ luks ของคุณในลำดับ GPT เนื่องจากฉันสร้างพาร์ติชัน ESP หลังจากสร้าง / boot และ luks อุปกรณ์พาร์ติชันโดยใช้ gparted ฉันจึงต้องเรียงหมายเลขพาร์ติชันเพื่อให้ / boot ยังคงมีหมายเลขน้อยกว่าอุปกรณ์ luks

นอกเหนือและไม่เกี่ยวข้องกับการโพสต์นี้พูดอย่างเคร่งครัดผู้ที่ใช้ GPT และ UEFI กับ rEFInd, rEFInd อาจมีปัญหาในการนำเสนอรายการพาร์ติชันที่คุณต้องบูตจากถ้าคุณมี ESP หลายตัวในระบบของคุณฉันมีหนึ่งดิสก์ ของการใช้ rEFInd ฉันใช้ด้วงซึ่งใช้งานได้ดี



0

ช้าไปหน่อย แต่คุณต้องอัปเดตไฟล์ /etc/initramfs-tools/conf.d/resume เพื่อสะท้อนการแก้ไข swap หากไม่มีการดัดแปลงนี้คุณจะหยุดฟังก์ชั่นไฮเบอร์เนต

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