다음 명령을 사용하여 Ubuntu Server 16.04.5 LTS를 실행하는 서버에 Ubuntu VM을 만들었습니다.
sudo virt-install \
--name TEST \
--memory 2048 \
--vcpus 2 \
--location 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/' \
--os-variant ubuntu16.04 \
--disk path=/pools/pool0/images/vm/test,size=150,bus=virtio,sparse=no,format=qcow2 \
--filesystem type=mount,source=/pools/pool0/volumes/shared,target=shared,mode=mapped \
--network network=vms \
--graphics none \
--virt-type kvm \
--hvm \
--console pty,target_type=serial \
--extra-args 'console=ttyS0,115200n8 serial'
shared
게스트에 대한 읽기 및 쓰기를 허용하기 위해 매핑된 액세스가 있는 공유 폴더를 만들었습니다 .
그런 다음 다음 명령을 사용하여 가상 머신을 시작합니다.
virsh start TEST --console
게스트 내에서 /etc/fstab
다음 줄을 사용하여 공유 폴더를 자동으로 마운트하도록 편집했습니다. 여기서 UID 1000은 내 사용자이고 GID 1000은 다른 구성원이 없는 연결된 그룹입니다.
shared /mnt 9p trans=virtio,version=9p2000.L,rw,uid=1000,gid=1000 0 0
/mnt
클라이언트 디렉터리 에서 실행하면 ls -ln
다음과 같은 출력이 제공됩니다.
$ ls -ln /mnt
total 42
drwxrwxr-x 8 1000 1000 8 Jul 28 23:52 Backups
drwxrwxr-x 6 1000 1000 6 Dec 28 00:15 Media
drwxrwxr-x 6 1000 1000 67 Mar 31 2018 Misc
drwxrwxr-x 2 1000 1000 4 Mar 31 2018 Recipes
ls -ln
디렉토리의 호스트에서 실행할 때 동일한 출력을 얻습니다 /pools/pool0/volumes/shared
.
$ ls -ln /pools/pool0/volumes/shared
total 42
drwxrwxr-x 8 1000 1000 8 Jul 28 23:52 Backups
drwxrwxr-x 6 1000 1000 6 Dec 28 00:15 Media
drwxrwxr-x 6 1000 1000 67 Mar 31 2018 Misc
drwxrwxr-x 2 1000 1000 4 Mar 31 2018 Recipes
게스트에서는 나처럼(권한이 없는 사용자) 파일과 폴더를 만들고 수정할 수 있습니다.
$ mkdir /mnt/Media/test-dir
$ touch /mnt/Media/test-file
$ ls -ln /mnt/Media
total 75
drwxrwxr-x 199 1000 1000 199 Dec 28 22:07 Movies
drwxrwxr-x 152 1000 1000 153 Dec 25 16:26 Music
drwxrwxr-x 75 1000 1000 75 Jul 16 21:02 Photos
drwxrwxr-x 2 1000 1000 2 Dec 29 20:30 test-dir
-rw-rw-r-- 1 1000 1000 0 Dec 29 20:31 test-file
drwxrwxr-x 15 1000 1000 15 Dec 18 15:40 TV Shows
그러나 호스트 운영 체제에서는 다음 파일과 폴더에 루트 액세스 권한만 부여됩니다.
$ ls -ln /pools/pool0/volumes/shared/Media
total 75
drwxrwxr-x 199 1000 1000 199 Dec 28 22:07 Movies
drwxrwxr-x 152 1000 1000 153 Dec 25 16:26 Music
drwxrwxr-x 75 1000 1000 75 Jul 16 21:02 Photos
drwx------ 2 0 0 2 Dec 29 20:30 test-dir
-rw------- 1 0 0 0 Dec 29 20:31 test-file
drwxrwxr-x 15 1000 1000 15 Dec 18 15:40 TV Shows
1000
서버에서 자동화 스크립트를 실행하고 있으며 이러한 스크립트가 작동하려면 UID, GID 1000
, 디렉터리 권한 (775) 및 파일 권한(664)을 사용하여 rwxrwxr-x
이러한 폴더와 디렉터리를 만들어야 합니다 rw-rw-r--
. 새 파일/디렉토리를 만들 때마다 수동으로 실행하고 싶지 않습니다 chmod
.chown
sudo
가상 머신을 처음부터 다시 설치하지 않고 이 문제를 해결해야 합니다.
답변1
궁금한 사람이 있으면 내 문제에 대한 해결책을 찾지 못했습니다. 하지만 저는 호스팅을 통해 이 작업을 수행했습니다.삼바 공유호스트(dperson/samba docker 컨테이너 사용)와 게스트에서 cifs-utils
다음 줄을 설치한 후 다음에 추가했습니다 \etc\fstab
.
//192.168.1.7/Shared /media/shared cifs guest,uid=1000,iocharset=utf8,vers=3.0 0 0
여기서 는 192.168.1.7
호스트 시스템의 IP 주소이고, Shared
는 Samba 공유의 이름이며, 은 /media/shared
게스트에서 공유를 마운트한 위치입니다.
답변2
mode=passthrough
대신 사용해야 합니다 mode=mapped
. 여기에 잘 설명되어 있습니다.https://rabexc.org/posts/p9-setup-in-libvirt.