Wiki source code of Storage
Last modified by Kevin Wiki on 2025/09/23 07:42
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | Adding external high speed VM storage to proxmox. Find the new drive and erase it and then format using parted: | ||
| 2 | |||
| 3 | ```bash | ||
| 4 | # format drive and create partition | ||
| 5 | parted /dev/nvme0n1 mklabel gpt | ||
| 6 | parted /dev/nvme0n1 mkpart primary ext4 0% 100% | ||
| 7 | |||
| 8 | # create a ext4 filesystem | ||
| 9 | mkfs.ext4 /dev/nvme0n1p1 | ||
| 10 | |||
| 11 | # create dir to mount drive to | ||
| 12 | mkdir -p /mnt/vmstorage | ||
| 13 | |||
| 14 | # add to fstab | ||
| 15 | printf "\n/dev/nvme0n1p1 /mnt/vmstorage ext4 defaults 0 0" >> /etc/fstab | ||
| 16 | |||
| 17 | # mount drives defined in fstab | ||
| 18 | mount | ||
| 19 | ``` | ||
| 20 | |||
| 21 | Add the new device in proxmox UI or in `/etc/pve/storage.cfg` to: | ||
| 22 | |||
| 23 | ```cfg | ||
| 24 | dir: nvme | ||
| 25 | path /mnt/vmstorage | ||
| 26 | content backup,rootdir,snippets,iso,vztmpl,images | ||
| 27 | prune-backups keep-all=1 | ||
| 28 | shared 0 | ||
| 29 | ``` | ||
| 30 | |||
| 31 | ## Moving images from LVM storage | ||
| 32 | |||
| 33 | The actual disk is mounted as a mapper device. If is was LXC container with id 401, a disk might look like `/dev/mapper/pve-vm--401--disk--0` | ||
| 34 | |||
| 35 | ```bash | ||
| 36 | $ fdisk -l | ||
| 37 | ... | ||
| 38 | |||
| 39 | Disk /dev/mapper/pve-vm--121--disk--0: 12 GiB, 12884901888 bytes, 25165824 sectors | ||
| 40 | Units: sectors of 1 * 512 = 512 bytes | ||
| 41 | Sector size (logical/physical): 512 bytes / 512 bytes | ||
| 42 | I/O size (minimum/optimal): 65536 bytes / 65536 bytes | ||
| 43 | Disklabel type: gpt | ||
| 44 | Disk identifier: E6B137D0-95DE-4C44-B5D1-1C74DE40F141 | ||
| 45 | |||
| 46 | Device Start End Sectors Size Type | ||
| 47 | /dev/mapper/pve-vm--121--disk--0-part1 227328 25165790 24938463 11.9G Linux filesystem | ||
| 48 | /dev/mapper/pve-vm--121--disk--0-part14 2048 10239 8192 4M BIOS boot | ||
| 49 | /dev/mapper/pve-vm--121--disk--0-part15 10240 227327 217088 106M EFI System | ||
| 50 | ``` | ||
| 51 | |||
| 52 | Identify the vm disk path using the command: | ||
| 53 | |||
| 54 | ```bash | ||
| 55 | pvesm path STORAGE:vm-VM_ID-disk-0 | ||
| 56 | ``` | ||
| 57 | |||
| 58 | Stop the container or vm: | ||
| 59 | |||
| 60 | ```bash | ||
| 61 | qm stop 401 | ||
| 62 | or | ||
| 63 | lxc-stop 401 | ||
| 64 | ``` | ||
| 65 | |||
| 66 | Then convert the the storage with: | ||
| 67 | |||
| 68 | ```bash | ||
| 69 | qemu-img convert -p -O qcow2 $(pvesm path local-lvm:vm-401-disk-0) vm-401-disk-0.qcow2 | ||
| 70 | ``` | ||
| 71 | |||
| 72 | note, here we also move the storage from `local-lvm` to `nvme`. |