Re: Еще раз о дисковой подсистеме
Konstantin Gerasimenko
kred на gmx.net
Пт Авг 19 14:02:04 UTC 2011
Am 18.08.2011 16:24, schrieb Igor Sysoev:
Всем привет,
вот сделал небольшой тест из трёх raid1 и LVM . на виртуальтой машинке.
Тесты показывают что:
- Можно сделать страйпы в 1М, ну и из доки по LVM следует :
StripeSize must be 2^n (n = 2 to 9) for metadata in LVM1
format. For metadata in LVM2 format, the stripe size may be a
larger power of 2 but must not exceed the physical extent size.)
- Диски используются в зависимости от требуемого "блока".
- Файловые системы по разному работают и аллоцируют место на дисках в
страйпе.
EXT4 : Так например ext4 расположила файл со смещением в 64К тоесть
запись одного логического "страйпа" требует работы двух физических
страйпов , что естественно пагубно скажется на производительности.
XFS: Правильно расположила тестовый файл который потом при записи
использовал один физический страйп на один записаный логический страйп.
Почему я использовал запись вместо чтения ? чтение постоянно кешируется
и не видна работы физических дисков. Да и если файл вот так запишется то
и читаться будет также.
ЗЫ: тесты с btrfs проведу наверное в понедельник :-)
Всем хороших выходных.
*root at debian:~#* uname -a
Linux debian 2.6.32-5-openvz-amd64 #1 SMP Tue Jun 14 10:46:15 UTC 2011
x86_64 GNU/Linux
Мой раид:
*root at debian:~#* cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5]
[raid4] [raid10]
md2 : active raid1 sdg1[1] sdf1[0]
8384862 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdd1[1] sde1[0]
8384862 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdc1[1] sdb1[0]
8383870 blocks super 1.2 [2/2] [UU]
*root at debian:~# *vgcreate RAID10 /dev/md0 /dev/md1 /dev/md2
*root at debian:~#* lvcreate -i 3 --stripesize 1MB -L20GB RAID10 -n testvol
При попытке чтения блока в 1М
*root at debian:~#* dd if=/dev/RAID10/testvol of=/dev/null bs=1M count=1 skip=3
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00287735 s, 364 MB/s
получаем с соседнем окне :
*root at debian:/home/kred#* iostat -k 3 | grep md
Linux 2.6.32-5-openvz-amd64 (debian) 08/19/2011 _x86_64_
(1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
md0 85.33 341.33 0.00 1024 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
вот тут чтение нескольких блоков:
*root at debian:~#* for i in `seq 1 3 10` ; do dd if=/dev/RAID10/testvol
of=/dev/null bs=1M count=1 skip="$[(i)]" ; done
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0192441 s, 54.5 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0200642 s, 52.3 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0192805 s, 54.4 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0179435 s, 58.4 MB/s
ну и
*root at debian:/home/kred#* iostat -k 1 | grep md
Linux 2.6.32-5-openvz-amd64 (debian) 08/19/2011 _x86_64_
(1 CPU)
md0 1483.16 5435.43 496.98 41703906 3813132
md1 636.19 2342.28 202.22 17971418 1551548
md2 291.62 1097.28 68.95 8418996 529014
md0 0.00 0.00 0.00 0 0
md1 1024.00 4096.00 0.00 4096 0
md2 0.00 0.00 0.00 0 0
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
а здесь читаются блоки с другого райда/страйпа
*root at debian:~#* for i in `seq 0 3 10` ; do dd if=/dev/RAID10/testvol
of=/dev/null bs=1M count=1 skip="$[(i)]" ; done
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0191712 s, 54.7 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0198684 s, 52.8 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0178683 s, 58.7 MB/s
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0178463 s, 58.8 MB/s
*root at debian:/home/kred#* iostat -k 1 | grep md
Linux 2.6.32-5-openvz-amd64 (debian) 08/19/2011 _x86_64_
(1 CPU)
md0 1455.64 5334.56 487.76 41703906 3813132
md1 624.51 2299.34 198.47 17975514 1551548
md2 286.21 1076.92 67.67 8418996 529014
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
md0 1034.34 4137.37 0.00 4096 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
точно также при чтении блоков по 128КБ
*root at debian:~#* for i in `seq 0 3 10` ; do dd if=/dev/RAID10/testvol
of=/dev/null bs=128K count=1 skip="$[(i*8)]" ; done
1+0 records in
1+0 records out
131072 bytes (131 kB) copied, 0.00325194 s, 40.3 MB/s
1+0 records in
1+0 records out
131072 bytes (131 kB) copied, 0.00271282 s, 48.3 MB/s
1+0 records in
1+0 records out
131072 bytes (131 kB) copied, 0.00334017 s, 39.2 MB/s
1+0 records in
1+0 records out
131072 bytes (131 kB) copied, 0.00271333 s, 48.3 MB/s
*root at debian:/home/kred#* iostat -k 1 | grep md
Linux 2.6.32-5-openvz-amd64 (debian) 08/19/2011 _x86_64_
(1 CPU)
md0 1433.38 5253.01 480.25 41708514 3813132
md1 614.90 2263.94 195.41 17975514 1551548
md2 281.80 1060.34 66.63 8418996 529014
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
md0 128.00 512.00 0.00 512 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
Далее тест файловой системы EXT4
*root at debian:~#* mkfs.ext4 -E stride=256,stripe-width=768
/dev/RAID10/testvol
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=256 blocks, Stripe width=768 blocks
1311184 inodes, 5243904 blocks
262195 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
161 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
4096000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
*root at debian:~#* mount /dev/RAID10/testvol /mnt/
*root at debian:~#* cat /dev/zero > /mnt/fileblob
^C
*root at debian:~#* ls -alh /mnt/
total 2.0G
drwxr-xr-x 3 root root 4.0K Aug 19 08:06 .
drwxr-xr-x 22 root root 4.0K Aug 17 04:06 ..
-rw-r--r-- 1 root root 2.0G Aug 19 08:07 fileblob
drwx------ 2 root root 16K Aug 19 08:04 lost+found
тесты показали что файл лежит со смещением в 64к
*root at debian:~#* dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=0
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00157423 s, 666 MB/s
*root at debian:~# * dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00153828 s, 682 MB/s
md2 0.00 0.00 0.00 0 0
md0 16.00 0.00 64.00 0 64
md1 240.00 0.00 960.00 0 960
md2 0.00 0.00 0.00 0 0
md0 2.02 0.00 0.00 0 0
md1 18.18 0.00 64.65 0 64
md2 249.49 0.00 989.90 0 980
md0 0.00 0.00 0.00 0 0
далее тесть файловой системы XFS
*root at debian:~#* mkfs.xfs -d sunit=2048,swidth=6144 -f /dev/RAID10/testvol
log stripe unit (1048576 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/RAID10/testvol isize=256 agcount=16, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=256 swidth=768 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
*root at debian:~#* mount /dev/RAID10/testvol /mnt/
*root at debian:~#* cat /dev/zero > /mnt/fileblob
c^C
*root at debian:~#* dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00274009 s, 383 MB/s
*root at debian:~# * dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=0
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00291606 s, 360 MB/s
*root at debian:~#* dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=6
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.000985776 s, 1.1 GB/s
*root at debian:~#* dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=8
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.000930578 s, 1.1 GB/s
*root at debian:~#* dd of=/mnt/fileblob if=/dev/zero bs=1M count=1 seek=18
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.000936298 s, 1.1 GB/s
md0 130.00 0.00 1024.00 0 1024
md1 3.00 0.00 32.00 0 32
md2 2.00 0.00 0.00 0 0
md0 1.98 0.00 0.00 0 0
md1 2.97 0.00 31.68 0 32
md2 128.71 0.00 1013.86 0 1024
md0 15.84 0.00 1013.86 0 1024
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
md0 0.00 0.00 0.00 0 0
md1 0.00 0.00 0.00 0 0
md2 16.00 0.00 1024.00 0 1024
md0 16.00 0.00 1024.00 0 1024
md1 0.00 0.00 0.00 0 0
md2 0.00 0.00 0.00 0 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20110819/dd6fa090/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru