Π Π°Π±ΠΎΡ‚Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡƒΠ»Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· libvirt-python

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с libvirt ΠΈ создания ΠΏΡƒΠ»ΠΎΠ² хранСния Ρ‡Π΅Ρ€Π΅Π· Python, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ libvirt-python, которая являСтся Python-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΎΠΉ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ libvirt API. ΠŸΡƒΠ»Ρ‹ хранСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ рСсурсов хранСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ диски, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы, сСтСвыС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для своих Π½ΡƒΠΆΠ΄. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ pool_name, pool_type, source_host, source_path ΠΏΡ€ΠΈ создании ΠΏΡƒΠ»Π° хранСния.

ОписаниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

pool_name:

Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя ΠΏΡƒΠ»Π° хранСния Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ хоста libvirt. Имя ΠΏΡƒΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ обращСния ΠΊ Π½Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· API ΠΈΠ»ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ управлСния.

pool_type:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. НапримСр, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ dir для простой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° локальной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, disk для Ρ†Π΅Π»ΠΎΠ³ΠΎ физичСского диска, logical для логичСского Ρ‚ΠΎΠΌΠ° LVM, netfs для сСтСвой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NFS) ΠΈ Π΄Ρ€.

source_host:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ имя хоста ΠΈΠ»ΠΈ IP-адрСс сСрвСра, Π³Π΄Π΅ находится рСсурс. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ особСнно Π²Π°ΠΆΠ΅Π½ для Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² хранСния, ΠΊΠ°ΠΊ netfs, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ источник сСтСвого Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

source_path:

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ хостС ΠΈΠ»ΠΈ локальном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Для сСтСвых Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу Π½Π° сСтСвом сСрвСрС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡƒΡ‚ΡŒ ΠΊ NFS ΡˆΠ°Ρ€Π΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΏΡƒΠ»Π° Ρ‚ΠΈΠΏΠ° dir Π½Π° Python с использованиСм libvirt-python:

import libvirt

conn = libvirt.open('qemu:///system')  # ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ libvirt

xml_desc = """
<pool type='dir'>
    <name>example_dir_pool</name>
    <target>
        <path>/home/user/virtual_disks</path>
    </target>
</pool>
"""
try:
    pool = conn.storagePoolDefineXML(xml_desc, 0)
    pool.create()  # Активация ΠΏΡƒΠ»Π°
    pool.setAutostart(1)  # Автозагрузка ΠΏΡƒΠ»Π° ΠΏΡ€ΠΈ стартС систСмы
except libvirt.libvirtError as e:
    print(f"An error occurred: {str(e)}")
finally:
    conn.close()

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаёт Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΠ» хранСния для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… дисков Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /home/user/virtual_disks . Если Π±Ρ‹ ΠΌΡ‹ создавали ΠΏΡƒΠ» для сСтСвой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ source_host ΠΈ source_path Π² XML-описаниС.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ создания ΠΏΡƒΠ»Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² XML-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libvirt ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡƒΠ»ΠΎΠ² хранСния для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ рСсурсов, доступных для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы хранСния ΠΈ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных pool_type Π² libvirt:

  • dir: Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΏΡƒΠ»Π° ссылаСтся Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС хоста. Π€Π°ΠΉΠ»Ρ‹ Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния дисков Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.
<pool type='dir'>
  <name>mydirpool</name>
  <source>
    <path>/var/lib/libvirt/images</path>
  </source>
</pool>
  • fs: ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСтСвыС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы (NFS, GlusterFS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅).
<pool type='fs'>
  <name>mynfspool</name>
  <source>
    <host name='nfsserver.example.com'/>
    <path>/mnt/nfs_share</path>
  </source>
</pool>
  • netfs: Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΏΡƒΠ»Π° обСспСчиваСт доступ ΠΊ сСтСвым Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ систСмам Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NFS ΠΈΠ»ΠΈ CIFS/SMB.
<pool type='netfs'>
  <name>mynetfspool</name>
  <source>
    <host name='nfsserver.example.com'/>
    <dir path="/mnt/nfs_share"/> # дирСктория Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ хостС
  </source>
  <target>
    <path>/mnt/nfs</path> # дирСктория для монтирования NFS
  </target>
</pool>
  • logical: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ логичСскиС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ LVM (Logical Volume Manager).
<pool type='logical'>
  <name>mylogicalpool</name>
  <source>
    <device path='/dev/vg_name'/>
  </source>
</pool>
  • disk: Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с физичСскими устройствами носитСлСй, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ТСсткиС диски.
<pool type='disk'>
  <name>mydiskpool</name>
  <source>
    <device path='/dev/sdb'/>
  </source>
</pool>
  • iscsi: ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iSCSI устройства для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.
<pool type='iscsi'>
  <name>myiscsipool</name>
  <source>
    <host name='iscsihost.example.com'/>
    <device path='iqn.2017-03.org.example:disk1'/>
  </source>
</pool>
  • scsi: Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΡƒΠ»Π° прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ устройства SCSI.
<pool type='scsi'>
  <name>myscsipool</name>
  <source>
    <adapter type='scsi_host' name='host1'/>
    <target dev='sda'/>
  </source>
</pool>
  • mpath: Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΏΡƒΠ»Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ устройства mpath (MultiPath) для хранСния Π΄Π°Π½Π½Ρ‹Ρ….
<pool type='mpath'>
  <name>mympathpool</name>
  <source>
    <adapter type='fc_host' name='host1'/>
    <device name='mpath/mpath1'/>
  </source>
</pool>

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… управлСния ΠΏΡƒΠ»Π°ΠΌΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… рСсурсов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ libvirt Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ ΠΏΡƒΠ»Ρƒ:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡƒΠ»Π°: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° для хранСния Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈΠ»ΠΈ дисков.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π°: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ»Π° ΠΈ освобоТдСниС занятых ΠΈΠΌ рСсурсов.

Активация/дСактивация ΠΏΡƒΠ»Π°: Активация ΠΈΠ»ΠΈ дСактивация ΠΏΡƒΠ»Π°, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ использованиС.

НазначСниС ΠΏΡ€Π°Π² доступа: Настройка ΠΏΡ€Π°Π² доступа ΠΊ ΠΏΡƒΠ»Ρƒ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΈΠ· ΠΏΡƒΠ»Π°: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… рСсурсов Π² ΠΏΡƒΠ» ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… рСсурсов ΠΈΠ· Π½Π΅Π³ΠΎ.

ИзмСнСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡƒΠ»Π°: ИзмСнСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡƒΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΊ источнику хранСния ΠΈΠ»ΠΈ ΠΏΡ€Π°Π² доступа.

ОбновлСниС ΠΏΡƒΠ»Π°: ОбновлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡƒΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ послСдниС измСнСния ΠΈ обновлСния.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ использования: ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ использования рСсурсов Π² ΠΏΡƒΠ»Π΅.

Π Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ восстановлСниС: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΏΡƒΠ»Π° ΠΈ восстановлСниС ΠΈΠ· Π½ΠΈΡ….

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π°: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ хост ΠΈΠ»ΠΈ миграция Π΅Π³ΠΎ рСсурсов Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π­Ρ‚ΠΎ лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΏΡƒΠ»Π°ΠΌΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… рСсурсов. КаТдая опСрация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ шаги ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ инструмСнтов управлСния рСсурсами.