MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

核心功能:
-  Categories/Series双视图管理(category_view.rs + import_markdown.rs)
-  FUSE Multi-Volume支持(tree_type参数)
-  SSH/SFTP/SCP/rsync协议完整实现(4042行)
-  NFS/SMB Module Phase 1-3完成
-  Archive Module Phase 1-4完成(2916行)
-  Download Center API完整实现
-  S3兼容API实现(560行)

Git配置修正:
-  删除错误origin(gitea.momentry.ddns.net)
-  删除m5max128(指向机器名)
-  设置origin = m5max128gitea.momentry.ddns.net/admin/markbase
-  设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase

数据清理:
-  删除38个临时SQLite(保留accusys.sqlite、demo.sqlite)
-  删除.bak、test_*.bin、调试脚本等临时文件
-  删除临时目录(build/、download files/、raid_test/等)
-  更新.gitignore排除临时文件

架构优化:
- 52个文件修改,2434行新增,4739行删除
- Workspace成员整合(16个crate)
- 数据库状态:accusys.sqlite保留(主demo测试)

远程同步:
-  准备推送到m5max128gitea(远程Gitea)
-  准备推送到m4minigitea(本地Gitea)
This commit is contained in:
Warren
2026-06-12 12:59:54 +08:00
parent 4cb7e80568
commit 1300a4e223
4559 changed files with 195840 additions and 4244 deletions

8
docker/.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
.git
target/
data/
node_modules/
research/
*.sqlite
*.db
*.swp

View File

@@ -0,0 +1,16 @@
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
tgt \
&& rm -rf /var/lib/apt/lists/*
RUN dd if=/dev/zero of=/lun0.img bs=1M count=256
COPY docker/targets.conf /etc/tgt/targets.conf
EXPOSE 3260
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@@ -0,0 +1,36 @@
FROM ubuntu:22.04
# 安装系统依赖
RUN apt-get update && apt-get install -y \
dmsetup \
targetcli-fb \
sqlite3 \
fio \
curl \
&& rm -rf /var/lib/apt/lists/*
# 安装Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
# 复制源码
COPY . /markbase
WORKDIR /markbase
# 编译项目
RUN cargo build --release --bin configure_iscsi
# 创建测试数据目录
RUN mkdir -p /markbase/data/users \
&& mkdir -p /tmp/test_disks
# 创建虚拟磁盘3个100MB文件作为测试磁盘
RUN dd if=/dev/zero of=/tmp/test_disks/disk1.img bs=1M count=100 \
&& dd if=/dev/zero of=/tmp/test_disks/disk2.img bs=1M count=100 \
&& dd if=/dev/zero of=/tmp/test_disks/disk3.img bs=1M count=100
# 设置执行权限
RUN chmod +x scripts/*.sh
# 默认命令
CMD ["./scripts/configure_iscsi.sh", "docker_test"]

30
docker/Dockerfile.webdav Normal file
View File

@@ -0,0 +1,30 @@
FROM ubuntu:22.04
# 安装系统依赖
RUN apt-get update && apt-get install -y \
sqlite3 \
curl \
&& rm -rf /var/lib/apt/lists/*
# 安装Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
# 复制源码
COPY . /markbase
WORKDIR /markbase
# 编译项目
RUN cargo build --release --bin webdav_server
# 创建测试数据目录
RUN mkdir -p /markbase/data/users
# 设置执行权限
RUN chmod +x scripts/*.sh
# 暴露端口
EXPOSE 4919
# 默认命令
CMD ["cargo", "run", "--release", "--", "webdav_server", "--port", "4919", "--user", "demo"]

31
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,31 @@
services:
raid_test:
build:
context: ..
dockerfile: docker/Dockerfile.raid_test
privileged: true # 需要特权模式才能运行dmsetup
volumes:
- ../data:/markbase/data
- /tmp/test_disks:/tmp/test_disks
command: ["./scripts/configure_iscsi.sh", "docker_test", "/tmp/test_disks/disk1.img", "/tmp/test_disks/disk2.img", "/tmp/test_disks/disk3.img"]
webdav_server:
build:
context: ..
dockerfile: docker/Dockerfile.webdav
ports:
- "4919:4919"
volumes:
- ../data:/markbase/data
command: ["cargo", "run", "--release", "--", "webdav_server", "--port", "4919", "--user", "docker_test"]
iscsi_target:
build:
context: ..
dockerfile: docker/Dockerfile.iscsi_target
ports:
- "3260:3260"
networks:
markbase_net:
driver: bridge

18
docker/entrypoint.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
set -e
echo "Starting tgtd..."
tgtd
echo "Waiting for tgtd to be ready..."
sleep 2
echo "Configuring targets from /etc/tgt/targets.conf..."
tgt-admin -e
echo "Verifying targets..."
tgtadm --mode target --op show
echo "tgtd is ready on port 3260"
# Keep tgtd running in foreground
while true; do sleep 10; done

4
docker/targets.conf Normal file
View File

@@ -0,0 +1,4 @@
<target iqn.2026-05.momentry:libiscsi-test>
backing-store /lun0.img
incominguser testuser testpass
</target>