是論文
“DADI: Block-Level Image Service for Agile and Elastic Application Deployment.USENIX ATC'20”的開源實作。
它是遠端容器鏡像的解決方案,支援按需擷取鏡像資料,無需在容器運作前下載下傳和解壓整個鏡像。
加速的核心是overlaybd,它提供了作為塊裝置的一系列基于塊的層的合并視圖。該存儲庫是加速集裝箱圖像的組成部分,提供了由iSCSI和overlaybd的實施
TCMU。
設定
https://github.com/alibaba/overlaybd#system-requirements 系統要求
Overlaybd通過iSCSI協定和TCMU提供虛拟塊裝置,是以需要TCMU核心子產品。TCMU 在 Linux 核心中實作并得到大多數 Linux 發行版的支援。
檢查并加載 target_core_user 子產品。
modprobe target_core_user
從 RPM/DEB 安裝
您可以從
Release下載下傳我們的 RPM/DEB 包并安裝。
二進制檔案安裝到
/opt/overlaybd/bin/
.
運作
/opt/overlaybd/bin/overlaybd-tcmu
,日志存儲在
/var/log/overlaybd.log
最好
overlaybd-tcmu
作為服務運作,以便在意外崩潰後可以重新啟動。
https://github.com/alibaba/overlaybd#build-from-source 從源代碼建構
https://github.com/alibaba/overlaybd#requirements 要求
要從源代碼建構overlaybd,需要以下依賴項:
- CMake >= 3.11
- gcc/g++ >= 7
- Libaio、libcurl、libnl3、glib2 和 openssl 運作時和開發庫。
-
- CentOS/Fedora:
sudo yum install libaio-devel libcurl-devel openssl-devel libnl3-devel glib2-devel
- Debian/Ubuntu:
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev libaio-dev libnl-3-dev libnl-genl-3-dev libglib2.0-dev
- CentOS/Fedora:
https://github.com/alibaba/overlaybd#build 建造
你需要 git 來檢出源代碼:
git clone https://github.com/alibaba/overlaybd.git
cd overlaybd
整個項目由 CMake 管理。二進制檔案和資源檔案将安裝到
/opt/overlaybd/
mkdir build
cd build
cmake ..
make -j
sudo make install
最後,為overlaybd-tcmu backstore 設定一個systemd 服務。
sudo systemctl enable /opt/overlaybd/overlaybd-tcmu.service
sudo systemctl start overlaybd-tcmu
配置
https://github.com/alibaba/overlaybd#overlaybd-config 覆寫配置
預設配置檔案
overlaybd.json
安裝到
/etc/overlaybd/
{
"logLevel": 1,
"logPath": "/var/log/overlaybd.log",
"registryCacheDir": "/opt/overlaybd/registry_cache",
"registryCacheSizeGB": 1,
"credentialFilePath": "/opt/overlaybd/cred.json",
"ioEngine": 1,
"download": {
"enable": true,
"delay": 120,
"delayExtra": 30,
"maxMBps": 100
},
"enableAudit": true,
"auditPath": "/var/log/overlaybd-audit.log"
}
場地 | 描述 |
日志級别 | 調試 0、資訊 1、警告 2、錯誤 3 |
io引擎 | 用于打開本地檔案的IO引擎:psync 0、libaio 1、posix aio 2。 |
日志路徑 | 日志檔案的路徑 是預設值。 |
系統資料庫緩存目錄 | 遠端圖像資料的緩存目錄。 |
系統資料庫緩存大小GB | 緩存的最大大小,以 GB 為機關。 |
憑證檔案路徑 | 用于在系統資料庫上擷取圖像的憑據。 |
下載下傳.啟用 | 是否啟用背景下載下傳。 |
下載下傳延遲 | 在overlaybd 裝置啟動後等待開始下載下傳任務的秒數。 |
下載下傳.delayExtra | 延遲附加随機額外延遲,避免同時啟動過多任務。 |
下載下傳.maxMBps | 下載下傳任務的速度限制(以 MB/s 為機關)。 |
啟用審計 | 是否啟用審計。 |
審計路徑 | 審計檔案的路徑 |
注意:
download
是背景下載下傳的配置。啟動overlaybd 裝置後,将運作背景任務以将整個blob 提取到本地目錄中。下載下傳後,I/O 請求被定向到本地檔案。與其他選項不同,下載下傳配置在裝置啟動時重新加載。
https://github.com/alibaba/overlaybd#credential-config 憑證配置
以下是按
credentialFilePath
字段描述的憑證檔案示例。
{
"auths": {
"hub.docker.com": {
"username": "username",
"password": "password"
},
"hub.docker.com/hello/world": {
"auth": "dXNlcm5hbWU6cGFzc3dvcmQK"
}
}
}
需要身份驗證時會重新加載憑據。如果使用臨時憑證,則必須在到期前更新憑證,否則 overlaybd 會不斷重新加載,直到設定了有效的憑證。為了測試友善,我們在阿裡雲ACR上提供了一個公共系統資料庫,見後面的例子。
重要提示:如果系統資料庫不是公開的,則必須在啟動裝置之前設定相應的憑據。
https://github.com/alibaba/overlaybd#whats-next 下一步是什麼?
現在我們已經完成了 overlaybd 的設定,讓我們回到
repo 并開始運作我們的第一個加速容器。