이야기

이야기

저는 가상 머신으로 실행되는 Alpine Linux(v3.13.2)를 이제 막 시작했습니다. (Hyper-V에서는 그게 중요하지 않다고 생각합니다.) 왜 설치 후에 Alpine Linux만 보이는지 궁금합니다.사용예상되는 "0-700MB"이지만 설치 중에 .vhdx 파일이 거의 4GiB까지 커질 만큼 충분히 씁니다.

이야기

"가상" .iso를 사용하여 새로운 빈 가상 머신에 다운로드하여 설치했습니다. 평소와 같이 드라이브에 대해 동적으로 vhdx를 확장하는 127GiB를 만들었습니다. 이는 4MiB .vhdx 파일로 시작됩니다. 가상 머신에는 1GiB RAM, 4개의 vCPU 및 NIC가 있습니다. 그 동안 setup-alpine나는 거의 기본값을 선택했지만(키보드 및 시간대, IIRC 제외) "sys" 모드에서 "sda"에 설치했습니다.

실제로 파일 시스템을 생성했을 때 .vhdx 파일은 한 시점에 4MiB에서 약 1.7GiB로 늘어났다가 재부팅하라는 메시지를 받으면 다시 약 3.5GiB로 늘어났습니다.

.iso를 제거하고 재부팅하고 로그인한 후 마침내 3.72GiB .vhdx 파일을 보았습니다. 하지만 df내가 그렇지 않다는 걸 보여주네요사용거의 다음과 같습니다:

# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs           10240        0     10240   0% /dev
shm               505164        0    505164   0% /dev/shm
/dev/sda3      128048328   189800 121310972   0% /
tmpfs             101036      108    100928   0% /run
/dev/sda1         523248      272    522976   0% /boot/efi

Optimize-Vhd일반 루틴(Powershell)을 실행하려고 했지만 .vhdx의 크기가 줄어들지 않았기 때문에 연속된 "0"이 모두 아닙니다 . Optimize-Vhd.vhdx 파일을 축소하기 전에 Alpine Linux 인스턴스 조각 모음을 수행하는 방법을 알아내야 했습니다 .

아이디어?

답변1

이는 Alpine Linux에만 국한되지 않습니다. 이는 파일 시스템(ext4) 옵션/동작과 Windows가 스파스 파일을 처리하는 방식의 차이로 인한 요소입니다.

Linux는 희소 파일에 의존하는 반면 Windows는 그렇지 않습니다. 즉, 거의 완전히 비어 있는 블록이 대량으로 확장되는 경우가 많습니다. 읽은 내용을 보면 32MB의 기본 블록 크기를 사용하고 있다는 것을 알 수 있습니다. 이는 Linux에서 사용하는 일반 파일 시스템에 종종 부풀림을 유발합니다. 모든 Linux 파일 시스템이 이 작업을 수행하는 것은 아니므로 디스크가 자연스럽게 확장될 수 있습니다.

Eric Siron이 Technet 스레드에 게시함(2019년 1월 22일 화요일 오후 5시 46분) 그는 가지고있다추가의 기사이에 관해 언제 걱정하고 싶은지, 걱정하고 싶지 않은지, 그리고 걱정했다면 어떻게 처리할지 이야기해 보세요.

@Stewart의 제안을 받아들여 시도해 보았지만 ~122GiB가 잘렸다고 보고되었지만 실제로 는 .vhdx 파일의 크기를 ~50MiB 이상 줄이는 fstrim -v /내용은 변경되지 않았습니다 .Optimize-Vhd

기반으로또 다른 제안그리고데비안 위키의 메모, 하나 있어요많은discard이 옵션이 실제로 수행하는 작업과 그것이 좋은 것인지 나쁜 것인지에 대해 의견 차이/혼란이 있습니다. 이 부분은 가상 디스크와 물리 디스크의 차이점과 관련이 있을 것 같습니다. fstrim그래도 도움이 되지 않았기 때문에 discard새로 설치하고 /etc/fstab을 변경하여 해당 옵션을 사용하도록(그리고 재부팅) 시도했습니다 fstrim. 이 경우에는 아무런 차이가 없습니다.

이 질문에서,

...fs는 가상 머신용이며 호스트 머신의 희소 원시 이미지 파일에 포함되어 있습니다. 새 블록이 할당되면 시간이 지남에 따라 파일이 생성/삭제/수정됨에 따라 이미지 파일은 가상 머신에서 사용되는 총 스토리지가 기본적으로 동일하게 유지되더라도 점차적으로 희소성을 잃어 "희소하지 않은" 크기로 변합니다.

실제로 문제는 삭제된 블록을 재사용하지 않으려는 파일 시스템에 관한 것 같습니다. 이것이 사실이라면 이러한 증가는 전체 드라이브/vhdx 크기의 특정 비율에서 멈출 것으로 예상됩니다. 이는 내가 보고 있는 동작에 대해 의미가 있습니다(.vhdx 파일의 크기는 부팅할 때마다 ~30MiB씩 증가합니다. 즉, 부팅, 로그인, poweroff버블, 린스, 반복, 부팅당 +~30MiB를 의미합니다.). 마지막으로, 나는 이것이 이 행동의 조합이기를 원합니다그리고Vhdx 드라이버가 스파스 파일을 처리하는 방식이 아니라 ext4가 스파스 파일을 처리하는 방식입니다.

마침내 나는 찾았다Hyper-V 기반 Linux에 대한 Microsoft 모범 사례. 블록 크기가 1MB인 vhdx를 사용하면 ~286MiB .vhdx가 새로 설치됩니다! flex_bg=4096/etc/fstab에 마운트 옵션을 추가하면 추가적인 차이가 있는지 확인하지 않았습니다 .

관련 정보