
text/console 설치 프로그램을 사용하여 KVM/libvirt vm에 Ubuntu 서버를 설치하려고 합니다.
두 개의 LVM 볼륨을 루트로 넘겨주고 VM을 가상 디스크로 교체하려고 합니다.
그들은 vda
및 로 올바르게 감지 vdb
되지만 설치 프로그램은 이를 디스크로 분할하도록 강제하는 것 같으며 이로 인해 LVM의 유연성이 손상됩니다.
파티션을 사용하는 대신 가상 디스크를 직접 포맷하여 Ubuntu를 설치하려면 어떻게 해야 합니까? 아니면 이것이 나쁜 생각입니까?
동기 부여:
요점은 스토리지 계층 구조에서 불필요한 추상화 수준을 제거하여 복잡성을 줄이는 것입니다.
- 물리적 드라이브:
host:/dev/sd{a,b}
- 파티셔닝:
host:/dev/sd{a,b}1
- SW-레이드:
host:/dev/md1
- LVM:
host:/dev/vg0/mylv_root
- VirtIO 디스크
guest:/dev/vda
- 파티셔닝:
guest:/dev/vda1
- 파일 시스템:
guest:/
이 레이아웃에서는 단일 VM에 추가 공간을 할당할 때 다음 단계를 거쳐야 합니다.
lvresize
parted
, 특히 못생긴resize2fs
할당된 공간을 반대 방향으로 줄이는 것입니다(이는 훨씬 더 보기 흉합니다).
백업(예: )의 경우 psusi에서 설명하는 lvcreate --snapshot
추가 단계가 있습니다 .kpartex
이 추상화가 어떤 가치를 제공하는지 알 수 없기 때문에 방정식에서 6.을 제거하고 싶습니다. 그러나 추가 복잡성, 성능에 미칠 수 있는 영향 및 작은 공간 낭비로 인해 비용이 발생합니다.
해키 솔루션:
이를 사용하여 kpartx
루트 파일 시스템을 "부트스트랩 파티션"(다른 임시 논리 볼륨 내)에서 대상 논리 볼륨으로 이동한 다음 직접 커널 부팅을 통해 부팅할 수 있었습니다.
kpartx -a /dev/vg0/mylv_bootstrapper
dd if=/dev/mapper/vg0-mylv_bootstrapper1 of=/dev/vg0/mylv_root bs=4M
e2fsck -f /dev/vg0/mylv_root
# Edit fstab inside /dev/vg0/mylv_root accordingly
resize2fs /dev/vg0/mylv_root
kpartx -d /dev/vg0/mylv_bootstrapper
하지만:
- 이상하게 해키한 느낌이 듭니다.
- 커널이 업그레이드될 때마다 호스트에 있는 게스트의 커널 버전을 수동으로 업데이트해야 하기 때문에 직접 커널 부팅이라는 아이디어는 별로 마음에 들지 않습니다.
답변1
글쎄요, LVM인지 아닌지에 관계없이 공간을 분할/포맷해야 합니다.
예, KVM은 장치를 "vda" 및 "vdb"로 인식합니다.
일반적으로 KVM은 원시 파티션/LVM, IMO를 사용하지만 가상 디스크를 사용하는 것이 훨씬 더 안정적입니다. 동일한 공간을 차지하며 언제든지 가상 디스크에서 LVM을 사용하거나 가상 디스크 크기를 조정할 수 있습니다.
답변2
실제로 나는 세 가지 대답이 있다는 것을 발견했습니다. 논리 볼륨이 포맷된 경우(예: host# mkfs.ext4 /dev/vg0/mylv_root
), 설치 프로그램은 이를 감지하여 "가상 디스크의 파티션 1"로 사용하도록 허용합니다. 그런 다음 파티션을 다시 포맷할 수도 있습니다.
그러나 Grub은 설치에 실패하며 대신 직접 커널 부팅을 사용할 수 있습니다.