dshimizu/blog

アルファ版

CentOS7.5のkickstart処理の途中でメモリ不足によるdracut-initqueue[XXXX]: sbin dmsquash-live-root: line XXX: printf: write error: No space left on device

KVM仮想マシンイメージで CentOS 7.5-1804 をPXE Bootからkickstartでインストールを行おうとしたとき、インストーラは起動するもののブート・シーケンス途中で以下のようなエラーで止まった。

[  16.563343] dracut-mount[2273]: Warning: Can't mount root filesystem
[  16.688087] dracut-mount[2273]: Warning: /dev/root does not exist
[  16.699366] dracut-mount[2273]: /lib/dracut-lib.sh line 1049: echo: write error: No space left on device
        Starting Dracut Emergency Shell...
Warning: /dev/root does not exist

Generating "/run/initramfs/rdsosreport.txt"

Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to tsave "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after mounting then and attach it to a bug report.

:/#

原因と回避策

No space left on deviceとあるのでディスクスペースがないのかと思いつつも、出力をさかのぼっていると以下のようなエラーが出ていた。

dracut-initqueue[1001]: /sbin/dmsquash-live-root: line 286: printf: write error: No space left on device

DracutはRHELディストリビューションで使われているinitramfsを作成するためのツール。 その処理の中で実行されているdmsquash-live-root.shは起動時にメモリに一時領域用のファイルシステムが作成されるもののようだが、そのための領域がないということらしい。

つまりメモリが足りないということかと思いつつ、もう少し調べるとRHELのカスタマーポータルやBugzillaにも情報が上がっていた。

どうやらメモリが2GB以上ないとだめらしい。

事象が発生したときに作成しようとした仮想マシンのスペックは 1CPU / 1GB RAM / 10GB ストレージ だったので RAM を2GBにしたらうまくブートが行われた。

まとめ

kickstartでのインストール時にメモリ不足によりブート処理が途中で止まる事象の原因その回避策について書いた。 新規作成時は2GB以上のメモリを使うようにしておきたい。

参考