Error when mount layer is too long and larger than PAGE_SIZE
[root@iZ7xvfzihsbriwt1vd8km8Z test]# mount -t overlay overlay -o lowerdir=/tmp/test/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/:/var/lib/sealer/data/overlay2/ecb3b2a34f2f12900fa534310981f4005cf086b1f531cac6f06d34b9e8305188:/var/lib/sealer/data/overlay2/ed7469d2eab043b863bb5b6f2a7f572e2ec7cdfda49460807de147bf6f9b4ee0:
**Omit verbose and repetitive parts**
:/var/lib/sealer/data/overlay2/ca7f48aa8c53bc5643da10211d73d807c47c07e7e7e91da4d7896e45d98eb879,upperdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/upper,workdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/work /var/lib/sealer/data/my-cluster/mount/linux_amd64_
mount: 特殊设备 overlay 不存在
[root@iZ7xvfzihsbriwt1vd8km8Z test]# data=lowerdir=。。。workdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/work
[root@iZ7xvfzihsbriwt1vd8km8Z test]# echo ${#data1}
4101
##mount successed
[root@iZ7xvfzihsbriwt1vd8km8Z test]# mount -t overlay overlay -o lowerdir=/tmp/test:/var/lib/sealer/data/overlay2/ecb3b2a34f2f12900fa534310981f4005cf086b1f531cac6f06d34b9e8305188:/var/lib/sealer/data/overlay2/ed7469d2eab043b863bb5b6f2a7f572e2ec7cdfda49460807de147bf6f9b4ee0:
**Omit verbose and repetitive parts**
:/var/lib/sealer/data/overlay2/ca7f48aa8c53bc5643da10211d73d807c47c07e7e7e91da4d7896e45d98eb879,upperdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/upper,workdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/work /var/lib/sealer/data/my-cluster/mount/linux_amd64_
[root@iZ7xvfzihsbriwt1vd8km8Z test]# data=lowerdir=/tmp/test:。。workdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/work
[root@iZ7xvfzihsbriwt1vd8km8Z test]# echo ${#data}
4043
[root@iZ7xvfzihsbriwt1vd8km8Z test]# getconf PAGESIZE
4096
An error occurs when the option data is too long and larger than PAGE_SIZE
[root@iZ7xvfzihsbriwt1vd8km8Z test]# sealer run hytest:1 -d
2022-06-22 17:48:00 [INFO] [local.go:288] Start to create a new cluster: master [172.16.191.229], worker []
2022-06-22 17:48:00 [DEBG] [default_image.go:73] image hytest:1 already exists
2022-06-22 17:48:00 [DEBG] [default_image.go:73] image hytest:1 already exists
2022-06-22 17:48:00 [DEBG] [overlay2.go:103] mount data : index=off,lowerdir=/var/lib/sealer/data/overlay2/4d096f8780fcba70268dc8223ca9e8ee29d4d27e35401c25b8c59dc7f8169160:/var/lib/sealer/data/overlay2/ecb3b2a34f2f12900fa534310981f4005cf086b1f531cac6f06d34b9e8305188:/var/lib/sealer/data/overlay2/ed7469d2eab043b863bb5b6f2a7f572e2ec7cdfda49460807de147bf6f9b4ee0:/var/lib/sealer/data/overlay2/fc1cb8bd2876eb0b594d4e57a818373e3de22392a9cbe2dcce5fe961f86537c9:/var/lib/sealer/data/overlay2/bd59ff91dc8f7c21e89c182a4539ed3d1be7fa40685a079006887a119548ea54:/var/lib/sealer/data/overlay2/3f0673e22f5936520508bc60597a89edb7242f07f9a26f4569a342da1cb4b064:/var/lib/sealer/data/overlay2/7a908baf8c71e90bf2fa151914ab9c8325f884895df21d919d7dc8ca029e86c2:/var/lib/sealer/data/overlay2/f2b313df0bae7320fe6dabb0a3cfea393d50a8857a1552d8107d8b156244a68b:/var/lib/sealer/data/overlay2/1c20e5f6855e681516a7e586388b73f81a417d3af245bac932ae819cd69f80be:/var/lib/sealer/data/overlay2/f2dcb71d3df3b33ffd45daa9a84c5202c2bee46919f4a63a8e7667399bc16433:/var/lib/sealer/data/overlay2/d2a98c2bf57e7b2bf57e93e941d8286427b7194fe7958be34f8a8591bc10ce3d:/var/lib/sealer/data/overlay2/da5eba3b8b5f305a9d696a40c030695270399db649dec3eea6ebf173a0b3b30d:/var/lib/sealer/data/overlay2/6e6939ad389770dec5530aaf9f8ea5c83ca6dc0e1541f5c3772acdc7f6943ef6:/var/lib/sealer/data/overlay2/3ec9c72da26add7ee6089de16f3751feefb08f66ccf45c2c0ed98d9328dd1708:/var/lib/sealer/data/overlay2/00eba3cee9c82c025118e7847f2a4ecc79a16c7f82173fa3a4ed05485bc0e5a8:/var/lib/sealer/data/overlay2/0f2b451161da4ece996b529d0bc263f3d03f3316af827280fb6e69349b7cb346:/var/lib/sealer/data/overlay2/2d80a24aa62960a9e07009f6d35ebd48a2a8c9d0be1a24f59730036b7fa4ac67:/var/lib/sealer/data/overlay2/4c01589b699a62aa6082aff496b3ded06b24bcf13003b18cf9d67bd026eb0536:/var/lib/sealer/data/overlay2/f02b8c4e306a0e41e01b233ccedf7328339ab89924ab26468a319f7dab0c911f:/var/lib/sealer/data/overlay2/350fb05e9ac597216f71ca1182eb88f63b65c3385ee95aab1ba3281b2f3455f1:/var/lib/sealer/data/overlay2/ffbd89efb1a10d0d84f0de6176c01cf25ece8b61036428d39f426bb5012ef156:/var/lib/sealer/data/overlay2/2aba6a83e2483ee225bdb2d6f77230f9ad14884d0d6baff312966c3dc2476c44:/var/lib/sealer/data/overlay2/c2f4cc136b77ed646cc0420895053dfc63588890ca65a7f71ec398a37a69f8ce:/var/lib/sealer/data/overlay2/dad0b5cd874df79749b55f889a105f3a8ce2fea179325d5f51763cbf865136d9:/var/lib/sealer/data/overlay2/b3dc87190873e3606ae83f4a1ae7387cfd2730c151a879dd862f2377779a784e:/var/lib/sealer/data/overlay2/2f0130ebcdf5398cf42c529fddcafba1d8a4656fed910ed90daedd3778ad3b3c:/var/lib/sealer/data/overlay2/f06be409999e226e7e92cd1f021fd120203a36fbbf2f1fb28d4180b047ed8f39:/var/lib/sealer/data/overlay2/e05409b6ddeca0acabe3aa5dc54ec977973dc81473ea49616c7366becf549dc9:/var/lib/sealer/data/overlay2/6fa3defd5d89d75696d1e3e6aa91af46f1a03b29b26b1319adcb5299385261d9:/var/lib/sealer/data/overlay2/6c7a9a0c8b7d14d8c0ecd691e74b58aaeab2363e5493f66d23b8b990aab44891:/var/lib/sealer/data/overlay2/1772b7628f0882fcf99fadb86dafd39bcd692ed1dca7505e286bc573261492ff:/var/lib/sealer/data/overlay2/82a2cdcb611aad706abdb98dc17bd01be185dd916de538f69e3e599eb0253e57:/var/lib/sealer/data/overlay2/b4b37cf66056f52576976ba23a2f3c2d88399da4966c0901bc9280a1bc2599d6:/var/lib/sealer/data/overlay2/90885048051145017618a1feff583277e6addcaba1b7881c4b9b6aba2bcbdd3d:/var/lib/sealer/data/overlay2/991f5ac6a53a461e665881efd2b0f2192abe883d1df1e1a585315806e39852ad:/var/lib/sealer/data/overlay2/95957f5ba51bbb88e38193aa02f299e2586c55c2503d0338ebcda12134085d7d:/var/lib/sealer/data/overlay2/12366e216d2f50ce9518fa5826ddfa8bf77416f7aed3e2dd42eba81c456c3b53:/var/lib/sealer/data/overlay2/4d5255f2ed34a1d7fb6fb835a77668feddd3e8c371341f5787960cbe63484a77:/var/lib/sealer/data/overlay2/18012945d3155afa555884f8a9174485d37ce65beb7b047e18082fe2b29a55ff:/var/lib/sealer/data/overlay2/e60db2dcac2748ff29b521e3a0d7595dd293b8a675c5fd53e7adf9510f93ff3a:/var/lib/sealer/data/overlay2/4a5da24dd6c513bccde5de2f127a32845b1e1c7d03cec2c84c1c43727c9fe494:/var/lib/sealer/data/overlay2/ca7f48aa8c53bc5643da10211d73d807c47c07e7e7e91da4d7896e45d98eb879,upperdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/upper,workdir=/var/lib/sealer/data/my-cluster/mount/linux_amd64_/work
Error: mount files failed error creating overlay mount to /var/lib/sealer/data/my-cluster/mount/linux_amd64_: no such file or directory
Usage:
sealer run [flags]
Examples:
create cluster to your bare metal server, appoint the iplist:
sealer run kubernetes:v1.19.8 --masters 192.168.0.2,192.168.0.3,192.168.0.4 \
--nodes 192.168.0.5,192.168.0.6,192.168.0.7 --passwd xxx
specify server SSH port :
All servers use the same SSH port (default port: 22):
sealer run kubernetes:v1.19.8 --masters 192.168.0.2,192.168.0.3,192.168.0.4 \
--nodes 192.168.0.5,192.168.0.6,192.168.0.7 --port 24 --passwd xxx
Different SSH port numbers exist:
sealer run kubernetes:v1.19.8 --masters 192.168.0.2,192.168.0.3:23,192.168.0.4:24 \
--nodes 192.168.0.5:25,192.168.0.6:25,192.168.0.7:27 --passwd xxx
create a cluster with custom environment variables:
sealer run -e DashBoardPort=8443 mydashboard:latest --masters 192.168.0.2,192.168.0.3,192.168.0.4 \
--nodes 192.168.0.5,192.168.0.6,192.168.0.7 --passwd xxx
Flags:
--cluster-name string set cluster name (default "my-cluster")
--cmd-args strings set args for image cmd instruction
-e, --env strings set custom environment variables
-h, --help help for run
-m, --masters string set Count or IPList to masters
-n, --nodes string set Count or IPList to nodes
-p, --passwd string set cloud provider or baremetal server password
--pk string set baremetal server private key (default "/root/.ssh/id_rsa")
--pk-passwd string set baremetal server private key password
--port uint16 set the sshd service port number for the server (default port: 22) (default 22)
--provider ALI_CLOUD set infra provider, example ALI_CLOUD, the local server need ignore this
-u, --user string set baremetal server username (default "root")
Global Flags:
--config string config file (default is $HOME/.sealer.json)
-d, --debug turn on debug mode
--hide-path hide the log path
--hide-time hide the log time
mount files failed error creating overlay mount to /var/lib/sealer/data/my-cluster/mount/linux_amd64_: no such file or directory
maybe we can mount via relative path
Docker solves page size limitation by applying symbolic links. Use the OverlayFS storage driver. You can go into the link and search key word "page size". Do you have time doing some researches about this issue, and see if we can fix this?
The key is they shorten the path.
we can create short symbolic links of all original data layers in the /var/lib/sealer/overlay2/l/ directory, and use relative paths (os.Chdir) to mount if mountData is greater than pagesize during mount.
I'm ok with the former part(symbolic links to original dir). But we have to think over the impact of applying relative paths
we can create short symbolic links of all original data layers in the /var/lib/sealer/overlay2/l/ directory, and use relative paths (os.Chdir) to mount if mountData is greater than pagesize during mount.
I checked the symbolic links of docker. And I agree with you way. We can't support 128 layers without processing paths in relative
Solved by integrating buildah. This issue is solved, but it should require the next version. Current version is v0.8.6.