全部產品
Search
文件中心

:Alibaba Cloud Linux 2系統的ECS執行個體掛載Overlayfs時共用掛載目錄導致掛載失敗

更新時間:Feb 28, 2024

問題描述

在Alibaba Cloud Linux 2系統的ECS執行個體中掛載Overlayfs失敗。存在該問題的ECS執行個體有以下特徵:

  • 鏡像:所有的Alibaba Cloud Linux 2鏡像版本

  • 核心:所有的Alibaba Cloud Linux 2核心(Cloud Kernel)

  • 執行dmesg命令,在核心日誌中會出現以下錯誤記錄檔的一條:

    • kernel-4.19.67-16.al7之前的版本

      overlayfs: lowerdir is in-use as upperdir/workdir
      
      overlayfs: lowerdir path overlapping in-use upperdir/workdir
      
      overlayfs: upperdir is in-use by another mount, mount with '-o index=off' to override exclusive upperdir protection.
      
      overlayfs: workdir is in-use by another mount, mount with '-o index=off' to override exclusive workdir protection.
    • kernel-4.19.67-16.al7及之後的版本

      overlayfs: lowerdir is in-use as upperdir/workdir of another mount, mount with '-o index=off' to override exclusive upperdir protection.
      
      overlayfs: workdir is in-use as upperdir/workdir of another mount, mount with '-o index=off' to override exclusive upperdir protection.
      
      overlayfs: upperdir is in-use as upperdir/workdir of another mount, mount with '-o index=off' to override exclusive upperdir protection.

問題原因

Overlayfs的掛載參數lowerdir、upperdir或workdir不能同時作為另一個掛載點的upperdir或workdir,否則可能存在未知風險。即在掛載過程中,當核心檢測到以上情況時,會返回-EBUSY錯誤資訊,同時列印錯誤記錄檔。

解決方案

臨時解決方案

重要
  • 使用該臨時解決方案可能存在未知風險,使用之前請謹慎評估。

  • Overlayfs的主要使用情境是Container Service,Container Service中一直存在多個掛載點共用同一個upperdir或workdir現象,但是系統核心支援通過關閉index特性(即指定index=off掛載參數),來規避這個問題。

  1. 確認核心版本中的報錯資訊。

    • kernel-4.19.67-16.al7之前的版本 執行dmesg命令後,如果您出現以下錯誤記錄檔的一條,則可以參考後續步驟進行處理。

      說明

      如果您出現另外兩條報錯資訊,本方案無法解決該問題。

      overlayfs: upperdir is in-use by another mount, mount with '-o index=off' to override exclusive upperdir protection.
      
      overlayfs: workdir is in-use by another mount, mount with '-o index=off' to override exclusive workdir protection.
    • kernel-4.19.67-16.al7及之後的版本

      kernel-4.19.67-16.al7及之後的版本的錯誤記錄檔都可以參考以下步驟進行處理。

  2. 執行掛載Overlayfs的命令時,指定index=off掛載參數,則可以規避以上報錯,成功掛載Overlayfs。此時核心會列印以下其中一條日誌。

    overlayfs: lowerdir is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior.
    
    overlayfs: upperdir is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior.
    
    overlayfs: workdir is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior.

根本解決方案

  1. 在掛載Overlayfs之前,您需要執行mount命令,查看之前掛載Overlayfs的相關參數,包括每個掛載點的lowerdir、upperdir、workdir參數,其輸出格式類似如下。

    overlay on /.../merged type overlay (rw,relatime,lowerdir=...,upperdir=...,workdir=...)
  2. 確認需要掛載的Overlayfs的掛載參數lowerdir、upperdir或workdir沒有同時作為另一個掛載點的upperdir或workdir,即可正常掛載。