github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/nydus/sealer_nydus_guide_zh.md (about)

     1  # 使用nydus加速文件分发
     2  
     3  [Nydus](https://github.com/dragonflyoss/image-service)的按需加载和预取能够极大地提高sealer分发rootfs的性能。
     4  
     5  ## 分发流程
     6  
     7  在服务端,先调用[nydus-image](https://github.com/dragonflyoss/image-service/blob/master/docs/nydus-image.md)将需要分发的目录转换为nydus格式的blob,并创建的同名clientfile目录存放生成的bootstrap文件和nydusd相关配置文件,然后启动[nydusd_http_server](https://github.com/dragonflyoss/image-service/blob/master/contrib/nydus-backend-proxy/README.md)服务。文件分发时,把[nydusd](https://github.com/dragonflyoss/image-service/blob/master/docs/nydusd.md)和相关脚本文件传输到目标节点上,在节点上启动nydusd服务,nydusd会从服务端按需拉取数据并缓存到本地,当所有数据都拉取完后,即使断开nydusdserver也不影响rootfs的使用。
     8  
     9  ## 快速使用
    10  
    11  ### 服务端
    12  
    13  #### nydusd_http_server start
    14  
    15  ```bash
    16  sh serverstart.sh
    17      -i xxx.xxx.xxx.xxx                            #服务端IP
    18      -d /path/to/rootfsdir1,/path/to/rootfsdir2    #需要分发的目录路径,支持多目录(用于支持sealer的都架构运行),用逗号隔开
    19  ```
    20  
    21  调用serverstart.sh脚本,输入需要分发的目录路径和服务端IP。
    22  这会调用nydus-image把指定的本地目录转换成blob保存在nydusblobs目录下,创建对应的同名目录(rootfsdir1和rootfsdir2),生成对应的bootstrap文件(rootfsdir1/rootfs.meta)和nydusd配置文件(rootfsdir1/httpserver.json),然后启动nydusdserver服务(nydusd_http_server.service)。
    23  
    24  #### nydusd_http_server clean
    25  
    26  ```bash
    27  sh serverclean.sh
    28  ```
    29  
    30  调用serverclean.sh,停止并删除nydusdserver服务
    31  
    32  ### 节点端
    33  
    34  #### nydusd start
    35  
    36  ```bash
    37  sh start.sh /path/to/mount
    38  ```
    39  
    40  运行nydusd_scp_file/start.sh脚本,输入挂载点路径。
    41  创建并启动nydusd.service,并在挂载点挂载一个overlay文件系统。nydusd会从服务器按需拉取文件并缓存在./cache目录下。
    42  
    43  #### nydusd clean
    44  
    45  ```bash
    46  umount /path/to/mount
    47  sh clean.sh
    48  ```
    49  
    50  先将挂载点umount,然后调用nydusd_scp_file/start.sh脚本,停止nydusd.service并清理nydusd相关文件和目录。
    51  
    52  ## nydus指南
    53  
    54  ### nydusdfile目录结构
    55  
    56  ```bash
    57  nydusdfile
    58  ├── rootfsdir1(clientfile)  # 需要被传输到远端节点的目录,与被分发的本地目录同名,包括nydusd和相应的脚本文件
    59  │   ├── clean.sh            # nydusd clean
    60  │   ├── httpserver.json     # nydusd配置文件,由serverstart.sh脚本生成,配置说明详见[nydusd](https://github.com/dragonflyoss/image-service/blob/master/docs/nydusd.md)
    61  │   ├── nydusd              # nydusd
    62  │   ├── nydusd.service      # systemd service文件,由start.sh脚本生成
    63  │   ├── rootfs.meta         # nydus-image转换目录时生成的bootstrap文件
    64  │   └── start.sh            # nydusd启动脚本
    65  └── serverfile              # nydusd server端文件
    66      ├── nydus-backend-proxy # nydusd HTTP服务器,将本地目录用作nydusd的blob后端
    67      ├── nydusblobs          # 存放生成的nydus blobs文件
    68      ├── nydus-image         # 将目录转换成nydus格式,生成元数据文件bootstrap
    69      ├── Rocket.toml         # nydus-backend-proxy的配置文件
    70      ├── serverclean.sh      # nydusd_http_server清理脚本
    71      └── serverstart.sh      # nydusd_http_server启动脚本
    72  ```
    73  
    74  ### nydus应用使用说明
    75  
    76  #### [nydus-image](https://github.com/dragonflyoss/image-service/blob/master/docs/nydus-image.md)
    77  
    78  将本地目录转换成nydus格式,生成bootstrap和blob:
    79  
    80  - bootstrap:存储目录元数据信息的文件
    81  - blob:存储目录里所有文件数据的文件
    82  
    83  ```bash
    84  nydus-image create \
    85    --bootstrap /path/to/bootstrap \      #指定生成的bootstrap文件路径
    86    --blob /path/to/blob \                #指定生成的blob存放目录
    87    /path/to/source/dir                   #被转换的本地目录
    88  ```
    89  
    90  #### [nydus-backend-proxy](https://github.com/dragonflyoss/image-service/blob/master/contrib/nydus-backend-proxy/README.md)
    91  
    92  nydusd HTTP服务器,将本地blobs目录用作nydusd的blob后端
    93  
    94  ```bash
    95  nydus-backend-proxy --blobsdir /path/to/nydus/blobs/dir   #输入blobs的存放目录
    96  ```
    97  
    98  #### [nydusd](https://github.com/dragonflyoss/image-service/blob/master/docs/nydusd.md)
    99  
   100  Linux FUSE user-space daemon,从后端拉取blob数据并解析成原来的文件数据,支持OSS、Localfs、Registry后端,通过配置文件配置存储后端。
   101  
   102  ```bash
   103  sudo nydusd \
   104    --config /path/to/nydusd-config.json \       #指定配置文件
   105    --mountpoint /path/to/mnt \                   #指定挂载点
   106    --bootstrap /path/to/bootstrap \              #bootstrap文件
   107    --log-level info
   108  ```
   109  
   110  ### 下载编译
   111  
   112  需要安装rust环境,推荐静态编译,避免部署时遇到glibc版本问题。
   113  
   114  ```bash
   115  git clone https://github.com/dragonflyoss/image-service.git
   116  cd image-service
   117  # build nydusd,nydus-images, x86_64
   118  make static-release
   119  cp target-fusedev/x86_64-unknown-linux-musl/release/nydusd /var/lib/sealer/nydusdfile/clientfile
   120  cp target-fusedev/x86_64-unknown-linux-musl/release/nydus-image /var/lib/sealer/nydusdfile/serverfile
   121  # build nydus-backend-proxy
   122  cd contrib/nydus-backend-proxy
   123  make static-release
   124  cp arget/x86_64-unknown-linux-musl/release/nydus-backend-proxy /var/lib/sealer/nydusdfile/serverfile
   125  ```