美文网首页
(3)UFS

(3)UFS

作者: 爱喝咖啡的土拨鼠 | 来源:发表于2018-01-02 18:20 被阅读0次

    Union File System

    Union File System是一种为linux FressBSD和NetBSD操作系统,把其他文件系统联合到一个联合挂载点的文件系统服务。

    AUSF 时Docker选用的第一种驱动。AUFS具有快速启动容器、高效利用存储和内存的优点,直到现在AUFS仍是Docker支持的一种存储驱动类型。接下来,介绍一下Docker是如何利用AUFS存储image和container的。

    手动实现AUFS

    1. 建一个文件夹名为aufs
    2. 在aufs下创建文件夹mnt作为挂载点
    3. 在aufs下创建container-layer文件夹,创建container-layer.txt 内容为"I am container layer"
    4. 在aufs下创建四个文件夹分别为 image-layer1 image-layer2 image-layer3 image-layer4
    5. 在上一条的四个文件夹内分别写四个文件,分别为image-layer1.txt ... 内容分别为 "I am image layer 1"...
    6. 把建container-layer和4个image-layer用aufse的方式挂载到mnt(默认情况下 dirs 指定的左边第一个目录是read-write权限,其他的都是read-only)
    maojiancai@bogon:~/mygo/aufs$ tree
    .
    ├── container-layer
    │   └── container-layer.txt
    ├── image-layer1
    │   └── imagge-layer1.txt
    ├── image-layer2
    │   └── image-layer2.txt
    ├── image-layer3
    │   └── image-layer3.txt
    ├── image-layer4
    │   └── image-layer4.txt
    └── mnt
    6 directories, 5 files
    

    挂载
    sudo mount -t aufs -o dirs=./container-layer:./image-layer4:./image-layer3:./image-layer2:./image-layer1 none ./mnt

    .
    ├── container-layer
    │   └── container-layer.txt
    ├── image-layer1
    │   └── imagge-layer1.txt
    ├── image-layer2
    │   └── image-layer2.txt
    ├── image-layer3
    │   └── image-layer3.txt
    ├── image-layer4
    │   └── image-layer4.txt
    └── mnt
        ├── container-layer.txt
        ├── image-layer2.txt
        ├── image-layer3.txt
        ├── image-layer4.txt
        └── imagge-layer1.txt
    

    查看文件读写权限,如第六步所说,只有container-layer 有读写权限

    cat /sys/fs/aufs/si_b9dfd42676b40eb5/*

    (si_b9dfd42676b40eb5 为系统为此aufs新建的)

    maojiancai@bogon:/$ cat /sys/fs/aufs/si_b9dfd42676b40eb5/*
    /home/maojiancai/mygo/aufs/container-layer=rw
    /home/maojiancai/mygo/aufs/image-layer4=ro
    /home/maojiancai/mygo/aufs/image-layer3=ro
    /home/maojiancai/mygo/aufs/image-layer2=ro
    /home/maojiancai/mygo/aufs/image-layer1=ro
    64
    65
    66
    67
    68
    /home/maojiancai/mygo/aufs/container-layer/.aufs.xino
    
    1. 现在往mnt 下imagge-layer2.txt里随便再写些东西

    echo -e "write to layer 2" >>/home/maojiancai/mygo/aufs/mnt/image-layer2.txt

    1. 查看 mnt 下的image-layer2.txt
    maojiancai@bogon:~/mygo/aufs/mnt$ cat image-layer2.txt
    I am image layer 2
    write to layer 2
    
    1. 查看原image-layer2.txt
    maojiancai@bogon:~/mygo/aufs$ cat image-layer2/image-layer2.txt
    I am image layer 2
    

    ==我们可以得出结论mnt下挂载的文件更新了,而原来的文件未改变==

    docker 容器也是如此,只有contanier层是可以读写的,下层的image 是只读的,至此我们完成了一个简单的aufs

    相关文章

      网友评论

          本文标题:(3)UFS

          本文链接:https://www.haomeiwen.com/subject/ogeqnxtx.html