Title: πŸ’Ώ LVM β€” Basics Group: Storage & FS Icon: πŸ’Ώ Order: 1 sudo pvcreate /dev/sdb # Initialize physical volume / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PV sudo vgcreate vg0 /dev/sdb # Create volume group / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ VG sudo lvcreate -n data -L 20G vg0 # Create logical volume / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ LV sudo mkfs.ext4 /dev/vg0/data # Make EXT4 filesystem / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π€Π‘ EXT4 sudo mkdir -p /data && sudo mount /dev/vg0/data /data # Mount volume / Π‘ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌ sudo lvextend -r -L +10G /dev/vg0/data # Extend LV and FS / Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ LV ΠΈ Π€Π‘ ## πŸ“¦ 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° состояния дисков ΠΈ LVM lsblk -f # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ устройств с Π€Π‘ / show block devices with filesystems blkid # вывСсти UUID ΠΈ Ρ‚ΠΈΠΏ Π€Π‘ / show filesystem UUIDs and types df -h # использованиС дисков Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ / human-readable disk usage du -sh /opt/3di.it/media-storage/* # Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ / size of each subdirectory pvs # список физичСских Ρ‚ΠΎΠΌΠΎΠ² / list physical volumes vgs # список Π³Ρ€ΡƒΠΏΠΏ Ρ‚ΠΎΠΌΠΎΠ² / list volume groups lvs # список логичСских Ρ‚ΠΎΠΌΠΎΠ² / list logical volumes lvdisplay # подробности LV / detailed logical volume info vgdisplay # подробности VG / detailed volume group info pvdisplay # подробности PV / detailed physical volume info --- ## πŸ’Ύ 2. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ диска lsblk # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ диска / list all block devices parted /dev/sdd -- mklabel gpt # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ GPT / create GPT partition table parted /dev/sdd -- mkpart primary 0% 100% # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» Π½Π° вСсь диск / create full-size partition lsblk /dev/sdd # ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ появился /dev/sdd1 / verify partition exists --- ## 🧩 3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ диска Π² LVM pvcreate /dev/sdd1 # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ физичСский Ρ‚ΠΎΠΌ / create physical volume vgextend data-vg /dev/sdd1 # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PV Π² Π³Ρ€ΡƒΠΏΠΏΡƒ / add PV to existing VG vgs # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ добавилось / verify VG extended --- ## πŸš€ 4. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ логичСского Ρ‚ΠΎΠΌΠ° ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы lvextend -l +100%FREE /dev/data-vg/datalv # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ LV Π½Π° всё свободноС мСсто / extend LV to all free space xfs_growfs /opt/3di.it/media-storage # Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ XFS ΠΎΠ½Π»Π°ΠΉΠ½ / grow XFS filesystem online resize2fs /dev/data-vg/datalv # Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ EXT4 / resize EXT4 filesystem df -h /opt/3di.it/media-storage # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ / verify final size --- ## πŸ”§ 5. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ mkfs.xfs /dev/data-vg/datalv # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ XFS Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму / make XFS filesystem mount /dev/data-vg/datalv /mnt/test # ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ / mount manually nano /etc/fstab # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку для автомонтирования / edit fstab for auto-mount mount -a # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ fstab / test all mounts --- ## 🧹 6. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ диска ΠΈΠ· LVM lvs -a -o +devices # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΈΡ… дисках LV / show which PVs LV uses pvmove /dev/sdd1 # пСрСнСсти Π΄Π°Π½Π½Ρ‹Π΅ с PV / move data off PV vgreduce data-vg /dev/sdd1 # ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ PV ΠΈΠ· VG / remove PV from VG pvremove /dev/sdd1 # ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ LVM ΠΌΠ΅Ρ‚ΠΊΠΈ / wipe LVM metadata --- ## 🧱 7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ LVM с нуля pvcreate /dev/sdd1 # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ PV / create physical volume vgcreate backup-vg /dev/sdd1 # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ VG / create volume group lvcreate -L 500G -n backup backup-vg # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ LV 500Π“Π‘ / create 500G LV mkfs.xfs /dev/backup-vg/backup # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π€Π‘ XFS / make XFS filesystem mkdir /mnt/backup # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ монтирования / create mount point mount /dev/backup-vg/backup /mnt/backup # ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ / mount filesystem --- ## 🧾 8. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ Ρ€Π΅ΠΌΠΎΠ½Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы e2fsck -f /dev/data-vg/datalv # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° EXT4 / check and fix EXT4 xfs_repair /dev/data-vg/datalv # Ρ€Π΅ΠΌΠΎΠ½Ρ‚ XFS (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ размонтирования) / repair XFS (unmounted) --- ## βš™οΈ 9. ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ lsblk -e7 -o NAME,SIZE,FSTYPE,MOUNTPOINT # чистый Π²Ρ‹Π²ΠΎΠ΄ устройств / clean block list udevadm info --query=all --name=/dev/sdd # ΠΈΠ½Ρ„ΠΎ ΠΎ дискС / get detailed device info smartctl -a /dev/sdd # SMART-диагностика / disk health check lvmconf --list # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ LVM / list LVM conf lvscan # Π½Π°ΠΉΡ‚ΠΈ всС LV / scan for logical volumes vgscan # Π½Π°ΠΉΡ‚ΠΈ всС VG / scan for volume groups pvscan # Π½Π°ΠΉΡ‚ΠΈ всС PV / scan for physical volumes --- ## πŸ€– 10. Автоматизация β€” expand_data_storage.sh #!/bin/bash # Авто-Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ диска Π² data-vg ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π€Π‘ / Auto-extend LVM storage NEW_DISK=$(lsblk -ndo NAME,TYPE | awk '$2=="disk" && $1!="sda" && $1!="sdb" && $1!="sdc"{print "/dev/"$1; exit}') if [ -z "$NEW_DISK" ]; then echo "No new disk detected!" # Ссли Π½Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Ρ… дисков / if no new disk found exit 1 fi echo "Using $NEW_DISK ..." # вывСсти имя Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ диска / show found disk parted $NEW_DISK -- mklabel gpt mkpart primary 0% 100% # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ GPT ΠΈ Ρ€Π°Π·Π΄Π΅Π» / create partition pvcreate ${NEW_DISK}1 # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ PV / create PV vgextend data-vg ${NEW_DISK}1 # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ / extend VG lvextend -l +100%FREE /dev/data-vg/datalv # Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ LV / extend LV xfs_growfs /opt/3di.it/media-storage # Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π€Π‘ / grow filesystem df -h /opt/3di.it/media-storage # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ / check result --- ## 🧰 11. ВосстановлСниС ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… vgcfgbackup # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… / backup LVM metadata vgcfgrestore data-vg # Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ / restore VG metadata vgreduce --removemissing data-vg # ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ диски / remove missing PVs from VG partprobe # ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² / refresh partition table rescan-scsi-bus.sh # ΠΏΠ΅Ρ€Π΅ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ устройства / rescan SCSI bus vgchange -ay # Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚ΠΎΠΌΠΎΠ² / activate all VGs --- ## 🧠 12. Часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ lvs # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ логичСскиС Ρ‚ΠΎΠΌΠ° / list logical volumes vgs # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚ΠΎΠΌΠΎΠ² / list volume groups pvs # ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ физичСскиС Ρ‚ΠΎΠΌΠ° / list physical volumes pvcreate /dev/sdX # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ физичСский Ρ‚ΠΎΠΌ / create PV vgextend data-vg /dev/sdX # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PV Π² VG / extend VG with new PV lvextend -l +100%FREE /dev/data-vg/datalv # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ LV / extend LV xfs_growfs /mount/point # Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ XFS / grow XFS filesystem df -h # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ использованиС / check filesystem usage xfs_info /mount/point # ΠΈΠ½Ρ„ΠΎ ΠΎ XFS / show XFS info pvmove /dev/sdX # пСрСнСсти Π΄Π°Π½Π½Ρ‹Π΅ с PV / move data off PV vgreduce data-vg /dev/sdX # ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ диск ΠΈΠ· VG / remove PV from VG vgcreate new-vg /dev/sdX # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ VG / create new volume group lvcreate -L 500G -n name vg # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ LV / create logical volume smartctl -a /dev/sdX # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ SMART / check disk health