Commit Graph

59 Commits

Author SHA1 Message Date
dc992e7b89 plugin: remove volume_snapshot_list
which was only used by replication, but now replication uses
volume_snapshot_info instead.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-11-08 10:35:53 +01:00
ffc31266da tree-wide: fix typos with codespell
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-06-23 08:28:48 +02:00
609f117ff2 ZFSPlugin: untaint lun number
ZFS over iSCSI fetches information about the disk-images via ssh, thus
the obtainted data is tainted (perlsec (1)).

Since pvedaemon runs with '-T' enabled trying to start a VM via GUI/API failed,
while it still worked via `qm` or `pvesh`.

The issue surfaced after commit cb9db10c1a9855cf40ff13e81f9dd97d6a9b2698 in
pve-common ('run_command: improve performance for logging and long lines'),
and results from concatenating the original (tainted) buffer to a variable,
instead of a captured subgroup.

Untainting the value in ZFSPlugin should not cause any regressiosn, since the
other 3 target providers already have a match on '\d+' for retrieving the
lun number.

reported via pve-user [0].

reproduced and tested by setting up a LIO-target (on top of a virtual PVE),
adding it as storage and trying to start a guest (with a disk on the
ZFS over iSCSI storage) with `perl -T /usr/sbin/qm start $vmid`

[0] https://lists.proxmox.com/pipermail/pve-user/2020-October/172055.html

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2020-10-09 18:07:37 +02:00
a44c0147bc Use a common interface for find_free_diskname
We can use 'list_images' to get the desired volume IDs in
'find_free_diskname' for most plugins. For the two LVM plugins, 'list_images'
potentially skips untagged volumes, so we keep the custom version. For the
RBD plugin, 'list_images' is much more costly than the custom version, so we
keep the custom version.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2019-12-12 12:52:43 +01:00
c243be83b4 Parse volname where needed
The common ZFSPlugin was missing volume name parsing
in a few places. This was not a problem for standard
volumes, but broke functionnalities (like resize,
snapshot, rollback) with linked clones as the name of
the zvol must be extracted from the entry in the config
(remove base-X-disk-Y prefix)

Signed-off-by: Daniel Berteaud <daniel@firewall-services.com>
2019-09-23 16:09:10 +02:00
46c6107eb1 Linux LIO/targetcli support
Introducing LIO/targetcli support allowing to use recent linux
distributions as iSCSI targets for ZFS volumes.

In order for this to work, two preconditions have to be met:

1. the portal has to be set up correctly using targetcli
2. the initiator has to be authorized to connect to the target
   based on the initiator's InitiatorName

When adding a LIO iSCSI target, a new "LIO target portal group" field needs
to be correctly populated in the "Add: ZFS over iSCSI" popup, containing the
fitting "LIO target portal group" name (typically something like 'tpg1').

Signed-Off-By: Udo Rader <udo.rader@bestsolution.at>
Tested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2018-08-02 14:56:20 +02:00
9edb99a5a7 add Storage::get_bandwidth_limit helper
Takes an operation, an optional requested bandwidth
limit override, and a list of storages involved in the
operation and lowers the requested bandwidth against global
and storage-specific limits unless the user has permissions
to change those.
This means:
 * Global limits apply to all users without Sys.Modify on /
   (as they can change datacenter.cfg options via the API).
 * Storage specific limits apply to users without
   Datastore.Allocate access on /storage/X for any involved
   storage X.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-01-31 12:25:32 +01:00
7118dd916b PVE::Storage::storage_can_replicate - hew helper 2017-06-27 06:17:58 +02:00
8b622c2dff PVE::Storage::volume_snapshot_list - remove $prefix parameter
Always return the full list of snapshots. Users of this library can easily
filter with a simply 'grep' instead.
2017-06-07 06:20:07 +02:00
17be2e9a0c volume_snapshot_list: remove $ip parameter
We want to handle ssh connections somewhere else (not inside the
storage plugins).
2017-05-10 07:02:42 +02:00
3d4949692a Revert "Include new storage function volume_send."
This reverts commit b76774e57f.
2017-05-10 06:58:44 +02:00
aefe82ea03 Include new storage function volume_snapshot_list.
Returns a list of snapshots (youngest snap first) form a given volid.
It is possible to use a prefix to filter the list.
2017-04-28 10:05:27 +02:00
b76774e57f Include new storage function volume_send.
If the storage backend support import and export
we can send the contend to a remote host.
2017-04-28 10:05:27 +02:00
ef881e10eb fixes for new PVE::RPCEnvironment implementation
Use PVE::RPCEnvironment->is_worker() instead of
PVE::RPCEnvironment::is_worker().
2017-01-19 09:14:41 +01:00
1993540bf8 fix #1122: correctly create LUNs for linked clones 2016-09-29 08:42:26 +02:00
21430e5088 Use is_worker to decide default timeout for ZFS
Bump timeout to 1 hour if running in a worker and no timeout
specified.
2016-03-15 16:50:00 +01:00
19e5596a74 increase timeout for ZFSPugin
This is useful on large zfs pools because they take longer to response.
2016-01-25 10:48:16 +01:00
281f958706 Fixed ZFS over iSCSI snapshot rollback
I converted several zfs_request($class, ...) calls to $class->zfs_request(...) calls in ZFSPoolPlugin.pm and removed a superfluous $class parameter in ZFSPlugin.pm.

Fixes #816

