macOS区分大小写APFS¶
当我在 Ubuntu镜像(采用tini替代systemd) 的容器中 安装Anaconda ,遇到了一个和底层文件系统 区分大小写
兼容性问题:
macOS的 APFS 在操作系统安装时,默认配置了
case insensitive
,也就是不区分大小写当使用 Docker 卷 将macOS上的文件系统目录映射到容器内部时,由于Linux文件系统是区分大小写的,所以在一些情况下会出现错乱,例如 安装Anaconda 安装报错,类似找不到文件等情况
验证方法可以采用类似如下:
$ cd /home2/testing/anaconda3
$ echo A > A
$ echo a > a
$ cat a
a
$ cat A
a
创建新的 case sensitive
文件系统¶
APFS 使用了 Containter 容器来分隔文件系统,类似于 ZFS 和 Btrfs 的子卷
备注
虽然 macOS 内置的 Disk Utility
也能够创建分区,但是APFS并不推荐使用分区:
类似 ZFS ,整个磁盘都是一个大的存储池,只需要通过子卷来分隔系统,可以充分使用磁盘
只有在同一个Mac上安装其他操作系统,如Linux时候,才需要使用分区创建
在APFS上添加子卷:
注意创建子卷要选择 APFS (Case-sensitive)
格式:
现在,就可以重新创建 Ubuntu镜像(采用tini替代systemd) 的运行容器,映射新创建的区分大小写文件系统到容器内部,就不会导致Linux文件的问题