KVM 게스트를 자동으로 배포하기 위해 PXE 서버를 설정하고 있습니다.
KVM 하이퍼바이저 호스트: Fedora 29
KVM 게스트: Centos 7
설치 중에 문제가 발생했습니다./sbin/dmsquash-live-root: 쓰기 오류: 장치에 남은 공간이 없습니다.그 후 일부 "시간 초과 스크립트"가 시작되고 다음 설치가 실패합니다.
환경에 대한 간략한 개요:
- DHCP 서버에는 문제가 없습니다
dhcpd 구성 파일
subnet 172.31.0.0 netmask 255.255.255.0 {
range 172.31.0.51 172.31.0.120;
default-lease-time 1800;
max-lease-time 3600;
next-server 172.31.0.32;
filename "pxelinux/pxelinux.0";
option routers 172.31.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.31.0.255;
option domain-name-servers 172.31.0.2;
option domain-name "corp.example.com";
}
VM은 실제로 IP 주소와 TFTP 서버 IP 주소를 가져옵니다.
- TFTP 서버도 작동합니다
[root@kickstart ~]# ll /var/lib/tftpboot/pxelinux/
total 57872
-rw-r--r--. 1 root root 52584760 Apr 29 17:07 initrd.img
-rw-r--r--. 1 root root 26759 Apr 29 17:02 pxelinux.0
drwxr-xr-x. 2 root root 21 May 1 13:48 pxelinux.cfg
-rwxr-xr-x. 1 root root 6639904 Apr 29 17:07 vmlinuz
시작 파일
[root@kickstart ~]# cat /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
default Linux
prompt 1
timeout 10
display boot.msg
label Linux
menu label ^Install Centos MA MAN
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://kickstart.corp.example.com/anaconda/anaconda-ks.cfg
VM은 실제로 vmlinuz 및 initrd.img를 가져옵니다.
- 나는 anaconda-ks.cfg가 꽤 표준적이라고 생각합니다.
ignoredisk --only-use=sda
keyboard 'us'
rootpw --iscrypted $1$tg.NYz9t$GnRVNLuQdB6mperFmUdwL.
lang en_US
halt
timezone America/New_York
text
network --bootproto=dhcp --device=eth0
network --hostname=test1.corp.example.com
url --url="http://kickstart.corp.example.com/install" # Apache server
auth --useshadow --passalgo=sha512
firewall --enabled --port=ssh
selinux --enforcing
skipx
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
clearpart --none --initlabel
- 설치 소스는 Apache 서버입니다.
웹에서 이용 가능합니다.
<VirtualHost *:80>
DocumentRoot /www/docs/kickstart.corp.example.com
ServerName kickstart.corp.example.com
Options +Indexes
</VirtualHost>
"SATA 링크 다운" 메시지(위 스크린샷 참조)와 /dev/loop0 마운트 문제를 발견했지만 이를 해석하는 방법을 모르겠습니다.
어디를 더 파헤쳐야 할지 모르겠습니다.
답변1
이 시점에서 게스트는 커널을 성공적으로 시작했으며 initramfs 환경에서 실행 중입니다. 설치 프로그램 initramfs 는 <CentOS DVD root>/LiveOS/squashfs.img
.http://kickstart.corp.example.com/install/LiveOS/squashfs.img
(후자가 사실인 경우 inst.stage2=http://kickstart.corp.example.com/install
해당 줄에 append
부팅 옵션을 추가하여 /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
로컬 소스에서 강제로 로드할 수 있습니다.)
루트 파일 시스템은 아직 마운트되지 않았으므로 RAM 디스크에 로드됩니다. 이 시점에서는 설치 프로그램 UI가 아직 시작되지 않았으며 커널이 로컬 디스크가 존재한다는 것을 감지했지만 로컬 디스크는 전혀 건드리지 않았습니다 /dev/vda
.
제가 가지고 있는 이전 CentOS 7 ISO 이미지의 squashfs.img
파일 크기는 352MiB입니다. 최신 버전은 아마도 이보다 약간 클 것입니다. curl
기록된 메시지(실제로 다운로드를 수행하는 도구)에 포함된 출력은 dracut-initqueue
RAM squashfs.img
크기가 432MiB이고 용량이 충분하지 않아 다운로드가 약 75%에서 중단된다는 것을 나타냅니다. 공간(램디스크에서 가정합니다).
다운로드가 불완전 하여 설치가 실패 squashfs.img
하고 RAM 디스크가 여전히 100% 가득 차서 No space left on device
오류 메시지가 표시됩니다.
게스트 VM에 얼마나 많은 RAM이 할당됩니까? 가상 머신이 작으면 메모리가 부족할 수 있습니다.
답변2
나는 이 오류가 실제로는 "vda"라고 불리는 "sda"라고 표시된 가상 드라이브를 가리키는 킥스타트 파일 때문에 발생한 것이라고 생각합니다. 게시한 출력 중간에 "vda"가 표시되어 있으며 크기는 약 21GB입니다.
ignoredisk --only-use=vda
bootloader --location=mbr --boot-drive=vda
clearpart --all --initlabel --drives=vda
anaconda-ks.cfg 파일에서 다음과 같이 변경하면 됩니다. 내 명확한 부분 명령은 --all이고 귀하의 명령은 --none으로 설정되어 있습니다.