Signed-off-by: Phillip Schichtel <phillip.public@schich.tel>
2015-11-18 11:00:40 +01:00
27a2764632 fix bug #809: inheritance from ZFSPoolPlugin is not possible because we have to handle there subvols too. 2015-11-06 08:34:49 +01:00
02e797b8e1 extend functionality to (de)activate_volumes with snapshots
this extension provide the capability to activate or deactivate snapshot,
so we can use this e.g. for LXC backup in snapshot mode.
2015-09-22 12:18:09 +02:00
9660f71602 fix to prevent uninitialized variable massage. 2015-08-28 11:24:49 +02:00
e67069eb58 path: corretly implement path to snapshots 2015-08-27 12:03:46 +02:00
4eff810db8 Bug-fix alloc_image in ZFSPlugin.pm
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-02-16 11:31:28 +01:00
b3f302c638 call volume_rollback_is_possible from PVE::Storage::volume_snapshot_rollback
That way it is automatically called for all plungins.
2015-02-12 09:28:52 +01:00
1597f1f9ad Storage: add method volume_rollback_is_possible
add method volume_rollback_is_possible and redactor
Improve error handling
If snapshot is not reversible catch it before vm will lock and shutdown.
This is the case if zfs has an younger snapshot.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-02-12 09:15:02 +01:00
a4034b9f19 zfspoolplugin: fix volume_resize
copy methode volume_resize form ZFSPlugin.pm to ZFSPoolPlugin.pm
refactor volume_resize

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-02-10 12:48:34 +01:00
86d472394a zfs: auto import after reboot
this is necessary, because after a reboot all pools except rpool are gone

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-02-09 12:26:28 +01:00
9b61bc9e88 zfs: fix wait by alloc_image
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-30 06:24:56 +01:00
0a3d992f72 move activate_storage into ZFSPoolPlugin 2015-01-24 14:30:10 +01:00
85fda4dd7f rename ZFSDirPlugin to ZFSPoolPlugin
Turned out it makes no sense to duplicated DirPlugin features. So I
also changed the name to make it less confusing. So we can only
create zvols inside a zfs pool with this plugin.
2015-01-24 14:17:55 +01:00
d3a282e83e zfs: move and refactor code
copy and modify create_base and refactor clone_image

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:38 +01:00
2fc59177c9 zfs: implement zfs_get_latest_snapshot
To improve code sharing.
2015-01-23 12:57:38 +01:00
2b40ffaea9 zfs: move code fix metode call
duplicate code because can't refactor volume_snapshot_rollback

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:38 +01:00
d4c63dc147 zfs: move code
move activate_volume deactivate_volume from ZFSPlugin to ZFSDirPlugin

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:38 +01:00
ca04180f3b zfs: move methode list_image
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:38 +01:00
cc80ed9c00 zfs: move code
move parse_volume from ZFSPlugin to ZFSDirPlugin, to avoid duplication

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:38 +01:00
b3ba95e493 zfs: move some code
move the most part of alloc_image to ZFSDirPlugin

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-01-23 12:57:28 +01:00
52f8fb7191 zfs: remove duplicate $object definition 2015-01-22 10:22:54 +01:00
b5e5f7e3a8 zfs: move common code to ZFSDirPlugin 2015-01-22 10:10:35 +01:00
6b5bca68e6 zfs: white space cleanups 2015-01-22 09:45:32 +01:00
34eaae3f8d zfs: cleanup zfs_get_lu_name 2015-01-22 09:40:22 +01:00
e8004c9cb7 zfs: cleanup zfs_request 2015-01-22 09:37:52 +01:00
7730694e54 zfs: make zfs_request a virtual method
So that we can move common code into ZFSDirPlugin class.
2015-01-22 09:29:13 +01:00
5bb8e01076 ZFSDirPlugin: new plugin for local zfs storage
We also want to use this as base class for ZFSPlugin, to increase
code sharing.
2015-01-22 07:54:10 +01:00
3fad260379 rbd, zfs, sheepdog: bugfix : fix alloc_image if name is specified
Currently vmstate snapshot with rbd have wrong name,
because rbd alloc_image don't care if $name is provided

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-21 08:03:08 +01:00
f236eaf80e Storage Plugins: extend clone_image by snap parameter and add support to RBDPlugin
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 07:54:36 +02:00
a315b9ff56 Added code to abort a snapshot rollback in ZFS if the snapshot selected is not the most recent. This is to avoid lu deletion when trying to rollback to a snapshot that isn't the newest.
Signed-off-by: Chris Allen <Chris Allen>
2014-06-25 09:14:03 +02:00
454c15e270 Added target-group and host-group options for ZFS comstar views. Use "comstar_tg" and "comstar_hg" in "/etc/pve/storage.pm".
Signed-off-by: Chris Allen <Chris Allen>
2014-06-25 09:13:54 +02:00
70986fd9e4 Added "nowritecache" option to ZFS storage plugin. Turns off write caching on Comstar and Istgt LUNs created by the plugin. Has no effect on IET, as IET always uses write-through caching for blockio volumes not in read-only mode.
Signed-off-by: Chris Allen <Chris Allen>
2014-06-25 09:13:03 +02:00
a9bd7bdfdc Added sparse zvol support to ZFS.
To enable, add "sparse" to the ZFS storage section, you wish to use it on, in "/etc/pve/storage.pm"

Signed-off-by: Chris Allen <Chris Allen>
2014-06-25 09:11:49 +02:00