PXE "쓰기 오류: 장치에 남은 공간 없음"으로 VM을 시작할 수 없고 dracut 환경으로 종료됩니다.

PXE "쓰기 오류: 장치에 남은 공간 없음"으로 VM을 시작할 수 없고 dracut 환경으로 종료됩니다.

KVM 게스트를 자동으로 배포하기 위해 PXE 서버를 설정하고 있습니다.

KVM 하이퍼바이저 호스트: Fedora 29

KVM 게스트: Centos 7

설치 중에 문제가 발생했습니다./sbin/dmsquash-live-root: 쓰기 오류: 장치에 남은 공간이 없습니다.그 후 일부 "시간 초과 스크립트"가 시작되고 다음 설치가 실패합니다.

환경에 대한 간략한 개요:

  1. 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 주소를 가져옵니다.

  1. 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를 가져옵니다.

  1. 나는 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
  1. 설치 소스는 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-initqueueRAM 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으로 설정되어 있습니다.

관련 정보