Gentoo VPSのカーネル6.1.31でOverlayfsが機能しない

Gentoo VPSのカーネル6.1.31でOverlayfsが機能しない

GentooがインストールされたVPSがありますが、カーネルオーバーレイファイルシステムが正しく機能しません。

オーバーレイ関連のカーネルオプションです。

カーネルでコンパイル

cat .config | grep -i overlay

CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
CONFIG_OVERLAY_FS=y
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
# CONFIG_OVERLAY_FS_METACOPY is not set

モジュロコンパイル

cat .config | grep -i overlay

CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
CONFIG_OVERLAY_FS=m
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
# CONFIG_OVERLAY_FS_METACOPY is not set

カーネルにロードするときにdmesgから送信されるメッセージ

dmesg | grep -i overlay
[   10.144242] request_module fs-overlay succeeded, but still no fs?

モジュールにコンパイルするときのdmesgからのメッセージ

dmesg | grep -i overlay
[   10.000001] request_module fs-overlay succeeded, but still no fs?

モジュールにコンパイルすると、モジュールは正しい場所にあります。

locate overlay.ko
/lib/modules/6.1.46-gentoo/kernel/fs/overlayfs/overlay.ko
/usr/src/linux-6.1.46-gentoo/fs/overlayfs/.overlay.ko.cmd
/usr/src/linux-6.1.46-gentoo/fs/overlayfs/overlay.ko

cat /proc/filesystem | grep -i オーバーレイが空です。

システムは次のとおりです。

uname -a
Linux patito 6.1.31-gentoo #3 SMP PREEMPT_DYNAMIC Sun Jun 25 09:04:44 GMT 2023 x86_64 QEMU Virtual CPU version 2.5+ AuthenticAMD GNU/Linux

システム全体は、別のext4パーティションにある/ bootを除いて、1つのパーティションでのみext4を実行します。

システムには2GBのメモリと十分なスペースがあります。システムのスナップショットをダウンロードし、virt-managerを使って自分のコンピュータで実行し、テスト用のメモリとCPUコアを追加しましたが、同じ結果が得られました。役に立ちますが変更がない場合、qemu-imgは.imgからqcow2に変換されますか?

私は別のカーネルを試して、別のオプションで再コンパイルし、すべてのoverlayfs部分を削除し、再起動して再アクティブ化し、インターネット上で同様の問題を検索しましたが、何も見つかりませんでした.どんな理論にも感謝します。

カーネルのoverlayfsは、上記のようにカーネルの一部としてコンパイルされますが、モジュールにコンパイルしようとしましたが、自動的にロードされず、After lsmodを使用して手動でロードしようとしましたが、modprobeそこにはありません。もう一度試して、上記のセクションにカーネル設定を追加します。

答え1

で表示したメッセージをGoogleに検索して、dmesg次のファイルを見つけます。puppetソースコード問題の原因を説明してください。

    # On a fresh node overlay may be unloaded automatically by the OS
    # if no fs needs it. In this case the kern.log should look like:
    # kernel: request_module fs-overlay succeeded, but still no fs?
    # This may lead to unwanted side effects, like Docker not finding
    # the overlay kernel module loaded and falling back to
    # the device-mapper storage driver.
    # Therefore we explicitly load the overlay module when the overlayfs
    # option is true.
    kmod::module { 'overlay':
        ensure => 'present',
    }

したがって、ホストシステムで次のコマンドを実行すると、overlayカーネルモジュールがロードされていないことがわかります。

lsmod |grep overlay

overlayしたがって、カーネルモジュールを再ロードするだけです。

modprobe overlay

答え2

回答を投稿した後アベイロ、私のカーネルバージョン6.1.46が元のメッセージの6.1.31と異なることに気づきました。これは、質問が投稿された元のウェブサイトからほとんどの情報をコピーしたため、完全に可能です。Docker コミュニティフォーラム, 私はこれを調べるために多くのテストをして努力しましたがロードされるカーネルバージョンについて考えることになりました。

/usr/src/linux正しいカーネルを指して6.1.46fsをモジュールにオーバーライドして、元の投稿に関連情報を公開するように再コンパイルされたことを確認してから再起動しmake && make modules_install && make installますgrub-mkconfig -o /boot/grub/grub.cfg

再起動後に再実行してuname -aみると、カーネルは6.1.31でしたが、なぜですか?

間違ったパスを使用してmkconfigを実行した可能性があるため、慎重に再実行して再起動しました。それでも6.1.31です。

/boot/grub/grub.cfg再起動後に正しいオプションを確認しましたが、6.1.46がシステムを起動する最初のオプションでした。そのため、ランダム行の一部が更新されない問題を回避するために実行し、rm /boot/\*6.1.31*grepgrub-mkconfig -o /boot/grub/grub.cfgで確認したところ、6.1.31の痕跡はなく、6.1.46のみが見つかりました。

再起動しましたが、6.1.31が再び登場しました。しかし、すべてが大丈夫に見え、6.1.46で起動する必要があります。

その後、再起動して手動でブートプロセスを制御して6.1.46をロードするように手動で数字を編集しましたが、システムが失敗してカーネルが見つかりませんでした。

これが重要です。

6.1.31に戻ってブートした後、マウントポイントを確認しました(/bootは別のパーティションです)。

そこにあります。いいえ、/bootインストールされていないと言うべきでしょうか。このシステムの寿命のある時点で、私はnoautoに間違えてインストールされませ/etc/fstab/bootでした。

これを変えましたが、削除済み自動ではありません/bootb の場合/etc/fstaシステムを再起動するとチャジャン!システムは6.1.46で、overlayfsが動作しています。

しかし、これは私が理解していない新しい部分です。/bootパーティションではなくフォルダにもかかわらず、6.1.46カーネルがあり、/boot/grub/grub.cfg正しい設定を持っていますが、なぜ読み込まれてロードされないのですか?起動時に表示される grub メニューには 6.1.31 というオプションが 1 つしかありませんが、含まれていlocateないディスクでは見つかりません。findどこにありますか。どのようにロードされますか?/boot/grub/grub.cfgcatを使用してディスクから読み取ったデータは6.1.46です。

まあ、この長い話を終えて問題を解決し、新しいミステリーを手に入れましたが、あまりにも多くの時間を費やしたので、今はミステリーが解けていないままです。

助けてくれてありがとう。 aviroの最後のコメントに答えないと解決策が見つかりませんでした。

関連情報