Andmesalvestus üldiselt - Linux

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Andmesalvestuseks kasutatakse linux keskkonnas nn plokk-seadmeid, nt

  • /dev/sda - füüsilises arvutis sata seade
  • /dev/vda - qemu virtuaalses arvutis plokkseade
  • /dev/mapper/multipath-01 - multipath
  • /dev/md127 - mdadm
  • /dev/mapper/c_system - cryptosetup
  • /dev/drbd0 - drbd
  • /dev/mapper/vg_nimi-lv-nimi_01 - lvm
  • /dev/zd123 - zfs volume tüüpi dataset
  • /dev/nvme0n1 - füüsilises arvutis sata seade
  • /dev/rbd1 - ceph rados block device
  • /dev/sdb - iscsi klienti juures olev üle võrgu külge ühendatud plokkseade

kus

  • /dev/mapper algusega seadmed kuuluvad ühte seadmete gruppi nimega 'device mapper'
  • zfs on täiesti omaette nö alamsüsteemi linux kernelis
  • btrfs on täiesti omaette nö alamsüsteemi linux kernelis
  • mdadm on täiesti omaette nö alamsüsteemi linux kernelis

Mõisted

  • BIO - block input-output
  • DM - device mapper

Device mapper

Väited

  • 'device mapper' nagu nimigi ütleb tegeleb seadme teisendusega, mitte niivõrd seadme kui terviku, aga mingi hulga seadmega seotud andmete addresseerimisega
  • 'device mapper' ülesanne on midagi sarnast nagu linux operatsioonisüsteemi mälu halduse puhul 'virtuaalne mälu' nähtusega
  • teisendusi saab olla üksteise järel mitu
  • linux keskkonnas on võimalik andmesalvestust korraldada ilma device mapper abita, nt moodustada failisüsteemi otse füüsilise plokkseadme peale
  • device mapper võimaldab nö staatilisi mappinguid - multipath, lvm
  • device mapper võimaldab nö dünaamilisi mappinguid - cryptsetup, vdo

device mapper puhul saab täheldada selliseid variatsioone adresseerimise ja sisuga tegelemise mõttes

  • teisendus toimub adresseerimise mõttes staatiliselt - lineaarselt 1:1 aga erinevatel positsioonidel (nt dm-linear)
  • teisendus toimub adresseerimise mõttes dünaamiliselt - pathide valiku mõttes (nt dm-multipath)
  • teisendus toimub dünaamiliselt sisu mõttes - nt krüptimine (nt dm-crypt), nt pakkimine ja deduplikeerimine (dm-vdo)
  • device mapper töötab plokkseadmega (mitte nt failiga; kui soovida failiga töötada, siis tuleks esmalt nt losetup abil failile moodustada vastav plokkseade)

dm-linear primitiivi kasutamine käsitsi

Olgu kasutada üks plokkseade, mille järjestikulistel plokkidel (sektoritel) asub ext4 failisüsteem. Üks viis sellist moodustist tekitada on lvm paigutamine nö füüsilisele plokkseadmele

root@varundus-2nd:~# vgcreate vg_vdg /dev/vdg
  Physical volume "/dev/vdg" successfully created.
  Volume group "vg_vdg" successfully created

root@varundus-2nd:~# lvcreate -L 1G -n lv_01 vg_vdg
WARNING: ext4 signature detected on /dev/vg_vdg/lv_01 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg_vdg/lv_01.
  Logical volume "lv_01" created.

root@varundus-2nd:~# lvcreate -L 2G -n lv_02 vg_vdg
WARNING: ext4 signature detected on /dev/vg_vdg/lv_02 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg_vdg/lv_02.
  Logical volume "lv_02" created.

root@varundus-2nd:~# mkfs.ext4 /dev/vg_vdg/lv_01
root@varundus-2nd:~# mkfs.ext4 /dev/vg_vdg/lv_02

root@varundus-2nd:~# mount /dev/mapper/vg_vdg-lv_01 /mnt/lv_01
root@varundus-2nd:~# mount /dev/mapper/vg_vdg-lv_02 /mnt/lv_02
root@varundus-2nd:~# date > /mnt/lv_01/data.txt
root@varundus-2nd:~# date > /mnt/lv_02/data.txt

