LXC ধারকগুলির ভিতরে লুপ মাউন্টিং ফাইলগুলিকে অনুমতি দেবেন?


10

আমি একটি এলএক্সসি ধারকটির মধ্যে একটি মাএএস সার্ভার স্থাপন করার চেষ্টা করছি।

আমি যখন PXE ফাইলগুলি আমদানি করি তখন লুপ ডিভাইসগুলি মাউন্ট করতে সক্ষম হওয়া দরকার।

লুপ মাউন্ট করার অনুমতি দেওয়ার জন্য আমি ধারক কনফিগারেশন ফাইলে নিম্নলিখিত বিকল্পগুলি সেট করেছি, তবে আমি কিছু অনুপস্থিত।

lxc.cgroup.devices.allow = b 7:* rwm
lxc.cgroup.devices.allow = c 10:237 rwm

আমি নিম্নলিখিত ত্রুটিটি পেয়েছি কারণ স্ক্রিপ্টটি কোনও ফাইলকে মাউন্ট করতে পারে না:

mount: cannot mount block device /dev/loop0 read-only
Wed, 13 Nov 2013 07:26:41 +0000: failed to mount /var/lib/maas/ephemeral/precise/ephemeral/i386/20131010/disk.img
Traceback (most recent call last):
  File "/usr/sbin/maas-import-ephemerals", line 26, in <module>
    main(args)
  File "/usr/lib/python2.7/dist-packages/provisioningserver/import_images/ephemerals_script.py", line 428, in main
    target.sync(source, args.path)
  File "/usr/lib/python2.7/dist-packages/simplestreams/mirrors/__init__.py", line 85, in sync
    return self.sync_index(reader, path, data, content)
  File "/usr/lib/python2.7/dist-packages/simplestreams/mirrors/__init__.py", line 237, in sync_index
    self.sync(reader, path=epath)
  File "/usr/lib/python2.7/dist-packages/simplestreams/mirrors/__init__.py", line 83, in sync
    return self.sync_products(reader, path, data, content)
  File "/usr/lib/python2.7/dist-packages/simplestreams/mirrors/__init__.py", line 315, in sync_products
    self.insert_item(item, src, target, pgree, ipath_cs)
  File "/usr/lib/python2.7/dist-packages/provisioningserver/import_images/ephemerals_script.py", line 251, in insert_item
    self.extract_item(path, flat)
  File "/usr/lib/python2.7/dist-packages/provisioningserver/import_images/ephemerals_script.py", line 295, in extract_item
    tarball, target_dir, temp_location=self._simplestreams_path())
  File "/usr/lib/python2.7/dist-packages/provisioningserver/import_images/ephemerals_script.py", line 124, in extract_image_tarball
    call_uec2roottar(image, os.path.join(target_dir, 'dist-root.tar.gz'))
  File "/usr/lib/python2.7/dist-packages/provisioningserver/import_images/ephemerals_script.py", line 97, in call_uec2roottar
    subprocess.check_call(["uec2roottar"] + list(args))
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '[u'uec2roottar', u'/var/lib/maas/ephemeral/precise/ephemeral/i386/20131010/disk.img', u'/var/lib/maas/ephemeral/precise/ephemeral/i386/20131010/dist-root.tar.gz']' returned non-zero exit status 1
root@maaslxc2:~# mount /dev/loop0 /mnt
mount: block device /dev/loop0 is write-protected, mounting read-only
mount: cannot mount block device /dev/loop0 read-only

সুতরাং, লুপ ডিভাইসগুলি মাউন্ট করার জন্য কনটেইনার কনফিগারেশনে আমার কী পরিবর্তন করতে হবে? এটি প্রদর্শিত হয় যে এটি কেবল একটি মাএএস সমস্যা নয়, তবে একটি বিধিনিষেধ যা কোনও কিছুর (কেবল মাএএস নয়) সমস্যার কারণ হতে পারে যার জন্য কোনও এলএক্সসি পাত্রে একটি ফাইল লুপ করতে হবে।

উত্তর:


10

আপনি যে ইস্যুটি চালিয়ে যাচ্ছেন তা হ'ল অ্যাপারমোর with 'dmesg'আপনাকে সম্ভবত এমন কিছু দেখাতো:

[ 4822.366235] type=1400 audit(1384973058.254:52): apparmor="DENIED" operation="mount" 
info="failed type match" error=-13 parent=1272 profile="lxc-container-default" 
name="/mnt/" pid=1273 comm="mount" fstype="ext4" srcname="/dev/loop0/" flags="ro"

আপনি আপনার lxc ধারকটিকে 2 টির মধ্যে একটির মাধ্যমে ext2, ext3, বা ext4 ফাইল সিস্টেমের মাউন্টগুলি করতে পারবেন। সরললিস্টটি কেবলমাত্র lxc কনফিগারেশনে নিম্নলিখিতগুলি যুক্ত করা ( /var/lib/lxc/$NAME/config):

lxc.aa_profile = unconfined
lxc.cgroup.devices.allow = b 7:* rwm
lxc.cgroup.devices.allow = c 10:237 rwm

আরও প্রয়োজনীয় একটি সীমাবদ্ধ সমাধান যা এখনও প্রয়োজনীয় অনুমতিগুলি মঞ্জুর করে তা হল নিম্নলিখিতটি করা:

$ sudo tee /etc/apparmor.d/lxc/lxc-custom-mounts <<EOF
# copied and modified from /etc/apparmor.d/lxc/lxc-default
profile lxc-container-extx-mounts flags=(attach_disconnected,mediate_deleted) {
  #include <abstractions/lxc/container-base>
  mount fstype=ext4 -> /**,
  mount fstype=ext3 -> /**,
  mount fstype=ext2 -> /**,
}
EOF

# reload the lxc-containers profile
$ sudo apparmor_parser --replace /etc/apparmor.d/lxc-containers

$ sudo lxc-create -t ubuntu-cloud -n source-saucy-amd64 -- --release=saucy --arch=amd64

$ name="test1"
$ cfg=/var/lib/lxc/$name/config;
$ sudo lxc-clone -o source-saucy-amd64 -n "$name"

## modify the config to use the profile created above
$ sudo grep "#allow-loop" "$cfg" || sudo tee -a "$cfg" <<EOF
#allow-loop
lxc.aa_profile = lxc-container-extx-mounts
lxc.cgroup.devices.allow = b 7:* rwm
lxc.cgroup.devices.allow = c 10:237 rwm
EOF

তারপরে আপনি যা যা কিছু সহজেই সহজে পাত্রে এটি কার্যকর করে তা যাচাই করতে পারেন:

$ truncate --size 100M my.img
$ mkfs.ext4 -F my.img
$ sudo mount -o loop,ro my.img /mnt
$ ls /mnt
lost+found
$ sudo umount /mnt

আমি এটি সমাধান করার জন্য বাগ 1257389 খালি করেছি । আশা করি শিগগিরই কোনও কোনও পাত্রে ম্যাস-আমদানি-ইফেমেরালগুলি কাজ করবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.