11 марта 2014 г., 11:44 пользователь Slawa Olhovchenkov
<[email protected]> написал:
> On Tue, Mar 11, 2014 at 11:27:12AM +0200, Anton Sayetsky wrote:
>
>> 11 марта 2014 г., 10:25 пользователь Alexander Yerenkow
>> <[email protected]> написал:
>> >
>> >
>> >
>> >
>> >> Тут всё правильно - меньше 12к не получится с учётом ashift.
>> >> И если создать файл размером в 100к - то он у меня 100к и занимает.
>> >
>> > Занимает файл или его блок?
>> >
>> >> Так что теперь мне непонятно, почему при записи файла размером 484к я
>> >> получаю 4*128, а не 3*128+100
>> > Эмм, так вроде ж ты в начальных условиях указал что "имеем dataset c
>> > recordsize=128k", плюс у тебя выполняется условие что файл уже состоит из
>> > нескольких блоков, дальше он (судя по инфе что я читал) будет дополняться
>> > именно кусками в recordsize.
>> > Ну и плюс чексум считается именно по всему блоку, если мы не знаем что там
>> > было до нас, то надо туда писать весь блок, включая padding zeroes (или как
>> > оно у них там).
>> >
>> > Примерно то что ты спрашивал, или я не уловил суть?
>> Пишу файл 9.5к - занимает 12к.
>> Пишу файл 100к - занимает 100к.
>> Пишу файл 484к - занимает 512, а не 484к.
>> Я ж вроде указал вывод zdb. :) Я не понял, почему для файла размером
>> 484к последний блок - 128, а не 100к.
>
> блоков 100к не бывает. только степени 2.
А это тогда что?

 jason@jnb:~$ cat typescript
Script started on Tue Mar 11 11:48:27 2014
jason@jnb:~$ dd if=/dev/random of=test.fil bs=100k count=1
1+0 records in
1+0 records out
102400 bytes transferred in 0.002707 secs (37827790 bytes/sec)
jason@jnb:~$ ll -i test.fil
4661 -rw-r--r--  1 jason  jason  102400 11 мар 11:48 test.fil
jason@jnb:~$ zdb -ddddddddd ezroot/home/jason 4661
Dataset ezroot/home/jason [ZPL], ID 59, cr_txg 13, 3.16G, 2786
objects, rootbp DVA[0]=<0:1243357000:1000> DVA[1]=<0:300ce6a000:1000>
[L0 DMU objset] fletcher4 lzjb LE contiguous unique double
size=800L/200P birth=206214L/206214P fill=2786
cksum=1cb499543f:8fdd5bda617:188f8992bb918:301ab58895acbf

    Object  lvl   iblk   dblk  dsize  lsize   %full  type
      4661    1    16K   100K   100K   100K  100.00  ZFS plain file
(K=inherit) (Z=inherit)
                                        168   bonus  System attributes
        dnode flags: USED_BYTES USERUSED_ACCOUNTED
        dnode maxblkid: 0
        path    /test.fil
        uid     1001
        gid     1001
        atime   Tue Mar 11 11:48:46 2014
        mtime   Tue Mar 11 11:48:46 2014
        ctime   Tue Mar 11 11:48:46 2014
        crtime  Tue Mar 11 11:48:46 2014
        gen     206213
        mode    100644
        size    102400
        parent  4
        links   1
        pflags  40800000004
Indirect blocks:
               0 L0 0:1243317000:19000 19000L/19000P F=1 B=206213/206213

                segment [0000000000000000, 0000000000019000) size  100K

jason@jnb:~$ echo "ibase=16; 19000" | bc
102400
jason@jnb:~$ exit

Script done on Tue Mar 11 11:50:20 2014
jason@jnb:~$

Ответить