Mount RAW Pool Image with ZFS on Linux
Suppose you have backed up a ZFS pool with dd
so you want to get some data from rpool.img
now. Look at disk-image-mount-partition for more ways to mount patitions.
Mounting
- Mount image as loop device
# losetup /dev/loop0 rpool.img
- List partitions in loop
# kpartx -l /dev/loop0 loop0p1 : 0 44019712 /dev/loop0 2048 loop0p9 : 0 16384 /dev/loop0 44021760
- Create device mappings of partitions
# kpartx -av /dev/loop0 add map loop0p1 (252:0): 0 44019712 linear 7:0 2048 add map loop0p9 (252:1): 0 16384 linear 7:0 44021760
- Create mount point
# mkdir /mnt/misa
- Try import the ZFS pool, but it will definitely fail because 1) my
rpool.img
is readonly 2)rpool
is already used on my system# zpool import -R /mnt/misa -d /dev/mapper pool: rpool id: 3090542417815288870 state: ONLINE status: Some supported features are not enabled on the pool. action: The pool can be imported using its name or numeric identifier, though some features will not be available without an explicit 'zpool upgrade'. config: rpool ONLINE loop0 ONLINE
- With the id from previous result, we can import this pool with a new name
misa
# zpool import -o readonly=on -f -d /dev/mapper 3090542417815288870 misa -R /mnt/misa
- Done
# zpool status pool: misa state: ONLINE status: Some supported features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(5) for details. scan: none requested config: NAME STATE READ WRITE CKSUM misa ONLINE 0 0 0 loop0 ONLINE 0 0 0 errors: No known data errors # zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT misa 20.9G 716M 20.2G - 0% 3% 1.00x ONLINE /mnt/misa # zfs list misa -r NAME USED AVAIL REFER MOUNTPOINT misa 716M 19.5G 96K /mnt/misa misa/ROOT 533M 19.5G 96K none misa/ROOT/ubuntu 533M 19.5G 533M /mnt/misa misa/home 996K 19.5G 96K /mnt/misa/home misa/home/root 900K 19.5G 900K /mnt/misa/root misa/srv 96K 19.5G 96K /mnt/misa/srv misa/var 179M 19.5G 96K /mnt/misa/var misa/var/cache 174M 19.5G 174M /mnt/misa/var/cache misa/var/lib 3.81M 19.5G 96K /mnt/misa/var/lib misa/var/lib/mysql 3.72M 19.5G 3.72M /mnt/misa/var/lib/mysql misa/var/log 1.09M 19.5G 1.09M /mnt/misa/var/log misa/var/spool 96K 19.5G 96K /mnt/misa/var/spool misa/var/tmp 120K 19.5G 120K /mnt/misa/var/tmp
Unmounting
- Export the pool
# zpool export misa
- Disconnect the device map files using kpartx
# kpartx -dv /dev/loop0 del devmap : loop0p9 del devmap : loop0p1
- Unload loop device
# losetup -d /dev/loop0