[Devel] [Q] Connecting a physical HDD/partition to a container

Evgenii Shatokhin eshatokhin at virtuozzo.com
Thu Jan 28 06:29:19 PST 2016


27.01.2016 22:04, Stanislav Kinsburskiу пишет:
>
> 27 янв. 2016 г. 5:30 PM пользователь Evgenii Shatokhin <eshatokhin at virtuozzo.com> написал:
>>
>> 27.01.2016 19:08, Stanislav Kinsburskiy пишет:
>>>
>>>
>>> 27.01.2016 16:02, Evgenii Shatokhin пишет:
>>>> 27.01.2016 16:38, Igor Sukhih пишет:
>>>>> On 01/27/2016 04:29 PM, Stanislav Kinsburskiу wrote:
>>>>>> 27 янв. 2016 г. 14:24 пользователь Evgenii Shatokhin
>>>>>> <eshatokhin at virtuozzo.com> написал:
>>>>>>> I created it with
>>>>>>> vzctl set 101 --devnodes sdb1:rw --save
>>>>>>>
>>>>>>> The node is now present in the CT. However, if I try to mount it in
>>>>>>> the CT (mount /dev/sdb1 /mnt), no error is reported but mount seems to
>>>>>>> have no effect. No files are seen in /mnt that are present on that
>>>>>>> partition.
>>>>>>>
>>>>>>> So, I guess, additional steps are needed?
>>>>>>>
>>>>>>>> You might need sysfs layout.
>>>>>>>> Please, strace your mount call and send it as a reply (attached).
>>>>>>>>
>>>>>>> Here it is.
>>>>>>>
>>>>>>> As far as I can see in strace log, mount tries to open
>>>>>>> /sys/dev/block/8:17, indeed. This file is present on the host but
>>>>>>> not in
>>>>>>> the CT.
>>>>>>>
>>>>>> Expectable.
>>>>>> Then you have to expose sysfs for this device to the container.
>>>>>> Igor, could you advice, please?
>>>>>>
>>>>>
>>>>> Lets try to use secondary disk feature first
>>>>>
>>>>> vzctl set VEID --device-add hdd --device /dev/sda --save
>>>>
>>>> No luck. The CT fails to start with "Failed to configure disk" after
>>>> that.
>>>>
>>>
>>> You can do it manually.
>>> There is a file:
>>>
>>> /sys/fs/cgroup/ve/c<CTID>/ve.sysfs_permissions
>>>
>>> which controls sysfs layout.
>>>
>>> Please, reply with results of:
>>>
>>> # ls -l /sys/dev/block/8:17
>>>
>>> I'll send you, what you have to write to this file.
>>
>> Thanks for your help!
>>
>> With libvzctl-7.0.172, vzctl set VEID --device-add <...> worked.
>>
>> Now I am curious about these sysfs settings, just in case I will need do
>> such things manually in the future.
>>
>> Could you still explain what should be done there?
>>
>> Here is the output you asked for:
>>
>> # ls -l /sys/dev/block/8:17
>> lrwxrwxrwx 1 root root 0 Jan 27 12:26 /sys/dev/block/8:17 ->
>> ../../devices/pci0000:00/0000:00:0d.0/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1
>>
>> # ls -l
>> /sys/devices/pci0000:00/0000:00:0d.0/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1
>> total 0
>> -r--r--r-- 1 root root 4096 Jan 27 16:20 alignment_offset
>> -r--r--r-- 1 root root 4096 Jan 27 12:26 dev
>> -r--r--r-- 1 root root 4096 Jan 27 16:20 discard_alignment
>> drwxr-xr-x 2 root root    0 Jan 27 16:20 holders
>> -r--r--r-- 1 root root 4096 Jan 27 16:20 inflight
>> -r--r--r-- 1 root root 4096 Jan 27 12:26 partition
>> drwxr-xr-x 2 root root    0 Jan 27 16:20 power
>> -r--r--r-- 1 root root 4096 Jan 27 16:20 ro
>> -r--r--r-- 1 root root 4096 Jan 27 12:26 size
>> -r--r--r-- 1 root root 4096 Jan 27 12:26 start
>> -r--r--r-- 1 root root 4096 Jan 27 16:20 stat
>> lrwxrwxrwx 1 root root    0 Jan 27 12:26 subsystem ->
>> ../../../../../../../../../../class/block
>> drwxr-xr-x 2 root root    0 Jan 27 16:20 trace
>> -rw-r--r-- 1 root root 4096 Jan 27 12:26 uevent
>>
>
> It's simple.
> Yes have to write these paths to /sys/fs/cgroup/ve/c<CTID>/ve.sysfs_permissions like this:
>
> # echo "path rx" >> /sys/fs/cgroup/ve/<CTID>/ve.sysfs_permissions
>
> Notes:
> 1) "rx" are permissions: read and execute. Check host sysfs, what permissions to set.
> 2) writing the whole path won't work. You have to share one directory by another.
> I.e. in case of "devices/pci0000:00/0000:00:0d.0/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1" you have to expose devices first, then devices/pci0000:00 and so on.
> 3) you have to expose the whole path to the symlink as well.
> 4) all paths are relative to sysfs root. I.e. no /sys/ in the beginning.
> 5) using of non-canonical paths (with ../) can be not supported.
>
> IOW, you have to expose desired part of sysfs node by node.
>

Ah, I see. Thanks for the info!

> Good luck.



More information about the Devel mailing list