sealer icon indicating copy to clipboard operation
sealer copied to clipboard

Error when mount layer is too long and larger than PAGE_SIZE

Open bxy4543 opened this issue 3 years ago • 7 comments

[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

bxy4543 avatar Jun 22 '22 09:06 bxy4543

[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

bxy4543 avatar Jun 22 '22 09:06 bxy4543

maybe we can mount via relative path

bxy4543 avatar Jun 22 '22 10:06 bxy4543

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?

justadogistaken avatar Jun 22 '22 11:06 justadogistaken

The key is they shorten the path.

justadogistaken avatar Jun 22 '22 11:06 justadogistaken

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.

bxy4543 avatar Jun 23 '22 02:06 bxy4543

I'm ok with the former part(symbolic links to original dir). But we have to think over the impact of applying relative paths

justadogistaken avatar Jun 23 '22 02:06 justadogistaken

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

justadogistaken avatar Jun 23 '22 03:06 justadogistaken

Solved by integrating buildah. This issue is solved, but it should require the next version. Current version is v0.8.6.

justadogistaken avatar Aug 15 '22 07:08 justadogistaken