精华内容
下载资源
问答
  • MinIO数据修复

    千次阅读 2019-12-11 16:32:50
    一、安装minio客户端mc 1、下载二进制文件 wget https://dl.min.io/client/mc/release/linux-amd64/mc 2、赋予可执行权限 chmod +x mc 二、mc admin heal 1、查询admin heal命令说明 [root@minio-1 minio]# ./mc ...

    一、安装minio客户端mc

    1、下载二进制文件

    wget https://dl.min.io/client/mc/release/linux-amd64/mc
    

    2、赋予可执行权限

    chmod +x mc
    

    二、mc admin heal

    1、查询admin heal命令说明

    [root@minio-1 minio]# ./mc admin heal
    
    NAME:
    
     mc admin heal - heal disks, buckets and objects on MinIO server
    
     
    
    USAGE:
    
     mc admin heal [FLAGS] TARGET
    
     
    
    FLAGS:
    
     --scan value         select the healing scan mode (normal/deep) (default: "normal")
    
     --recursive, -r        heal recursively
    
     --dry-run, -n         only inspect data, but do not mutate
    
     --force-start, -f       force start a new heal sequence
    
     --force-stop, -s       Force stop a running heal sequence
    
     --remove           remove dangling objects in heal sequence
    
     --config-dir value, -C value path to configuration folder (default: "/root/.mc")
    
     --quiet, -q          disable progress bar display
    
     --no-color          disable color theme
    
     --json            enable JSON formatted output
    
     --debug            enable debug output
    
     --insecure          disable SSL certificate verification
    
     --help, -h          show help
    
     
    
    SCAN MODES:
    
     normal (default): Heal objects which are missing on one or more disks.
    
     deep      : Heal objects which are missing or with silent data corruption on one or more disks.
    
     
    
    EXAMPLES:
    
     \1. To format newly replaced disks in a MinIO server with alias 'myminio'
    
       $ mc admin heal myminio
    
     
    
     \2. Heal 'testbucket' in a MinIO server with alias 'myminio'
    
       $ mc admin heal myminio/testbucket/
    
     
    
     \3. Heal all objects under 'dir' prefix
    
       $ mc admin heal --recursive myminio/testbucket/dir/
    
     
    
     \4. Issue a dry-run heal operation to inspect objects health but not heal them
    
       $ mc admin heal --dry-run myminio
    
     
    
     \5. Issue a dry-run heal operation to inspect objects health under 'dir' prefix
    
       $ mc admin heal --recursive --dry-run myminio/testbucket/dir/
    
     
    
     \6. Force start a running heal sequence (meaning it will force kill the running heal sequence and start a new one)
    
       $ mc admin heal --force-start myminio/testbucket/dir/
    
      
    
     \7. Force stop a running heal sequence (meaning it will force kill the running heal sequence)
    
       $ mc admin heal --force-stop myminio/testbucket/dir/
    
      
    
     \8. Issue a dry-run heal operation to inspect objects health under 'dir' prefix
    
       $ mc admin heal --dry-run myminio/testbucket/dir/
    

    1、config

    set +o history
    
    ./mc config host add myminio http://10.0.0.1:9000 you_appkey you_secretkey
    
    set -o history 
    

    2、admin

    递归修复test1存储桶和及其里面的对象

    ./mc admin heal -r myminio/test1
    

    在这里插入图片描述

    递归修复files存储桶和及其里面的对象

    ./mc admin heal -r myminio/files
    

    在这里插入图片描述

    展开全文
  • 由于项目需要迁移到新环境,minio数据也需要进行迁移,使用Rclone成功搞定。 关于Rclone是什么官网已有,这里不再赘述。 官网地址 中文网站 Rclone的使用 下载安装rclone curl https://rclone.org/install.sh | ...

    前言

    由于项目需要迁移到新环境,minio的数据也需要进行迁移,使用Rclone成功搞定。

    关于Rclone是什么官网已有,这里不再赘述。

    官网地址

    中文网站

    Rclone的使用

    下载安装rclone

    curl https://rclone.org/install.sh | sudo bash
    

    如果提示
    None of the supported tools for extracting zip archives (unzip 7z busybox) were found. Please install one of them and try again.
    是因为Linux没有解压工具
    安装一下即可,安装命令

     yum install zip unzip
    

    安装成功后提示
    在这里插入图片描述
    minio官方示例
    可从Rclone官网中找到minio的demo
    由SDK得知Minio是与Amazon S3兼容的云存储
    在这里插入图片描述
    在这里插入图片描述
    Rclone官网minio config

    创建配置文件

    这里我直接自己创建配置文件

    vim /root/.config/rclone/rclone.conf
    
    [minio-1]
    type = s3
    provider = Minio
    env_auth = false
    access_key_id = minio
    secret_access_key = minio123
    region = cn-east-1
    endpoint = minio地址1
    location_constraint =
    server_side_encryption =
    [minio-2]
    type = s3
    provider = Minio
    env_auth = false
    access_key_id = minio
    secret_access_key = minio123
    region = cn-east-1
    endpoint = minio地址2
    location_constraint =
    server_side_encryption =
    

    执行同步命令

     rclone sync minio-1:bucket-1 minio-2:bucket-2
    
    展开全文
  • minio存储 单机测试 minio对象存储: 编译安装: minio 服务器安装: git clone https://gitee.com/mirrors/minio.git cd minio go build cp minio /usr/local/bin/ minio客户端安装: git clone git clone ...

    minio存储

    单机测试

    minio对象存储:

    编译安装:

    minio 服务器安装

    git clone https://gitee.com/mirrors/minio.git
    cd minio
    go build
    cp minio /usr/local/bin/
    

    minio客户端安装

    git clone git clone https://github.com/minio/mc.git
    cd mc
    go build
    cp mc /usr/local/bin/
    
    单机性能测试:

    启动minio服务器

    root@ubuntu:/home/work/minio# minio server data
    Endpoint:  http://10.1.30.31:9000  http://172.17.0.1:9000  http://172.30.0.1:9000  http://127.0.0.1:9000        
    AccessKey: minioadmin 
    SecretKey: minioadmin 
    
    Browser Access:
       http://10.1.30.31:9000  http://172.17.0.1:9000  http://172.30.0.1:9000  http://127.0.0.1:9000        
    
    Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
       $ mc alias set myminio http://10.1.30.31:9000 minioadmin minioadmin
    
    Object API (Amazon S3 compatible):
       Go:         https://docs.min.io/docs/golang-client-quickstart-guide
       Java:       https://docs.min.io/docs/java-client-quickstart-guide
       Python:     https://docs.min.io/docs/python-client-quickstart-guide
       JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
       .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
    Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'
    
    

    mc客户端写入数据

    root@ubuntu:/home/work/minio# dd if=/dev/zero of=random bs=10M count=1024
    
    1024+0 records in
    1024+0 records out
    10737418240 bytes (11 GB, 10 GiB) copied, 56.3821 s, 190 MB/s
    root@ubuntu:/home/work/minio# 
    root@ubuntu:/home/work/minio# ll random 
    -rw-r--r-- 1 root root 10737418240 Oct 27 16:58 random
    root@ubuntu:/home/work/minio# mc cp ./random data/
    ./random:                 10.00 GiB / 10.00 GiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 1.09 GiB/s 9s
    root@ubuntu:/home/work/minio# ll /home/work/minio/data/
    total 10485772
    drwxr-xr-x 3 root root        4096 Oct 27 17:00 ./
    drwxr-xr-x 6 root root        4096 Oct 27 16:57 ../
    drwxr-xr-x 6 root root        4096 Oct 27 16:47 .minio.sys/
    -rw-r--r-- 1 root root 10737418240 Oct 27 17:00 random
    root@ubuntu:/home/work/minio# ll /home/work/minio/data/ -h
    total 11G
    drwxr-xr-x 3 root root 4.0K Oct 27 17:00 ./
    drwxr-xr-x 6 root root 4.0K Oct 27 16:57 ../
    drwxr-xr-x 6 root root 4.0K Oct 27 16:47 .minio.sys/
    -rw-r--r-- 1 root root  10G Oct 27 17:00 random
    root@ubuntu:/home/work/minio#
    

    linux文件系统拷贝性能测试

    root@ubuntu:/home/work/minio# rm random 
    root@ubuntu:/home/work/minio# ll
    total 28
    drwxr-xr-x  7 root root 4096 Oct 27 17:18 ./
    drwxr-xr-x  5 root root 4096 Oct 27 16:26 ../
    drwxr-xr-x  3 root root 4096 Oct 27 17:00 data/
    drwxr-xr-x  3 root root 4096 Oct 27 16:55 dir1/
    drwxr-xr-x  2 root root 4096 Oct 27 16:58 dir2/
    drwxr-xr-x  8 root root 4096 Oct 27 17:13 mc/
    drwxr-xr-x 12 root root 4096 Oct 27 16:33 minio/
    root@ubuntu:/home/work/minio# time cp data/random .
    
    real	0m8.067s
    user	0m0.064s
    sys	0m8.002s
    root@ubuntu:/home/work/minio#
    

    挂载
    准备密码文件:

    echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
    chmod 600 ${HOME}/.passwd-s3fs
    

    挂载:

    root@ubuntu:/home/work/minio# ls /mnt/
    root@ubuntu:/home/work/minio# s3fs data/
    .minio.sys/ random      
    root@ubuntu:/home/work/minio# s3fs data /mnt/
    s3fs: credentials file /root/.passwd-s3fs should not have others permissions.
    root@ubuntu:/home/work/minio# chmod 600 /root/.passwd-s3fs 
    root@ubuntu:/home/work/minio# s3fs data /mnt/
    root@ubuntu:/home/work/minio# 
    

    写入测试:

    root@ubuntu:/home/work/minio# cd /mnt/
    root@ubuntu:/mnt# time dd if=/dev/zero of=file1 bs=2M count=1024
    1024+0 records in
    1024+0 records out
    2147483648 bytes (2.1 GB, 2.0 GiB) copied, 1.43733 s, 1.5 GB/s
    
    real	0m1.440s
    user	0m0.000s
    sys	0m1.440s
    root@ubuntu:/mnt#
    
    
    集群性能测试:

    docker 容器形成集群

    集群测试

    测试硬件环境:

    在这里插入图片描述

    用docker 创建4节点的集群,每个节点两个挂载点。共8个挂载点。

    1 准备yaml文件:

    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    $ cat docker-compose.yaml
    version: '3.7'
    
    # starts 4 docker containers running minio server instances.
    # using nginx reverse proxy, load balancing, you can access
    # it through port 9000.
    services:
      minio1:
        image: minio/minio:RELEASE.2020-10-27T04-03-55Z
        volumes:
          - data1-1:/data1
          - data1-2:/data2
        ports:
          - "9001:9000"
        environment:
          MINIO_ACCESS_KEY: minio
          MINIO_SECRET_KEY: minio123
        command: server http://minio{1...4}/data{1...2}
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
          interval: 30s
          timeout: 20s
          retries: 3
    
      minio2:
        image: minio/minio:RELEASE.2020-10-27T04-03-55Z
        volumes:
          - data2-1:/data1
          - data2-2:/data2
        ports:
          - "9002:9000"
        environment:
          MINIO_ACCESS_KEY: minio
          MINIO_SECRET_KEY: minio123
        command: server http://minio{1...4}/data{1...2}
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
          interval: 30s
          timeout: 20s
          retries: 3
    
      minio3:
        image: minio/minio:RELEASE.2020-10-27T04-03-55Z
        volumes:
          - data3-1:/data1
          - data3-2:/data2
        ports:
          - "9003:9000"
        environment:
          MINIO_ACCESS_KEY: minio
          MINIO_SECRET_KEY: minio123
        command: server http://minio{1...4}/data{1...2}
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
          interval: 30s
          timeout: 20s
          retries: 3
    
      minio4:
        image: minio/minio:RELEASE.2020-10-27T04-03-55Z
        volumes:
          - data4-1:/data1
          - data4-2:/data2
        ports:
          - "9004:9000"
        environment:
          MINIO_ACCESS_KEY: minio
          MINIO_SECRET_KEY: minio123
        command: server http://minio{1...4}/data{1...2}
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
          interval: 30s
          timeout: 20s
          retries: 3
    
    ## By default this config uses default local driver,
    ## For custom volumes replace with volume driver configuration.
    volumes:
      data1-1:
      data1-2:
      data2-1:
      data2-2:
      data3-1:
      data3-2:
      data4-1:
      data4-2:
    
    
    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    
    

    2 启动minio容器

    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    $ docker-compose up -d
    Found orphan containers (minio_nginx_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
    Removing minio_minio1_1
    Recreating f417a19c3491_minio_minio1_1 ... done
    Recreating minio_minio3_1              ... done
    Recreating minio_minio2_1              ... done
    Recreating minio_minio4_1              ... done
    
    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    

    3 查看容器状态

    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    $ docker container ps
    CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS                            PORTS                    NAMES
    24d62d1addba        minio/minio:RELEASE.2020-10-27T04-03-55Z   "/usr/bin/docker-ent鈥?   9 seconds ago       Up 7 seconds (health: starting)   0.0.0.0:9004->9000/tcp   minio_minio4_1
    8a47cc4ce634        minio/minio:RELEASE.2020-10-27T04-03-55Z   "/usr/bin/docker-ent鈥?   9 seconds ago       Up 7 seconds (health: starting)   0.0.0.0:9002->9000/tcp   minio_minio2_1
    631afe2b9c3d        minio/minio:RELEASE.2020-10-27T04-03-55Z   "/usr/bin/docker-ent鈥?   9 seconds ago       Up 7 seconds (health: starting)   0.0.0.0:9003->9000/tcp   minio_minio3_1
    a32e5216c29b        minio/minio:RELEASE.2020-10-27T04-03-55Z   "/usr/bin/docker-ent鈥?   9 seconds ago       Up 7 seconds (health: starting)   0.0.0.0:9001->9000/tcp   minio_minio1_1
    
    Administrator@DESKTOP-CU3KA28 MINGW64 ~/Desktop/minio
    

    在浏览器输入登录地址:http://127.0.0.1:9000/minio/login

    MINIO_ACCESS_KEY: minio
    MINIO_SECRET_KEY: minio123

    在这里插入图片描述

    创建桶,桶名为group1,在桶下面创建文件夹20200807,上传文件到该文件夹。

    在这里插入图片描述

    上传一张图片到桶:

    在这里插入图片描述

    在这里插入图片描述

    4.验证数据损坏恢复

    4.1验证方案

    数据块,指文件分割成N块后分别存储在不同硬盘的数据,在硬盘内的文件名为part.1,part.2…

    1. 4台服务8(N)个数据块,根据纠删码的原理,只要保证至少4(N/2)个硬盘的数据完整,文件就可以正常访问,且可以对损坏数据块进行恢复。
    2. 分别上传2个文件,一个文件用于验证损坏超过4个硬盘数据时文件能否正常访问,另一个文件用于验证坏不超过4个硬盘时,是否可以进行文件恢复。

    4.2 验证损坏超过N/2个数据块

    1. 上传文件test.jpg。

    2. 进入docker容器中,删除5个( 5 > N/2 )数据块

      此处删除容器2两个数据块,容器4两个数据块,容器3一个数据块

    3. 先删除容器2上面的data1、data2数据块

    # 进入容器2
    C:\Users\Administrator>docker exec -it minio_minio2_1 /bin/sh
    / # ls
    CREDITS  data     data2    etc      lib      mnt      proc     run      srv      tmp      var
    bin      data1    dev      home     media    opt      root     sbin     sys      usr
    / #
    
    # 进入data1/group1/20200807/目录,删除数据块1上面的图片
    / # cd data1/group1/20200807/
    /data1/group1/20200807 # ls
    Sketchpad.png  cfg.json       test.jpg
    /data1/group1/20200807 #
    
    /data1/group1/20200807 # ls test.jpg/
    d83cf1b6-be3a-4f7c-8533-1a31ff1e80d8  xl.meta
    /data1/group1/20200807 # ls test.jpg/d83cf1b6-be3a-4f7c-8533-1a31ff1e80d8/
    part.1
    /data1/group1/20200807 #
    
    /data1/group1/20200807 # rm -rf test.jpg/
    /data1/group1/20200807 # ls
    Sketchpad.png  cfg.json
    /data1/group1/20200807 #
    
    # 进入data2/group1/20200807/目录,删除数据块2上面的图片
    / # cd data2/group1/20200807/
    /data2/group1/20200807 # ls
    Sketchpad.png  cfg.json       test.jpg
    /data2/group1/20200807 # rm -rf test.jpg/
    /data2/group1/20200807 #
    

    此时正常数据块6块,损坏数据块2块(上面删除的两块数据块),此时在web客户端查看刚才上传的test.jpg文件,是可以正常显示的。

    在这里插入图片描述

    1. 依此类推,删除容器4所有的数据块,此时正常数据块4块,损坏数据块4块,再次访问test.jpg文件,仍然可以正常显示。
    C:\Users\Administrator>docker exec -it minio_minio4_1 /bin/sh
    / # ls
    CREDITS  data     data2    etc      lib      mnt      proc     run      srv      tmp      var
    bin      data1    dev      home     media    opt      root     sbin     sys      usr
    / # rm -rf data1/
    .minio.sys/  group1/
    / # rm -rf data1/group1/20200807/
    Sketchpad.png/  cfg.json/       test.jpg/
    / # rm -rf data1/group1/20200807/test.jpg/
    / # rm -rf data2/group1/20200807/test.jpg/
    / # exit
    
    C:\Users\Administrator>
    
    1. 再次删除9003节点的data1后,此时正常数据块3块,损坏数据块5块,再次访问test.jpg,发现文件已经不见了,说明当损坏超过N/2个数据块时,文件就无法访问。
    C:\Users\Administrator>docker exec -it minio_minio3_1 /bin/sh
    / # ls
    CREDITS  data     data2    etc      lib      mnt      proc     run      srv      tmp      var
    bin      data1    dev      home     media    opt      root     sbin     sys      usr
    / # rm -rf data1/group1/20200807/test.jpg/
    / # rm -rf data1/group2/20200807/test.jpg/
    / # exit
    
    C:\Users\Administrator>
    

    验证损坏不超过N/2个数据块,数据恢复

    1. 上传Sketchpad.png文件
    2. 按照上面的的步骤,删除4个数据块(容器3和容器4上面的数据块)
    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio3_1 /bin/sh
    / # rm /data1/group1/20200807/
    cfg.json/  test.jpg/
    / # rm /data1/group1/20200807/cfg.json/
    rm: '/data1/group1/20200807/cfg.json' is a directory
    / # rm -rf /data1/group1/20200807/cfg.json/
    / # rm -rf /data2/group1/20200807/cfg.json/
    / # exit
    
    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio4_1 /bin/sh
    / # rm -rf /data1/group1/20200807/cfg.json/
    / # rm -rf /data2/group1/20200807/cfg.json/
    / #
    
    1. 此时正常的数据块4块,损坏的数据块4块。
    2. 通过minio的heal命令,对损坏的文件进行恢复,同样基于容器进行操作,此处需要运行新的容器minio/mc,以下方案为恢复整个服务器的数据,也可以按bucket或者object进行恢复,此处不作演示,可自行查询官方文档
    # 拉取mc的镜像
    PS C:\Users\Administrator\Desktop\minio> docker pull minio/mc
    # 运行mc容器
    docker run -it --entrypoint=/bin/sh minio/mc
    PS C:\Users\Administrator\Desktop\minio> docker run -it --entrypoint=/bin/sh minio/mc
    
    # 设置mc客户端参数,使其可以连接到minio集群(其中:172.16.200.23是docker宿主机的ip地址)
    / # mc config host add minio2 http://172.16.200.23:9000 minio minio123 --api s3v4
    Added `minio2` successfully.
    / # mc policy set public minio2/group1
    Access permission for `minio2/group1` is set to `public`
    / # mc admin heal -r minio2
     ◓  group1/20200807/cfg.json
        1/1 objects; 653 B in 1s
        ┌────────┬───┬─────────────────────┐
        │ Green  │ 3 │ 100.0% ████████████ │
        │ Yellow │ 0 │   0.0%              │
        │ Red    │ 0 │   0.0%              │
        │ Grey   │ 0 │   0.0%              │
        └────────┴───┴─────────────────────┘
    / #
    
    # 重新进入9001容器的data1/group1文件夹中,发现test2.jpg文件夹重新出现了,说明数据恢复成功。在最新版本的minio中,数据恢复是自动发现和触发修复的。
    

    在这里插入图片描述

    进度条显示,本次成功恢复了一个group1桶下面的20200807/cfg.json对象,恢复进度为100%。恢复后的对象大小为653 Byte。

    查看集群信息

    查看桶和桶下面的目录

    / # mc ls minio2
    [2020-10-28 03:58:55 UTC]     0B group1/
    / #
    / # mc tree minio2
    minio2
    └─ group1
       └─ 20200807
    / #
    
    / # mc admin info minio2
    ●  minio2:9000
       Uptime: 1 hour
       Version: 2020-10-27T04:03:55Z
       Network: 4/4 OK
       Drives: 2/2 OK
    
    ●  minio3:9000
       Uptime: 1 hour
       Version: 2020-10-27T04:03:55Z
       Network: 4/4 OK
       Drives: 2/2 OK
    
    ●  minio4:9000
       Uptime: 1 hour
       Version: 2020-10-27T04:03:55Z
       Network: 4/4 OK
       Drives: 2/2 OK
    
    ●  minio1:9000
       Uptime: 1 hour
       Version: 2020-10-27T04:03:55Z
       Network: 4/4 OK
       Drives: 2/2 OK
    
    27 KiB Used, 1 Bucket, 2 Objects
    8 drives online, 0 drives offline
    / #
    

    大文件测试

    生成大文件

    / # time dd if=/dev/zero of=/tmp/file bs=32M count=1024
    1024+0 records in
    1024+0 records out
    real    0m 23.23s
    user    0m 0.01s
    sys     0m 23.14s
    / #
    

    32GB数据上传测试

    /bin/sh: ll: not found
    / # ls /tmp/file -lh
    -rw-r--r--    1 root     root       32.0G Oct 28 09:40 /tmp/file
    / #
    / # time mc cp -r /tmp/file minio2/group1/ 
    

    在这里插入图片描述

    删除大文件

    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio3_1 /bin/sh
    / # rm -rf data1/group1/file
    / # rm -rf data2/group1/file/
    / # exit
    
    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio4_1 /bin/sh
    / #
    / # ls data1/group1/
    20200807  file
    / # ls data1/group1/file/
    1003d24c-fcbe-4829-8804-2e52b7efe14d  xl.meta
    / # rm -rf data1/group1/
    20200807/  file/
    / # rm -rf data1/group1/file
    / # rm -rf data2/group1/file
    / #
    

    恢复大文件

    / # mc admin heal -r minio2 
    

    在这里插入图片描述

    进入容器查看大文件恢复情况:

    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio3_1 /bin/sh
    / # ls /data1/group1/ -lh
    total 8K
    drwxr-xr-x    4 root     root        4.0K Oct 28 09:28 20200807
    drwxr-xr-x    3 root     root        4.0K Oct 28 11:11 file
    / #
    / # ls /data2/group1/ -lh
    total 8K
    drwxr-xr-x    4 root     root        4.0K Oct 28 09:28 20200807
    drwxr-xr-x    3 root     root        4.0K Oct 28 11:11 file
    / #
    / # exit
    
    C:\Users\Administrator\Desktop\minio>docker exec -it minio_minio4_1 /bin/sh
    / # ls /data1/group1/ -lh
    total 8K
    drwxr-xr-x    4 root     root        4.0K Oct 28 09:28 20200807
    drwxr-xr-x    3 root     root        4.0K Oct 28 11:11 file
    / # ls /data2/group1/ -lh
    total 8K
    drwxr-xr-x    4 root     root        4.0K Oct 28 09:28 20200807
    drwxr-xr-x    3 root     root        4.0K Oct 28 11:11 file
    / #
    

    对比可见minio的数据恢复速度比较快:

    32GB数据恢复时间是8min。32GB数据写入时间是32min。

    minio是gluster团队把glusterfs卖给红帽后,新创建的项目。全部用golang实现,由gluster创始人主导minio的开发工作。

    优点

    • 读写速度极快。MinIO号称是世界上速度最快的对象存储服务器。在标准硬件上,minio对象存储的读/写速度最高可以达到183 GB/s和171 GB/s。

    minio有以下特点

    • 运维简单

    • 简洁易用,部署方便

    • 原生支持k8s docker

    • 支持纠删码,支持bit rot位保护(磁盘比特位衰减)

    • 支持scal out

    • 故障可以精确到对象,单个对象的恢复不影响其他对象

    局限性

    • minio设计目标是amazon s3兼容的对象存储,目前版本不支持fuse mount,需要借助s3-fuse第三方工具挂载到系统目录。

    • 文档相对于ceph较少

    • 搭建集群后,不允许扩容。MinIO一旦集群搭建成功后,就不可以更改集群节点数。因为存在在MinIO的对象到底存储在哪个Set,是通过名字做Hash去找的,一旦节点数变了落点就错乱了。

    • 大集群最大节点数为32。MinIO实现了一个峰值锁叫DSync。它在节点数量少时,性能非常高;但节点数量过多时,性能就下降了。功能实现的最大节点就是32,所以导致MinIO单个集群的最大节点数也是32。官方回复是,他们十年做GlusterFS的经验看,一个超大的集群是难以维护的,尤其是宕机之后的恢复时间也特别长,所以他们在做MinIO的时候一个核心设计理念就是存储组件要变得简单可控,易于维护。进群容量问题,可以通过应用层来解决。

    扩容方案

    1、可同时向多个集群写入

    2、当集群容量达到阈值,从写集群中剔除,变成只读

    3、读取的时候,根据编码到文件名上的集群信息,从而路由到正确的集群。

    MinIO本身提供一个叫联合模式的方式来组建集群,但是要额外引入其他依赖。可以考虑在LB层根据其请求里面的一些header信息做流量转发。

    当配置多个集群的时候,可以先从配置中获取可用的集群,再从LB上根据请求的header信息,可控制向哪个集群写。当某个集群的容量达到阈值时,可以从配置中剔除该集群,把他变成只读集群。读取的时候把集群ID或信息码编码到文件名上去,这样可以通过解析文件名就能获取到对应的集群。

    压测工具

    采用 cosBench 工具做压测,cosBench是专门对对象存储做压测的工具。

    参考文献:

    minio集群搭建:

    https://blog.csdn.net/kea_iv/article/details/108061337

    minio中文文档:
    http://docs.minio.org.cn/docs/master/minio-erasure-code-quickstart-guide

    minio英文文档:
    https://docs.minio.io/docs/minio-admin-complete-guide.html

    展开全文
  • https://blog.csdn.net/kea_iv/article/details/108061337
    展开全文
  • Minio特点整理

    2021-01-26 09:47:31
    即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据Minio的特性: Amazon S3兼容 Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。 数据保护 Minio...
  • Minio 分布式集群部署

    2021-09-21 11:49:26
    数据保护2.2. 高可用2.3.一致性三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio四、分布式Minio负载均衡4.1. nginx安装4.2. 配置nginx4.3. ...
  • minio简介

    千次阅读 2020-07-16 10:56:59
    1.1 Minio 简介 1、MinIO 是在 Apache License v2.0 下发布的对象存储服务器。 它与 Amazon S3 云存储服务兼容。 它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM 映像。 对象的大小可以从几 KB ...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 361
精华内容 144
关键字:

minio数据恢复