Làm thế nào tôi có thể lưu trữ các tập tin trong thư mục chia sẻ gắn kết?


18

Tôi đang chạy một máy ảo Fedora Workstation trên máy chủ Ubuntu.
Tôi đã tạo một thư mục /home/cl/sharetrong máy khách và gắn thư mục dùng chung /media/cl/system/virtual/sharedưới dạng root theo hướng dẫn từ linux-kvm :

mount -t 9p -o trans=virtio,version=9p2000.L /host /home/cl/share

Tôi có thể truy cập (đọc) các tệp và thư mục từ các thư mục dùng chung, nhưng tôi không thể ghi vào chúng.

Một ví dụ: Tôi đang cố lưu tập tin mount-share.txtvào thư mục /home/cl/share.

Cả hai thư mục (máy chủ và khách) đều có quyền đọc-ghi, tuy nhiên tôi nhận được lỗi

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Hệ điều hành máy chủ: Ubuntu 15.10 máy tính để bàn 64-bit
  • Hệ điều hành khách: Máy trạm Fedora 23 64-bit
  • Phần mềm ảo hóa: qemu qemu-kvm virt-manager
  • Vị trí hệ thống máy chủ: SSD tích hợp đầu tiên - định dạng ext4
  • Vị trí lưu trữ ảo: Ổ cứng tích hợp thứ 2 - định dạng NTFS
  • Vị trí thư mục dùng chung: Ổ cứng tích hợp thứ 2 - định dạng NTFS

người quản lý

Làm cách nào tôi có thể chia sẻ một thư mục giữa khách và máy chủ và cho phép khách truy cập đọc-ghi?

sudo chmod a+x /media/clsudo chmod -R 777 /mediakhông thay đổi tình hình.

Hệ thống khách:

ls -la /home/cl/share  
total 16  
drwxrwxrwx.  1 cl cl 4096 20. Jan 14:41 .  
drwx------. 18 cl cl 4096 24. Jan 19:11 ..  
drwxrwxrwx.  1 cl cl 4096 17. Dez 09:49 fedora  
drwxrwxrwx.  1 cl cl    0  5. Jan 11:43 solus  
drwxrwxrwx.  1 cl cl    0  6. Jan 12:10 ubuntu  
drwxrwxrwx.  1 cl cl 4096 24. Jan 16:58 various    

stat /home/cl/share  
  File: ‘/home/cl/share’  
  Size: 4096         Blocks: 8          IO Block: 4096   directory  
Device: 25h/37d    Inode: 135       Links: 1  
Access: (0777/drwxrwxrwx)  Uid: ( 1000/     cl)   Gid: ( 1000/      cl)  
Access: 2016-01-27 10:11:12.566303000 +0100  
Modify: 2016-01-26 21:34:48.647707300 +0100  
Change: 2016-01-26 21:34:48.647707300 +0100  
 Birth: -  

Hệ thống máy chủ:

ls -ld /media /media/cl/ /media/cl/system /media/cl/system/virtual/ /media/cl/system/virtual/share  
drwxr-xr-x  3 root root 4096 Okt 22 16:06 /media  
drwxr-x---+ 6 root root 4096 Jan 24 10:49 /media/cl/  
drwxrwxrwx  1 cl   cl   4096 Jan 19 15:28 /media/cl/system  
drwxrwxrwx  1 cl   cl   4096 Jan 22 13:43 /media/cl/system/virtual/  
drwxrwxrwx  1 cl   cl   4096 Jan 20 14:41 /media/cl/system/virtual/share  

getfacl /media/cl/  
getfacl: Removing leading '/' from absolute path names  
# file: media/cl/  
# owner: root  
# group: root  
user::rwx  
user:libvirt-qemu:--x  
user:cl:r-x  
group::---  
mask::r-x  
other::---

ps aux | grep virt
root       988  0.0  0.2 1207024 39888 ?       Ssl  12:48   0:01 /usr/sbin/libvirtd  
libvirt+  1204  0.0  0.0  45268  2720 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
root      1207  0.0  0.0  45240   368 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
cl        4204  0.0  0.0  15184  2532 pts/2    S+   14:06   0:00 grep --color=auto virt

Tại sao bạn sử dụng NTFS để chia sẻ giữa hai hệ thống linux? Bạn đã thử thiết lập tương tự với định dạng tệp gốc hơn chưa?
Klaatu von Schlacker

2
@KlaatuvonSchlacker: Ổ cứng thứ hai chứa mọi thứ không liên quan đến hệ điều hành và được định dạng bằng ntfs để linh hoạt trong trường hợp tôi muốn truy cập dữ liệu với các hệ điều hành khác, chẳng hạn như Windows. Khi tôi sử dụng VirtualBox để ảo hóa, mọi thứ đều hoạt động chính xác liên quan đến việc chia sẻ thư mục.
cl-netbox

Về thông báo lỗi khi cố gắng ghi vào hệ thống tập tin: bạn có gặp lỗi đó khi bạn cố gắng viết từ máy chủ hoặc chỉ khi bạn cố gắng ghi từ khách?
tự đại diện

@Wildcard: Tôi nhận được thông báo lỗi khi cố gắng viết (lưu trữ) thứ gì đó từ bên trong khách.
cl-netbox

Câu trả lời:


14

Tôi có thể tái tạo vấn đề trên hệ thống của tôi.
Vấn đề chính của bạn là các hạn chế ACL của máy chủ lưu trữ của bạn.
Vì lý do này, thay đổi các thuộc tính ACL của libvirt-qemungười dùng:

sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl

Thay đổi Modecài đặt Filesystem /host từ Passthroughthành Mapped.


Tại sao? Đó là lý do tại sao:

Hệ thống khách của bạn chạy dưới dạng libvirt-qemungười dùng và cài đặt ACL của bạn giới hạn quyền của người dùng này.

user:libvirt-qemu:--x

Đầu ra chính xác của getfaclnên là:

user:libvirt-qemu:rwx

2

Nếu mục tiêu chính của bạn chỉ là chia sẻ các tệp qua lại và bạn mở để sử dụng TCP, bạn chỉ có thể chia sẻ các tệp qua ssh hoặc tương tự.

Chẳng hạn, nếu bạn chuyển hướng một cổng cục bộ sang một cổng hợp lý trên máy khách, bạn sẽ có thể sử dụng cổng đó để truy cập. Tôi sử dụng SSH / SCP.

Khi khởi chạy VM của tôi:

qemu-kvm [all your usual qemu options] -net nic -net user -redir tcp:22122::22

Và sau đó để truy cập VM, tôi sử dụng SSH; Tôi mở một thiết bị đầu cuối trên máy chủ của mình:

scp -P22122 myfile.txt klaatu@localhost:~/ssh-share-dir

fishhoặc sshfstrong bất kỳ trình quản lý tệp GUI nào bạn sử dụng cũng hoạt động tốt, miễn là bạn đặt cổng.


1
Những gì tôi sẽ làm: trên máy chủ Ubuntu của bạn, định cấu hình máy chủ NFS phục vụ thư mục được chia sẻ (bạn có thể làm cho nó đọc-ghi cho khách hàng). Và chỉ cần gắn nó vào máy khách Fedora VM. Vì bạn có kết nối IP, điều này rất có thể sẽ hoạt động như một bùa mê.
KWubbufetowicz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.