root@varundus-2nd:~# dmsetup -c info
Name                  Maj Min Stat Open Targ Event  UUID
system-root           252   2 L--w    1    1      0 LVM-jCVtUxe8Wmr9TsplZ3XSs5pSGDdpzFlKTY8FuwH6LnQ94EVGcgz4CgYopWmR7Wmo
system-swap           252   1 L--w    1    1      0 LVM-jCVtUxe8Wmr9TsplZ3XSs5pSGDdpzFlKa4gXR2WSd560ev8dA7jFjnAwXOzFpROj
vg_vdg-lv_01          252   5 L--w    1    1      0 LVM-orCkqeXxmsR0Haoibu26uIhK1oqdTE6mipnuMe7HRTv4Iblhuw5IQ6Bjlq7EbRnC
vg_vdg-lv_02          252   6 L--w    1    1      0 LVM-orCkqeXxmsR0Haoibu26uIhK1oqdTE6myleAWuttfTzICWYHAgqed15GvCvZ0R30

ja seejärel aadresside küsimine

root@varundus-2nd:~# dmsetup table vg_vdg-lv_01
0 2097152 linear 253:96 2048

root@varundus-2nd:~# dmsetup table vg_vdg-lv_02
0 4194304 linear 253:96 2099200

ja seejärel lvm struktuuride kustutamine

root@varundus-2nd:~# umount /mnt/lv_01
root@varundus-2nd:~# umount /mnt/lv_02
root@varundus-2nd:~# vgremove vg_vdg
Do you really want to remove volume group "vg_vdg" containing 2 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg_vdg/lv_01? [y/n]: y
  Logical volume "lv_01" successfully removed.
Do you really want to remove active logical volume vg_vdg/lv_02? [y/n]: y
  Logical volume "lv_02" successfully removed.
  Volume group "vg_vdg" successfully removed

root@varundus-2nd:~# pvremove /dev/vdg
  Labels on physical volume "/dev/vdg" successfully wiped.

root@varundus-2nd:~# wipefs /dev/vdg
root@varundus-2nd:~#

Osutub, et device mapper abiga on võimalik kergesti sektoritele vahemikule vastav plokkseade tekitada

root@varundus-2nd:~# echo "0 2097152 linear /dev/vdg 2048" | dmsetup create disk_lv_01
root@varundus-2nd:~# echo "0 4194304 linear /dev/vdg 2099200" | dmsetup create disk_lv_02

root@varundus-2nd:~# dmsetup -c info
Name                  Maj Min Stat Open Targ Event  UUID
disk_lv_01            252   5 L--w    0    1      0
disk_lv_02            252   6 L--w    0    1      0
..

Ja selle peal algselt olnud failisüsteem on jällegi kasutatav

root@varundus-2nd:~# mount /dev/mapper/disk_lv_01 /mnt/lv_01
root@varundus-2nd:~# mount /dev/mapper/disk_lv_02 /mnt/lv_02

root@varundus-2nd:~# df -t ext4 -T
Filesystem                        Type 1K-blocks     Used Available Use% Mounted on
/dev/mapper/system-root           ext4  11428080  6074128   4751636  57% /
/dev/vda1                         ext4    472408   248059    195319  56% /boot
/dev/mapper/vg_vdo-lv_vdo_storage ext4 205314024 19873372 174938508  11% /mnt/lv_vdo
/dev/mapper/disk_lv_01            ext4    996780      284    927684   1% /mnt/lv_01
/dev/mapper/disk_lv_02            ext4   1992552      540   1870772   1% /mnt/lv_02

root@varundus-2nd:~# cat /mnt/lv_0*/data.txt
Tue Apr  7 07:30:30 PM EEST 2026
Tue Apr  7 07:30:34 PM EEST 2026

Labori kustutamiseks sobib öelda

root@varundus-2nd:~# dmsetup remove disk_lv_01 disk_lv_02
root@varundus-2nd:~#

Kasulikud lisamaterjalid