On 09/25/2014 08:10 AM, Romu Hu wrote:|
On 2014/9/24 12:10, Brassow Jonathan wrote:
On Sep 22, 2014, at 7:35 AM, Romu wrote:
I tried the following command to
set up my era target but the command immediately panics
the system and the system reboots.
# dmsetup create MyEra --table "0 41941903 era
The metadata dev and the origin dev are all part of a
LVM cache LV. VG-CacheDataLV_cmeta is the cache
metadata LV on the smaller and faster device,
VG-OriginLV is the origin LV on the faster and slower
device, 41941903 is the total sector number of the
device of OriginLV (the LV takes 100% space of the
device), 4096 is the block size of OriginLV, I have run
'mkfs.ext4 /dev/mapper/VG-OriginLV' before running the
Below is the message in /var/log/messages after
running the dmsetup comnmand:
kernel: device-mapper: era: sb_check failed: magic
1623043: wanted 2126579579
kernel: device-mapper: block manager: superblock
validator check failed for block 0
kernel: device-mapper: era: couldn't read_lock
Sorry, I haven't used dm-era yet. However, it does appear
that you are perhaps specifying the wrong devices when
creating the era device? Looks like you might be allowing the
era target and the cache target to use the same metadata area
at the same time - causing them to corrupt each other's
I think the dmsetup command to set up an era target should be
something like this:
# dmsetup create MyEra --table "0 sector_number era
metadeta_dev origin_dev block_size"
1) How to calculate sector_number? According to https://www.kernel.org/doc/Documentation/device-mapper/era.txt,
I guess it should be (4 * nr_blocks) bytes + buffers, but what is
nr_blocks and what is buffers?
No calculation: it's the size of your era target in sectors.
Typically "blockdev --getsz origin_dev"
Any documentation for dmsetup tables?
Look for examples in the kernel source trees
table line syntax is: "start_sector length_in_sectors <target>
Both my metadata_dev and origin_dev are 10G partitions, is this
Metadata device size is plenty but that depends on how many eras
with how many updates you want to have.
origin_dev is a ext4 filesystem with a block size of 4096, so the
block_size in the command line should also be 4096?
You may use 4096 = _8_ sectors, you used 4096 sectors = 2MB below.
It's the granularity the era target housekeeps blocks for.
I tried the following command:
# dmsetup create MyEra --table "0 160000 era
/dev/mapper/mpathap1 /dev/mapper/mpathbp1 4096"
May not be same physical device for data and metadata!
If it is, thta'd explain your oops.
# dmsetup create MyEra --table "0 $(blockdev --getsz /dev/mapper/mpathbp)
era whatever_disctinct_metadata_device /dev/mapper/mpathbp1 8"
Would use 8 sector block size (which is tiny!) with disctinct
metadata and data devices (presumabyl your ext4 sits on /dev/mapper/mpathbp1)
It immediately panics the kernel (2.6.32-494.el6.i686) with the
following info in /var/log/messages:
Sep 24 22:44:22 localhost kernel: device-mapper: era: sb_check
failed: magic 0: wanted 2126579579
Sep 24 22:44:22 localhost kernel: device-mapper: block
manager: superblock validator check failed for block 0
Sep 24 22:44:22 localhost kernel: device-mapper: era:
couldn't read_lock superblock
Sep 24 22:44:22 localhost kernel: BUG: unable to handle
kernel NULL pointer dereference at 00000008
Sep 24 22:44:22 localhost kernel: IP: [<f7e9a3c7>]
Sep 24 22:44:22 localhost kernel: *pdpt =
0000000001945001 *pde = 00000003ff97f067
Sep 24 22:44:22 localhost kernel: Oops: 0000 [#1] SMP
Sep 24 22:44:22 localhost kernel: last sysfs file:
dm-devel mailing list
dm-devel redhat com