User Tools

Site Tools


informatique:logiciels:proxmox

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatique:logiciels:proxmox [2024/08/25 07:16] – created pteuinformatique:logiciels:proxmox [2025/04/02 16:48] (current) – [Ajouter un SSD M.2 en passthrough sur une VM] pteu
Line 12: Line 12:
  
 src : https://forum.proxmox.com/threads/novnc-console-mouse-way-off-from-local-mouse.111559/ src : https://forum.proxmox.com/threads/novnc-console-mouse-way-off-from-local-mouse.111559/
 +
 +
 +=====Redimensionner la taille du stockage local-lvm=====
 +
 +Mon but est de redimensionner le stockage **local-lvm**, utilisé par Proxmox pour les images disque et les conteneurs ; je veux le réduire et de récupérer le téra libéré pour un usage tier.
 +
 +Par défaut Proxmox partitionne le disque ainsi:
 +<code bash>
 +lsblk
 +NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +nvme0n1            259:0    0  1.9T  0 disk
 +├─nvme0n1p1        259:1    0 1007K  0 part
 +├─nvme0n1p2        259:2    0    1G  0 part /boot/efi
 +└─nvme0n1p3        259:3    0  1.9T  0 part
 +  ├─pve-swap       252:   0    8G  0 lvm  [SWAP]
 +  ├─pve-root       252:   0   96G  0 lvm  /
 +  ├─pve-data_tmeta 252:2    0 15.9G  0 lvm
 +  │ └─pve-data     252:   0  1.7T  0 lvm
 +  └─pve-data_tdata 252:3    0  1.7T  0 lvm
 +    └─pve-data     252:   0  1.7T  0 lvm
 +</code>
 +Proxmox utilise LVM pour organiser les espaces de stockage de la 3e partition nvme0n1p3 : il créé un PV (physical volume), puis un VG (volume group) qui est par défaut divisé en LV (logical volume) pour la partition de swap (LV "swap"), / (LV "root"), et le **local-lvm** (LV "data"). PI le stockage **local** est quant à lui un sous-répertoire de / (''/var/lib/vz'').
 +
 +N'ayant pas réussi à réduire directement le volume "data":
 +<code bash>
 +lvresize -L -1500G /dev/pve/data
 +  Thin pool volumes pve/data_tdata cannot be reduced in size yet.
 +</code>
 +
 +... je l'ai supprimé (il faut au préalable le supprimer dans la webUI : Datacenter> Storage> local-lvm -> Remove)
 +<code bash>
 +lvremove /dev/pve/data
 +Do you really want to remove active logical volume pve/data? [y/n]: y
 +  Logical volume "data" successfully removed.
 +</code>
 +
 +J'en ai profité pour augmenter un peu le "root", tant qu'à faire:
 +<code bash>
 +lvresize -L +100G /dev/pve/root
 +  Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to 196.00 GiB (50176 extents).
 +  Logical volume pve/root successfully resized.
 +
 +resize2fs /dev/pve/root
 +resize2fs 1.47.0 (5-Feb-2023)
 +Filesystem at /dev/pve/root is mounted on /; on-line resizing required
 +old_desc_blocks = 12, new_desc_blocks = 25
 +The filesystem on /dev/pve/root is now 51380224 (4k) blocks long.
 +</code>
 +
 +J'ai programmé un check au prochain reboot, la partition étant montée il n'est pas possible de le faire à chaud:
 +<code bash>
 +e2fsck -f /dev/pve/root
 +e2fsck 1.47.0 (5-Feb-2023)
 +/dev/pve/root is mounted.
 +e2fsck: Cannot continue, aborting.
 +
 +touch /forcefsck
 +</code>
 +
 +Je recréé le volume "data", je le convertis en thin-pool :
 +<code bash>
 +lvcreate -L200G -n data pve
 +
 +lvconvert --type thin-pool pve/data
 +  Thin pool volume with chunk size 128.00 KiB can address at most 31.75 TiB of data.
 +  WARNING: Converting pve/data to thin pool's data volume with metadata wiping.
 +  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
 +Do you really want to convert pve/data? [y/n]: y
 +  Converted pve/data to thin pool.
 +</code>
 +
 +NB : il faut le faire avant d'allouer tout l'espace sinon on obtient l'erreur suivante:
 +<code bash>
 +lvconvert --type thin-pool /dev/pve/data
 +  Thin pool volume with chunk size 128.00 KiB can address at most 31.75 TiB of data.
 +  WARNING: Converting pve/data to thin pool's data volume with metadata wiping.
 +  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
 +Do you really want to convert pve/data? [y/n]: y
 +  Volume group "pve" has insufficient free space (0 extents): 25 required.
 + </code>
 +
 +Et j'alloue tout le reste de l'espace à un nouveau LV "datarv", que je formate en ext4 :
 +<code bash>
 +lvcreate -l100%VG -n data2rv pve
 +  Reducing 100%VG to remaining free space <1.47 TiB in VG.
 +  Logical volume "datarv" created.
 +
 +mkfs.ext4 -m 0 /dev/pve/datarv
 +mke2fs 1.47.0 (5-Feb-2023)
 +Discarding device blocks: done
 +Creating filesystem with 393879552 4k blocks and 98476032 inodes
 +Filesystem UUID: ee159ef2-f2d0-400b-af01-a8f6bf3593a3
 +Superblock backups stored on blocks:
 + 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
 + 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
 + 102400000, 214990848
 +
 +Allocating group tables: done
 +Writing inode tables: done
 +Creating journal (262144 blocks): done
 +Writing superblocks and filesystem accounting information: done
 +
 +echo "/dev/pve/datarv /mnt/datarv ext4 defaults 0 0" >>/etc/fstab
 +
 +mkdir -p /mnt/datarv
 +
 +mount /mnt/datarv
 +</code>
 +
 +Ce qui nous donne :
 +<code bash>
 +df -Th /mnt/datarv
 +Filesystem             Type  Size  Used Avail Use% Mounted on
 +/dev/mapper/pve-datarv ext4  1.5T   28K  1.5T   1% /mnt/datarv
 +
 +lvscan
 +  ACTIVE            '/dev/pve/data' [200.00 GiB] inherit
 +  ACTIVE            '/dev/pve/swap' [8.00 GiB] inherit
 +  ACTIVE            '/dev/pve/root' [196.00 GiB] inherit
 +  ACTIVE            '/dev/pve/datarv' [<1.47 TiB] inherit
 +
 +lsblk
 +NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +nvme0n1            259:0    0  1.9T  0 disk
 +├─nvme0n1p1        259:1    0 1007K  0 part
 +├─nvme0n1p2        259:2    0    1G  0 part /boot/efi
 +└─nvme0n1p3        259:3    0  1.9T  0 part
 +  ├─pve-swap       252:   0    8G  0 lvm  [SWAP]
 +  ├─pve-root       252:   0  196G  0 lvm  /
 +  ├─pve-data_tmeta 252:2    0  100M  0 lvm
 +  │ └─pve-data     252:   0  200G  0 lvm
 +  ├─pve-data_tdata 252:3    0  200G  0 lvm
 +  │ └─pve-data     252:   0  200G  0 lvm
 +  └─pve-datarv     252:   0  1.5T  0 lvm
 +</code>
 +
 +
 +=====Partager un stockage local entre les LXC=====
 +
 +(Inspiré de [[https://pve.proxmox.com/wiki/Unprivileged_LXC_containers|Using local directory bind mount points]])
 +Pour partager [[informatique:logiciels:proxmox#redimensionner_la_taille_du_stockage_local-lvm|la partition précédemment créée]] entre un ou plusieurs conteneurs non privilégiés (le 100 pour cet exemple) :
 +
 +Dans la conf de chaque LXC :
 +<code bash>
 +echo "mp0: /mnt/datarv,mp=/data
 +
 +# uid map: from uid 0 map 1005 uids (in the ct) to the range starting 100000 (on the host), 
 +# so 0..1004 (ct) → 100000..101004 (host)
 +lxc.idmap = u 0 100000 1005
 +lxc.idmap = g 0 100000 1005
 +# we map 1 uid starting from uid 1005 onto 1005, so 1005 → 1005
 +lxc.idmap = u 1005 1005 1
 +lxc.idmap = g 1005 1005 1
 +# we map the rest of 65535 from 1006 upto 101006, so 1006..65535 → 101006..165535
 +lxc.idmap = u 1006 101006 64530
 +lxc.idmap = g 1006 101006 64530" >>/etc/pve/lxc/100.conf
 +</code>
 +
 +Sur le système hôte:
 +<code bash>
 +echo "root:1005:1" >>/etc/subuid
 +echo "root:1005:1" >>//etc/subgid
 +chown -R 1005:1005 /mnt/datarv
 +</code>
 +
 +Puis redémarrer le conteneur:
 +<code bash>
 +lxc-stop 100 && lxc-start 100
 +</code>
 +
 +Liens:
 +  * https://www.closingtags.com/writing-to-bind-mounts-from-unprivileged-lxc-containers
 +
 +
 +=====Ajouter un SSD M.2 en passthrough sur une VM=====
 +
 +(ref: https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM) )
 +
 +En connectant un SSD m.2 sur le châssis ProxMox il est connecté en direct sur une ligne PCI express. On peut l'ajouter en mode Passthrough sur une VM dans Proxmox, pour maximiser les performances ; l'inconvénient est que ce disque sera physiquement attaché à la VM, celle-ci ne sera pas transférable sur un autre Proxmox si on a un cluster.
 +
 +La procédure se fait en ligne de commande :
 +
 +Préalable potentiel...
 +<code bash>
 +apt install -y lshw
 +</code>
 +
 +Vérifier qu'il est bien détecté par Proxmox
 +<code bash>
 +lshw -class disk -class storage
 +  *-nvme                    
 +       description: NVMe device
 +       product: WD Blue SN5000 4TB
 +       vendor: Sandisk Corp
 +       physical id: 0
 +       bus info: pci@0000:01:00.0
 +       logical name: /dev/nvme0
 +       version: 341600WD
 +       serial: 0123456789
 +       width: 64 bits
 +       clock: 33MHz
 +       capabilities: nvme pm msi msix pciexpress nvm_express bus_master cap_list
 +       configuration: driver=nvme latency=0 nqn=nqn.2018-01.com.wdc:guid:E8238FA6BF53-0001-001B444A41DF50DA state=live
 +       resources: irq:16 memory:5f600000-5f603fff
 +</code>
 +
 +On doit le retrouver dans /dev/disk/by-id , en recherchant sur sa marque ou son serial:
 +<code bash>
 +ls -l /dev/disk/by-id | grep 0123456789
 +lrwxrwxrwx 1 root root 13 Apr  2 18:10 nvme-WD_Blue_SN5000_4TB_0123456789 -> ../../nvme0n1
 +lrwxrwxrwx 1 root root 13 Apr  2 18:10 nvme-WD_Blue_SN5000_4TB_0123456789_1 -> ../../nvme0n1
 +</code>
 +
 +Cette commande barbare résume tous les disques détectés:
 +<code bash>
 +lsblk |awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;printf $0" ";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'|grep -v -E 'part|lvm'
 +NAME                         MAJ:MIN RM    SIZE RO TYPE MOUNTPOINTS DEVICE-ID(S)
 +sda                            8:0    0    3.6T  0 disk   /dev/disk/by-id/wwn-0x5002538f00000000 /dev/disk/by-id/usb-Samsung_PSSD_T5_EVO_0123456789-0:0 /dev/disk/by-id/ata-Samsung_Portable_SSD_T5_EVO_0123456789
 +nvme0n1                      259:0    0    3.6T  0 disk   /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a41df50da /dev/disk/by-id/nvme-WD_Blue_SN5000_4TB_0123456789 /dev/disk/by-id/nvme-WD_Blue_SN5000_4TB_0123456789_1
 +nvme1n1                      259:1    0    1.9T  0 disk   /dev/disk/by-id/nvme-ORICO_0123456789 /dev/disk/by-id/nvme-eui.34354536423432374ce0001830363033 /dev/disk/by-id/nvme-ORICO_0123456789_1
 +</code>
 +
 +Dans notre cas il s'agit du WD 4 To ; on l'ajoute à la VM 103 en tant que disque scsi1 avec la commande:
 +<code bash>
 +qm set 103 -scsi1 /dev/disk/by-id/nvme-WD_Blue_SN5000_4TB_0123456789
 + update VM 103: -scsi1 /dev/disk/by-id/nvme-WD_Blue_SN5000_4TB_0123456789
 +</code>
 +
 +Vérification:
 +<code bash>
 +grep 0123456789 /etc/pve/qemu-server/103.conf
 +scsi1: /dev/disk/by-id/nvme-WD_Blue_SN5000_4TB_0123456789,size=3907018584K
 +</code>
 +
 +Si on change d'avis, on peut toujours enlever le disque de la VM :
 +<code bash>
 +qm unlink 103 --idlist scsi1
 +</code>
informatique/logiciels/proxmox.1724570162.txt.gz · Last modified: 2024/08/25 07:16 by pteu