所有操作均以root
用户的身份完成。
/usr/share/perl5/PVE/VZDump/LXC.pm
上的备份脚本设置了默认的挂载点
my $default_mount_point = "/mnt/vzsnap0";
但是无论我使用GUI还是命令行,都会出现以下错误:
ERROR: Backup of VM 103 failed - mkdir /mnt/vzsnap0:
Permission denied at /usr/share/perl5/PVE/VZDump/LXC.pm line 161.
该脚本中的第160-161行是:
my $rootdir = $default_mount_point;
mkpath $rootdir;
安装后,在创建任何映像或进行任何备份之前,我设置了两件事。
/mnt/backups
的SSHFS挂载Linux LVM
添加驱动器的操作很简单:
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/sdd1
pvcreate /dev/sde1
vgextend pve /dev/sdb1
vgextend pve /dev/sdc1
vgextend pve /dev/sdd1
vgextend pve /dev/sde1
lvextend pve/data /dev/sdb1
lvextend pve/data /dev/sdc1
lvextend pve/data /dev/sdd1
lvextend pve/data /dev/sde1
有关SSHFS的说明,请参见我的博客文章:https://6ftdan.com/allyourdev/2018/02/04/proxmox-a-vm-server-for-your-home/
以下是与文件系统目录权限相关的文件和详细信息。
cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 9.0M 1.6G 1% /run
/dev/mapper/pve-root 37G 8.0G 27G 24% /
tmpfs 7.9G 43M 7.8G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/fuse 30M 20K 30M 1% /etc/pve
sshfs@10.0.0.10:/mnt/raid/proxmox_backup 1.4T 725G 672G 52% /mnt/backups
tmpfs 1.6G 0 1.6G 0% /run/user/0
ls -dla /mnt
drwxr-xr-x 3 root root 0 Aug 12 20:10 /mnt
ls /mnt
backups
ls -dla /mnt/backups
drwxr-xr-x 1 1001 1002 80 Aug 12 20:40 /mnt/backups
我希望成功的命令是:
vzdump 103 --compress lzo --node ProxMox --storage backup --remove 0 --mode snapshot
为进行记录,容器映像的大小仅为8GB。
克隆容器起作用,快照起作用。
问):您如何运行perl脚本?
A),通过GUI单击立即备份,然后选择存储空间(我有backups
和local
,两者都产生此错误),然后选择容器的状态({Snapshot
,Suspend
,Stop
每个都会产生相同的错误),然后选择压缩类型(none
,{{1} }和LZO
都产生相同的错误)。完成所有设置后,点击备份并获得以下输出。
gzip
由此您可以看到命令是INFO: starting new backup job: vzdump 103 --node ProxMox --mode snapshot --compress lzo --storage backups --remove 0
INFO: Starting Backup of VM 103 (lxc)
INFO: Backup started at 2019-08-18 16:21:11
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: Passport
ERROR: Backup of VM 103 failed - mkdir /mnt/vzsnap0: Permission denied at /usr/share/perl5/PVE/VZDump/LXC.pm line 161.
INFO: Failed at 2019-08-18 16:21:11
INFO: Backup job finished with errors
TASK ERROR: job errors
。我也尝试过使用SSH Shell登录并运行此命令,并得到相同的错误。
Q)可能是设置了目录的“不可变”属性。尝试vzdump 103 --node ProxMox --mode snapshot --compress lzo --storage backups --remove 0
,看看lsattr /
是否设置了小写的“ i”属性。
A) /mnt
root@ProxMox:~# lsattr /
问)?您可以手动创建--------------e---- /tmp
--------------e---- /opt
--------------e---- /boot
lsattr: Inappropriate ioctl for device While reading flags on /sys
--------------e---- /lost+found
lsattr: Operation not supported While reading flags on /sbin
--------------e---- /media
--------------e---- /etc
--------------e---- /srv
--------------e---- /usr
lsattr: Operation not supported While reading flags on /libx32
lsattr: Operation not supported While reading flags on /bin
lsattr: Operation not supported While reading flags on /lib
lsattr: Inappropriate ioctl for device While reading flags on /proc
--------------e---- /root
--------------e---- /var
--------------e---- /home
lsattr: Inappropriate ioctl for device While reading flags on /dev
lsattr: Inappropriate ioctl for device While reading flags on /mnt
lsattr: Operation not supported While reading flags on /lib32
lsattr: Operation not supported While reading flags on /lib64
lsattr: Inappropriate ioctl for device While reading flags on /run
且没有任何问题吗?
A) /mnt/vzsnap0
root@ProxMox:~# mkdir /mnt/vzsnap0
Q)您可以在干净的VM中复制它吗?
A)我不知道。我没有额外的系统可以尝试,需要包装上的容器。在ProxMox的VM内尝试...我不确定。我想我可以尝试,但我真的不想只是暂时。也许其他所有方法都失败了。
Q)如果您查看mkdir: cannot create directory ‘/mnt/vzsnap0’: Permission denied
,似乎有一个ID为drwxr-xr-x 1 1001 1002 80 Aug 12 20:40 /mnt/backups
的用户可以访问备份,因此连root也不会能够写。您需要检查为什么它是1001,以及1001
代表哪个组。然后,您可以将1002
以及GUI运行所在的用户添加到ID为root
的组中。
A)我写到1002
目录没有问题。刚才做了/mnt/backups
,就成功了。
答案 0 :(得分:2)
根据消息
mkdir / mnt / vzsnap0:权限被拒绝
很明显,问题出在 / mnt 目录的权限。
可能是目录的“ 不可变”属性已设置。
尝试lsattr /
,看看/mnt
是否设置了小写的“ i ”属性。
作为reference:
lsattr输出中的小写字母i表示文件或目录设置为不可变:即使root用户也必须先清除此属性,然后再对其进行任何更改。使用root用户访问权限,您应该可以使用
chattr -i /mnt
删除它,但是可能首先要这样做是有原因的;您应该先找出原因,然后再将其删除。可能存在安全隐患。
如果是这种情况,请尝试:
chattr -i /mnt
将其删除。
参考
根据inode flags—attributes manual page:
FS_IMMUTABLE_FL'i': 该文件是不可变的:不允许对该文件进行任何更改 内容或元数据(权限,时间戳,所有权,链接 计数等等)。 (此限制甚至适用于 ruser。)只有特权进程(CAP_LINUX_IMMUTABLE)可以 设置或清除此属性。
答案 1 :(得分:1)
只要赏金仍然有效,我都会将其提供给解决此处所述问题的合法答案。
我在这里为大家写的是解决方法,我已经想到了哪种方法可行。请注意,它非常慢。
由于我能够写入网络上另一个系统上的import math
def trackflow(f_in, f_out, r, H, h, t_max, t_open):
t = 0.1
vi = 0
hi = 0
ti = 0
while ti < t_max and hi < H and hi >= 0:
if ti == t_open:
v_2 = vi + (f_in - f_out)*t
h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)
t_2 = ti + 0.1
print(round(v_2,1))
print(round(h_2,2))
print(round(t_2,1))
continue
else:
f_out = 0
v_2 = vi + (f_in - f_out)*t
h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)
t_2 = ti + 0.1
print(round(v_2,1))
print(round(h_2,2))
print(round(t_2,1))
vi = v_2
hi = h_2
ti = t_2
目录 ,因此我继续将Perl脚本更改为指向/mnt/backups
而不是/mnt/backups/vzsnap0
。
对于任何能够获得/mnt/vzsnap0
目录作为安装路径以成功为备份脚本安装/mnt
的人来说,赏金仍然存在。
答案 2 :(得分:0)
1) 也许您的“ / mnt / vzsnap0”被挂载为只读?
它可能会告诉您:
/dev/pve/root / ext4 errors=remount-ro 0 1
'errors = remount-ro'表示在错误重新安装分区(如只读)的情况下。也许此设置也适用于您已挂载的文件系统。
您可以按照以下链接尝试重新安装驱动器吗? https://askubuntu.com/questions/175739/how-do-i-remount-a-filesystem-as-read-write
如果成功,然后手动创建目录吗?
包含目录的分区的文件系统是什么。[?] 仔细检查目录的权限,或者它是否是 链接到另一个目录。如果目录是NFS挂载, rootsquash可以防止root书写。
检查属性(lsattr)。检查ACL(getfacl)。检查 selinux的限制。 (ls -Z)
如果文件系统已损坏,则可能最初是通过RW挂载的,但是 当您尝试写入不良区域时,请更改为RO。
答案 3 :(得分:0)
太好了,事实证明,使用Ubuntu Make的issue已有很长的历史了,很多人都遇到过。
我在上面的链接中看到了Ubuntu开发人员提到的解决方法。
只需执行以下步骤:
sudo -s
unset SUDO_UID
unset SUDO_GID
然后运行umake 以正常安装应用程序。
您现在应该能够安装到所需的任何目录。完美地为我工作。
答案 4 :(得分:0)
如果启用了SE Linux,请尝试ls laZ /mnt
查看安全性上下文。然后可能需要重新标记。 errors=remount-ro
也应进行调查(但是,除非lsattr
索引节点本身已损坏,否则/mnt
不太可能失败)。为这些安装点创建一个新的目录索引节点可能值得一试;如果可行,可以交换它们。
答案 5 :(得分:0)
只需将 /mnt/backups 更改为 /mnt/sshfs/backups
vzdump 将起作用。