dmsetup + eszköz lockolás

Fórumok

Van egy diszkem, amin egy megadott offsetnél található egy fájlrendszer. Ezt a fájlrendszert a korábbiakban a loopback device "offset" (-o) opciójának segítségével csatoltam fel, viszont a loopback device óriási overheaddel rendelkezik, ezért dög lassú volt.

Akkor itt a fórumon azt tanácsoltátok, hogy a loopback device helyett használjak device mappert, és annak a "linear" opcióját.

Ez sebesség szempontjából bevált, viszont lockolja a forrás eszközt. Magyarul, ha a /dev/sda egy területéről létrehozok egy linear device mapper eszközt, akkor utána a /dev/sda-ról más (nem átfedő!) partíciókat sem tudok felmountolni, nem tudok rajtuk mkfs-t futtatni, stb. mert azt mondja, hogy az eszköz használatban van.
(/dev/sda1 is apparently used by the system)

Van-e valami megoldás ezen lockolás kihagyására/megkerülésére/megszüntetésére?

Kösz!

Hozzászólások

"Magyarul, ha a /dev/sda egy területéről létrehozok egy linear device mapper eszközt"

Ezt részletezd már kérlek, nem teljesen értem.
Jómagam évek óta használok titkosított partíciókat, fájlokat. Legjobban a cryptsetup vált be. Gond nélkül megy a le-felcsatolás. Van, hogy 1 lemezen belül több titkosított partíció esetén is.

Van mondjuk a /dev/sda, amin van egy fájlrendszer. A kezdő offsetje mondjuk 60 GB-nál van (125829120-s szektor), és 14 GB a mérete (29360128 szektor)

echo "0 29360128 linear /dev/sda 125829120" | dmsetup create adatok

Ezek után a fájlrendszert remekül elérem, fel tudom csatolni:
mount /dev/mapper/adatok /mnt

Ellenben, a forrás diszen ilyenkor nem tudok felmountolni partíciókat:

# mount /dev/sda1 /mnt2
mount: /dev/sda1 already mounted or /mnt2 busy

Illetve fájlrendszert sem tudok csinálni:

# mkfs.ext4 /dev/sda1
/dev/sda1 is apparently in use by the system; will not make a filesystem here!

Pedig őszintén jobb lenne az extend partíciót választani.

De akkor csináld fordítva. A data-mapper rétegen keresztül kezelheted a partíciókat.

Probléma


# dmsetup create data5 --table \
  '0 10000 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA04012700007562-0:0 50000'
# dmsetup create data6 --table \
  '0 10000 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA04012700007562-0:0 60000'

# mkfs.ext3 /dev/sdd2
mke2fs 1.42.8 (20-Jun-2013)
/dev/sdd2 is apparently in use by the system; will not make a filesystem here!
# mount /dev/sdd2 /mnt/
mount: /dev/sdd2 already mounted or /mnt/ busy

Megoldás


# fdisk -l /dev/sdd
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048        9999        3976   83  Linux
/dev/sdd2           10000       19999        5000   83  Linux
/dev/sdd3           20000       29999        5000   83  Linux
/dev/sdd4           30000       49999       10000   83  Linux

# dmsetup create data1 --table \
  '0 7952 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA040-0:0 2048'
# dmsetup create data2 --table \
  '0 10000 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA040-0:0 10000'
# dmsetup create data3 --table \
  '0 10000 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA040-0:0 20000'
# dmsetup create data4 --table \
  '0 20000 linear /dev/disk/by-id/usb-USB_Flash_Disk_AA040-0:0 30000'

# mkfs.ext3 /dev/mapper/data1
# mkfs.ext3 /dev/mapper/data2
# mkfs.ext3 /dev/mapper/data3
# mkfs.ext3 /dev/mapper/data4

# mount /dev/sdd1 /mnt/
mount: /dev/sdd1 already mounted or /mnt/ busy
# mount /dev/mapper/data1 /mnt ; echo $?
0

De azért az extend partíciót, mint megoldást, ne vesd el.

igen, azt mondom.
nem tudom van -e. én kézzel adtam be - nem véletlen 10k-sok.
de awk pont jó. quick-dirty:


# fdisk -l /dev/sdc | awk '/^\/dev\/sdc/ {d=$1; gsub("/","_",$1);\
  printf("dmsetup create data%s --table \0470 %d linear %s 0\047\n", $1, $4*2, d)}'
dmsetup create data_dev_sdc1 --table '0 7952 linear /dev/sdc1 0'
dmsetup create data_dev_sdc2 --table '0 10000 linear /dev/sdc2 0'
dmsetup create data_dev_sdc3 --table '0 10000 linear /dev/sdc3 0'
dmsetup create data_dev_sdc4 --table '0 20000 linear /dev/sdc4 0'

print helyett system-mel is

En mar regota hasznalok hasonlo setupot ( + cryptoval + metadata mashol tarolva) loopback-el es bevallom oszinten nem tunt fel, hogy lassu volna, de most felcsigaztal :)

Tekintve a dolog egyszeruseget meglepett, hogy nagy az overhead. Csinaltal esetleg merest?