LVM – расширить раздел на новый диск

На одном из дисков (sdb – 160G) кончилось место. Добавил новый (sda – 500G). Нужно расширить том на оба диска. Для этого воспользуюсь свойствами LVM.

Для начала:

# pvcreate /dev/sda
WARNING: xfs signature detected on /dev/sda at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sda.
Physical volume "/dev/sda" successfully created.
# pvscan
PV /dev/sdc2 VG centos lvm2 [<1,82 TiB / 4,00 MiB free]
PV /dev/sda lvm2 [465,76 GiB]
Total: 2 [2,27 TiB] / in use: 1 [<1,82 TiB] / in no VG: 1 [465,76 GiB]
# pvdisplay
--- Physical volume ---
PV Name /dev/sdc2
VG Name centos
PV Size <1,82 TiB / not usable 4,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 476675
Free PE 1
Allocated PE 476674
PV UUID 2cvGc2-stYN-fyDh-3ulB-jcTz-ROZB-UFgcNR

"/dev/sda" is a new physical volume of "465,76 GiB"
--- NEW Physical volume ---
PV Name /dev/sda
VG Name
PV Size 465,76 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 96YndX-qAsF-XvKe-jPjh-Z1hC-FrzF-fXp9JS

Смотрим свободное место:

# vgs vg_box
VG     #PV #LV #SN Attr   VSize    VFree
vg_box   1   0   0 wz--n- <465,76g <465,76g

Создаем размер сознательно указав завышенный размер – система подсказала правельный:

# lvcreate -l 160000 -n lv_box vg_box
Volume group "vg_box" has insufficient free space (119234 extents): 160000 required.
# lvcreate -l 119234 -n lv_box vg_box
Logical volume "lv_box" created.

Проверяем свободное место:

# vgs vg_box
VG    #PV #LV #SN Attr   VSize    VFree
vg_box  1   1   0 wz--n- <465,76g 0

Теперь такая картина:

# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 465,8G 0  disk
└─vg_box-lv_box 253:3    0 465,8G 0  lvm  /home/box
sdb               8:16   0 149,1G 0  disk /home/data
sdc               8:32   0   1,8T 0  disk
├─sdc1            8:33   0     1G 0  part /boot
└─sdc2            8:34   0   1,8T 0  part
  ├─centos-root 253:0    0    20G 0  lvm  /
  ├─centos-swap 253:1    0     2G 0  lvm  [SWAP]
  └─centos-home 253:2    0   1,8T 0  lvm  /home

Правим smb.conf (у меня на data привязана одна из шар), копируем старые данные на новый диск и потом отключаем его:

# umount /home/data

Инициализируем его для работы LVM:

# pvcreate /dev/sdb
WARNING: xfs signature detected on /dev/sdb at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb.
Physical volume "/dev/sdb" successfully created.
# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 465,8G 0  disk
└─vg_box-lv_box 253:3    0 465,8G 0  lvm  /home/box
sdb               8:16   0 149,1G 0  disk
sdc               8:32   0   1,8T 0  disk
├─sdc1            8:33   0     1G 0  part /boot
└─sdc2            8:34   0   1,8T 0  part
  ├─centos-root 253:0    0    20G 0  lvm  /
  ├─centos-swap 253:1    0     2G 0  lvm  [SWAP]
  └─centos-home 253:2    0   1,8T 0  lvm  /home

Расширяем группу томов:

# vgextend vg_box /dev/sdb
Volume group "vg_box" successfully extended
# vgs
VG     #PV #LV #SN Attr   VSize   VFree
centos   1   3   0 wz--n-  <1,82t 4,00m
vg_box   2   1   0 wz--n- 614,80g <149,05g
# lvs
LV     VG     Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
home   centos -wi-ao----   <1,80t
root   centos -wi-ao----   20,00g
swap   centos -wi-ao----    2,00g
lv_box vg_box -wi-ao---- <465,76g
# pvs
PV         VG     Fmt  Attr PSize       PFree
/dev/sda   vg_box lvm2 a--  <465,76g       0
/dev/sdb   vg_box lvm2 a--  <149,05g <149,05g
/dev/sdc2  centos lvm2 a--    <1,82t    4,00m

Расширяем логический том lv_box:

# lvextend -L +149,05G /dev/vg_box/lv_box
Rounding size to boundary between physical extents: 149,05 GiB.
Insufficient free space: 38157 extents needed, but only 38156 available

Промазали, исправляем и повторяем:

# lvextend -L +149,04G /dev/vg_box/lv_box
Rounding size to boundary between physical extents: 149,04 GiB.
Size of logical volume vg_box/lv_box changed from <465,76 GiB (119234 extents) to 614,80 GiB (157389 extents).
Logical volume vg_box/lv_box successfully resized.

Что бы не мучаться с подсчетами можно увеличить сразу на все свободное место:

# lvextend -l +100%FREE  /dev/vg_box/lv_box
# df -h
Файловая система          Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/centos-root      20G         3,4G   17G           17% /
devtmpfs                    1,4G            0  1,4G            0% /dev
tmpfs                       1,4G            0  1,4G            0% /dev/shm
tmpfs                       1,4G         8,9M  1,4G            1% /run
tmpfs                       1,4G            0  1,4G            0% /sys/fs/cgroup
/dev/sdc1                  1014M         325M  690M           33% /boot
/dev/mapper/centos-home     1,8T         1,8T   95G           95% /home
tmpfs                       282M            0  282M            0% /run/user/1000
/dev/mapper/vg_box-lv_box   466G         145G  322G           31% /home/box

Осталось увеличить файловую систему и все:

# xfs_growfs /dev/vg_box/lv_box
meta-data=/dev/mapper/vg_box-lv_box isize=512 agcount=4, agsize=30523904 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=122095616, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=59617, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 122095616 to 161166336

Проверяем:

# df -h
Файловая система          Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/centos-root      20G         3,4G   17G           17% /
devtmpfs                    1,4G            0  1,4G            0% /dev
tmpfs                       1,4G            0  1,4G            0% /dev/shm
tmpfs                       1,4G         8,9M  1,4G            1% /run
tmpfs                       1,4G            0  1,4G            0% /sys/fs/cgroup
/dev/sdc1                  1014M         325M  690M           33% /boot
/dev/mapper/centos-home     1,8T         1,8T   95G           95% /home
tmpfs                       282M            0  282M            0% /run/user/1000
/dev/mapper/vg_box-lv_box   615G         145G  471G           24% /home/box

Отмонтируем новую точку и подмонтируем на старое место:

# umount /home/box
# mount /dev/vg_box/lv_box /home/data
# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 465,8G  0 disk
└─vg_box-lv_box 253:3    0 614,8G  0 lvm  /home/data
sdb               8:16   0 149,1G  0 disk
└─vg_box-lv_box 253:3    0 614,8G  0 lvm  /home/data
sdc               8:32   0   1,8T  0 disk
├─sdc1            8:33   0     1G  0 part /boot
└─sdc2            8:34   0   1,8T  0 part
  ├─centos-root 253:0    0    20G  0 lvm  /
  ├─centos-swap 253:1    0     2G  0 lvm  [SWAP]
  └─centos-home 253:2    0   1,8T  0 lvm  /home

Убираем коментарии с  блока “data”

# vi /etc/samba/smb.conf
# systemctl reload {smb,nmb}

 

image_pdfimage_print

Как определить оптимальный размер MTU?

Приведем пример. Выполним пинг до сайта www.yandex.ru с размером пакета 1450 байт:

ping www.yandex.ru -f -l 1450

После выполнения команды ping вы сразу увидите результат. В нашем примере был получен ответ, а сообщение о требовании фрагментации пакета не получено. Значит, продолжаем тестирование. Тестирование размера пакета начинайте с 1450 байт, постепенно увеличивая это значение до тех пор, пока не появится сообщение Требуется фрагментация пакета.

Итак, в нашем примере был найден максимальный размер пакета 1472 байта (при этом значении пакет не нуждается во фрагментации), т.к. при значении 1473 байта появилось сообщение о том, что требуется фрагментация пакета.

Но это ещё не значение MTU. Мы получили значение MSS (Maximum Segment Size), которое определяет максимальный размер блока данных в байтах. Этот параметр не учитывает длину заголовков ICMP и IP. В нашем случае значение MTU = MSS + заголовок IP + заголовок ICMP.

Теперь к полученному в ходе тестирования числу прибавим 28 байт, которые зарезервированы под заголовок данных (20 байт для заголовка IP и 8 байт для заголовка запроса протокола ICMP). Для нашего примера MTU=1472+28=1500 байт (это оптимальное значение параметра MTU).

 

https://help.keenetic.com/hc/ru/articles/214470885-%D0%9A%D0%B0%D0%BA-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-MTU-

image_pdfimage_print

Несколько слов о Path MTU Discovery Black Hole

Автор: Попов Александр ( popov2al<at>gmail.com )

Вместо вступления
Однажды для каждого настоящего системного администратора (или исполняющего обязанности такового) наступает момент истины. Ему выпадает судьба настроить маршрутизатор на компьютере с установленной ОС GNU/Linux. Те, кто это уже прошел, знают, что ничего сложного в этом нет и можно уложиться в пару команд. И вот наш админ находит эти команды, вбивает их в консоль и гордо идет к пользователям сказать, что уже все работает. Но не тут-то было – пользователи говорят что их любимые сайты не открываются. После траты некоторой части своей жизни на выяснение подробностей обнаруживается, что большая часть сайтов ведет себя следующим образом:
1. При открытии страницы загружается заголовок и больше ничего;
2. В таком состоянии страница висит неопределенно долгое время;
3. Строка статуса браузера все это время показывает что загружает страницу;
4. Пинги и трассировка до данного сайта проходят нормально;
5. Соединение по telnet на 80 порт тоже проходит нормально.
Обескураженный админ звонит в техподдержку провайдера, но там от него быстро избавляются, советуя попробовать настроить маршрутизатор на OC Windows, а если уж и там не работает тогда… – купить аппаратный маршрутизатор 🙂 .
Я думаю, эта ситуация знакома многим. Некоторые в нее попадали сами, у кого-то с ней сталкивались знакомые, а кто-то встречал таких админов на форумах и прочих конференциях. Итак : если у Вас Такая Ситуация, то – Поздравляю! Вы столкнулись с Path MTU Discovery Black Hole. Данная статья посвящается тому, отчего это бывает, и как решить эту проблему.

Термины, необходимые для понимания содержимого статьи:
MTU (Maximum Transmission Unit) – этот термин используется для определения максимального размера пакета (в байтах), который может быть передан на канальном уровне сетевой модели OSI. Для Ethernet это 1500 байт. Если приходит пакет большего размера (например по Token Ring), то данные пересобираются в пакеты размером не более MTU( т е не более 1500 байт). Операция пересборки пакетов под другой MTU называется фрагментацией(fragmentation) и считается затратной для маршрутизатора.
PMTU (Path MTU) – данный параметр обозначает наименьший MTU любого канала данных, находящегося между источником и приемником.
PMTU discovery – технология определения PMTU разработанная для уменьшения нагрузки на маршрутизаторы. Описана в RFC 1191(http://tools.ietf.org/html/rfc1191) в 1988 году. Суть технологии заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment, не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP типа Destination is unreachable (Хост недоступен). К сообщению об ошибке прилагается значение MTU узла. Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.
МSS(Maximum Segment Size) – максимальный размер сегмента, т.е. самая большая порция данных, которую TCP пошлет на удаленный другой конец соединения. Рассчитывается по следующей формуле:
[MTU интерфейса] – [Размер IP заголовка(20 байт)] – [Размер TCP заголовка(20 байт)]. Итого обычно это 1460 байт. Когда соединение устанавливается, каждая сторона может объявить свой MSS. Выбирается наименьшее значение. Подробнее смотреть здесь – http://www.cyberguru.ru/networks/protocols…tion-page3.html
Флаг DF(Don’t fragment) – Бит в поле флагов заголовка IP пакета, который будучи установленным в единицу сообщает о том, что данный пакет запрещено фрагментировать. Если пакет с таким флагом больше, чем MTU следующей пересылки, то этот пакет будет отброшен, а отправителю посылается ICMP ошибка “фрагментация необходима, однако установлен бит не фрагментировать” (fragmentation needed but don’t fragment bit set).

Для начала посмотрим, что происходит в сети при открытии страницы. Для этого я создал тестовую сеть, изображенную на рис.1

Рис. 1. Схема тестовой сети.

Это упрощенный вариант глобальной сети. Компьютер с именем deb-serv-03 представляет собой наш маршрутизатор на Linux; deb-serv-05 – клиент в локальной сети(); deb-home – маршрутизатор, расположенный у провайдера; deb-serv – Веб-сервер в Интернете с которым мы хотим обмениваться данными(получаем с www.site.local страничку размером в 5,9Кб). Конечно, в реальности цепочка гораздо больше, но для показательного примера этого хватит. Все компьютеры данной сети работают под управлением Debian GNU/Linux 5.0 Lenny. В разных точках сети я контролирую ситуацию с помощью программы tcpdump.
Внимание – на интерфейсе eth2 компьютера deb-serv-03 размер MTU уменьшен до 1400 байт.

Изучаем, как пойдут пакеты при получении странички с веб-сервера. Смотрим на вывод TCPDUMP#1 (на eth0 deb-serv):

Код: Выделить всё

1    IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [S], seq 2947128725, win 5840, options [mss 1460...], length 0
2    IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [S.], seq 757312786, ack 2947128726, win 5792, options [mss 1460...], length 0
3    IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4    IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5    IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], ack 118, win 181, options [...], length 0
6    IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:2897, ack 118, win 181, options [...], length 2896
7    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
8    IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:1349, ack 118, win 181, options [...], length 1348
9    IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1349:2697, ack 118, win 181, options [...], length 1348
10    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556

Я привожу только первые 10 пакетов и убрал неважные для данного примера опции. Разбираем:
1. В строках с 1-ой по 3-ю мы видим установку tcp соединения. Стороны обмениваются пакетами SYN, SYN-ACK, ACK. Здесь стоит обратить внимание на поле опций, а именно на параметр MSS, которым обмениваются стороны. С обеих сторон это 1460 байт. Значит максимальный размер пакетов, которые стороны будут посылать друг другу, составит 1460(MSS)+20(TCP Заголовок)+20(IP Заголовок)=1500 байт.
2. В строке 4 отправка запроса на получение веб страницы от deb-serv-05. В строке 5 подтверждение получения данного пакета.
3. В строке 6 мы видим отправку ответа на запрос (т.е. отправку куска веб-страницы). Я не знаю почему, но на данном интерфейсе tcpdump видит один пакет размером в 2948 байт, в то время как в сеть уйдут 2 пакета размером 1500 и 1452 байта соответственно. Если посмотреть более подробный вывод tcpdump, то увидим, что на данном пакете(точнее пакетах) стоит флаг DF:

Код: Выделить всё

IP (tos 0x0, ttl 64, id 5177, offset 0, flags [DF], proto TCP (6), length 2948)
192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:2897, ack 118, win 181, options [nop,nop,TS val 86620459 ecr 4922429], length 2896

4. Когда эти пакеты с данными доходят до deb-serv-03 они отбрасываются, так как не могут пройти по соединению с MTU 1400 и не могут быть фрагментированы(флаг DF), а в ответ генерируется сообщение ICMP тип 3 код 4: ICMP 172.16.5.3 unreachable – need to frag (mtu 1400), которое мы видим в строке 7 ( в строке 10 приходит сообщение для 2-го пакета). В этом сообщении передается нужный MTU.
5. В строках 8 и 9 мы наблюдаем как deb-serv, получив MTU=1400, отправляет тот же самый кусок веб страницы в пакетах размером 1400 байт. Данные пакеты доходят до deb-serv-05, где генерируется подтверждение, и так повторяется до тех пор, пока вся страница не будет передана. Размер всех последующих пакетов будет не больше 1400 байт.
На этом примере демонстрируется процедура определения Транспортного MTU (PMTU), описанная в RCF1911 ( http://tools.ietf.org/html/rfc1191 ). Я представил ее в упрощенном виде на рис 2.

Рис. 2. Процедура определения PMTU.

А теперь представим, что к провайдеру пришел новый специалист и решил (в целях защиты от icmp флуда) запретить пересылку icmp пакетов через deb-home, который теперь в его ведении. Смотрим что получается:
Вывод TCPDUMP#1 (на eth0 deb-serv):

Код: Выделить всё

1    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [S], seq 1723325723, win 5840, options [mss 1460...], length 0
2    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [S.], seq 2482933888, ack 1723325724, win 5792, options [mss 1460...], length 0
3    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], ack 118, win 181, options [...], length 0
6    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:2897, ack 118, win 181, options [...], length 2896
7    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
8    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
9    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
10    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
11    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
12    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448

Вывод TCPDUMP#2 (на eth0 deb-serv-03):

Код: Выделить всё

1    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [S], seq 1723325723, win 5840, options [mss 1460...], length 0
2    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [S.], seq 2482933888, ack 1723325724, win 5792, options [mss 1460...], length 0
3    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4    IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], ack 118, win 181, options [...], length 0
6    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
7    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
8    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1449:2897, ack 118, win 181, options [...], length 1448
9    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
10    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
11    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
12    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
13    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
14    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
15    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
16    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
17    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
18    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
19    IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
20    IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448

Как видите, ситуация вполне ожидаемая. Первые 6 строк в каждом выводе точно такие же, как и при нормальной передаче (см. Описание в предыдущем примере). Но вот дальше начинаются расхождения. ICMP 3:4 точно так же генерируется на deb-serv-03(строки 7, 9 11.13, 15, 17, 19 в TCPDUMP#2), но deb-serv его не получает и продолжает слать пакеты размером в 1500 байт(строки с 6 по 12 в TCPDUMP#1 и 6, 8, 10, 12, 14, 16, 18 и 20 в TCPDUMP#2). С каждым разом время между повторной посылкой все увеличивается (в данных примерах я отбросил временые метки, но на самом деле это так). Никаких данных размером большим, чем PMTU, в таком случае не передать. Но увы, TCP этого не знает и продолжает слать пакеты с MSS, выбранным в момент установки соединения. Именно эта ситуация и называется Path MTU Discovery Black Hole (Черная дыра в определении транспортного MTU). Я постарался представить ее в упрощенном виде на рис. 3.

Рис. 3. Черная дыра в определении PMTU.

Эта проблема совсем не нова. Она описана в RFC 2923 ( http://tools.ietf.org/html/rfc2923 ) в 2000 году. Но тем не менее, продолжает встречаться с завидным упорством у многих провайдеров. А ведь именно провайдер виноват в данной ситуации: не нужно блокировать ICMP тип 3 код 4. Причем слушаться «голоса разума» ( т. е. клиентов, понимающих в чем проблема) они обычно не хотят. Поэтому не будем обращать на них внимание и попробуем решить проблему, исходя из собственных средств.
Разработчики Linux, тоже знающие об этой проблеме, предусмотрели специальную опцию в iptables. Цитата из man iptables:

TCPMSS
This target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that connection (usually limiting it to your outgoing interface’s MTU minus 40 for IPv4 or 60 for IPv6, respectively). Of course, it can only be used in conjunction with -p tcp. It is only valid in the mangle table. This target is used to overcome criminally braindead ISPs or servers which block “ICMP Fragmentation Needed” or “ICMPv6 Packet Too Big” packets. The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines behind it can never exchange large packets:
1) Web browsers connect, then hang with no data received.
2) Small mail works fine, but large emails hang.
3) ssh works fine, but scp hangs after initial handshaking.
Workaround: activate this option and add a rule to your firewall configuration like:
iptables -t mangle -A FORWARD -p tcp –tcp-flags SYN,RST SYN \
-j TCPMSS –clamp-mss-to-pmtu–set-mss value
Explicitly set MSS option to specified value.

–clamp-mss-to-pmtu
Automatically clamp MSS value to (path_MTU – 40 for IPv4; -60 for IPv6).

These options are mutually exclusive.

Мой вольный перевод:

TCPMSS
Это действие позволяет изменять значение MSS в TCP SYN пакетах, для контроля максимального размера пакетов в этом соединении (Обычно ограничивая его MTU исходящего интерфейса минус 40 байт для IPv4 или минус 60 для IPv6). Конечно, это действие может использоваться только в сочетании с -p tcp. Разрешено это только в таблице mangle. Это действие используется для преодоления преступной некомпетентности провайдеров и серверов, блокирующих “ICMP Fragmentation Needed” или “ICMPv6 Packet Too Big” пакеты. Симптомы этой проблемы – все прекрасно работает на вашем сетевом экране или роутере, но машины за ним никогда не смогут обмениваться большими пакетами:
1) Веб браузеры связываются, но просто висят без пересылки данных.
2) маленькие электронные письма приходят нормально, но большие висят.
3) ssh работает отлично, но scp висит после начальных рукопожатий(прим пер: процесс установки TCP соединения также называют “тройным рукопожатием”).
Решение: активировать эту опцию и добавить правило, подобное нижеприведенному, в конфигурацию своего сетевого экрана:
iptables -t mangle -A FORWARD -p tcp –tcp-flags SYN,RST SYN \
-j TCPMSS –clamp-mss-to-pmtu–set-mss значение
Явная установка в опции MSS специфического значения.

–clamp-mss-to-pmtu
Автоматическая установка значения MSS в (path_MTU – 40 для IPv4; -60 для IPv6).

Эти опции являются взаимоисключающими.

Как видите, много всего написали, даже описали примерные симптомы проблемы. А такое поведение провайдеров назвали “преступной некомпетентностью(criminally braindead)”, в чем я с ними полностью согласен. Давайте исследуем, как же будет работать эта опция в нашем примере. Добавляем на deb-serv-03 рекомендованное правило:

Код: Выделить всё

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360

И смотрим что получилось:
Вывод TCPDUMP#1 (на eth0 deb-serv):

Код: Выделить всё

1    ip 172.16.5.3.33792 > 192.168.0.1.80: flags [s], seq 1484543117, win 5840, options [mss 1360...], length 0
2    ip 192.168.0.1.80 > 172.16.5.3.33792: flags [s.], seq 2230206317, ack 1484543118, win 5792, options [mss 1460...], length 0
3    ip 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 1, win 1460, options [...], length 0
4    ip 172.16.5.3.33792 > 192.168.0.1.80: flags [p.], seq 1:118, ack 1, win 1460, options [...], length 117
5    ip 192.168.0.1.80 > 172.16.5.3.33792: flags [.], ack 118, win 181, options [...], length 0
6    ip 192.168.0.1.80 > 172.16.5.3.33792: flags [.], seq 1:2697, ack 118, win 181, options [...], length 2696
7    ip 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 1349, win 2184, options [...], length 0
8    ip 192.168.0.1.80 > 172.16.5.3.33792: flags [.], seq 2697:5393, ack 118, win 181, options [...], length 2696
9    ip 192.168.0.1.80 > 172.16.5.3.33792: flags [fp.], seq 5393:6380, ack 118, win 181, options [...], length 987
10    ip 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 2697, win 2908, options [...], length 0

Вывод TCPDUMP#3 (на eth0 deb-serv-05):

Код: Выделить всё

1    IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [S], seq 1484543117, win 5840, options [mss 1460...], length 0
2    IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [S.], seq 2230206317, ack 1484543118, win 5792, options [mss 1360...], length 0
3    IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4    IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5    IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], ack 118, win 181, options [...], length 0
6    IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 1:1349, ack 118, win 181, options [...], length 1348
7    IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 1349:2697, ack 118, win 181, options [...], length 1348
8    IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 1349, win 2184, options [...], length 0
9    IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 2697, win 2908, options [...], length 0
10    IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 2697:4045, ack 118, win 181, options [...], length 1348

Разбираем:
1. В строках 1-3 мы уже привычно наблюдаем установку TCP соединения. Но обратите внимание на значения MSS. В TCPDUMP#1 от deb-serv-05 приходит значение 1360, в то время как в TCDUMP#3 видно, что уходит пакет с MSS=1460. Именно так и работает правило с –set-mss 1360. Оно редактирует значение MSS у пролетающих пакетов. Для SYN пакета, пришедшего в ответ, это значение тоже отредактировано.
2. В строках 4 и 5 обоих выводов мы опять наблюдаем отправку GET запроса и подтверждение получения.
3. В строке 6 для TCPDUMP#1 и строках 6 и7 для TCPDUMP#3 видим отправку пакетов с данными, но теперь размер каждого из пакетов не превышает 1400 байт. Опять происходит странный глюк с TCPDUMP#1, где виден один большой пакет, в то время как в TCPDUMP#3 мы наблюдаем приход 2-х пакетов.
4. Дальнейший обмен пакетами идет в соответствии с правилами протокола TCP. Но ни разу размер пакета на превышал 1400 байт.

В упрощенном виде поведение MSS представлено на рис. 4. Я не стал показывать обмен данными, так как он аналогичен обычному поведению.

Рис. 4. Изменение MSS на лету.

Хотя в man iptables описаны две опции, но я пока применил только одну. Нужная опция зависит от конкретной ситуации. Все ситуации можно разделить на 2 типа:

1. На вашем маршрутизаторе сайты открываются нормально, у клиентов в локальной сети наблюдаются проблемы.
В этом случае наименьший MTU на всем пути находится именно на вашем сервере. Обычно это некие протоколы инкапсуляции, типа PPPoE, PPtP и тд. Для данной ситуации лучше всего подойдет опция –-clamp-mss-to-pmtu, которая автоматически установит минимальный MSS на все транзитные пакеты.

2. На вашем маршрутизаторе и у клиентов в локальной сети сайты не открываются.
В таком случае наименьший MTU находится где-то у провайдера и вычислить его стандартными средствами сложновато. Специально для этого я написал скрипт на python, который поможет определить необходимый размер MSS для данной ситуации:

#!/usr/bin/env python
# -*-coding: utf-8 -*-
# vim: sw=4 ts=4 expandtab ai

import socket
import os
import time
import sys

# Полное имя веб сервера на котором проводятся испытания. Следует выбирать из
# сайтов, которые точно не работают.
HOST = 'www.site.local'
# Временной интервал, в течении которого следует ожидать ответа от сайта.
# Слишком маленькое значение может породить ложные срабатывания, слишком
# большое - долгое время работы скрипта.
TIMEOUT = 25.0
# Количество байт, которые надо получить с веб сервера, чтобы убедится что он
# наверняка работает. Рекомендуется устанавливать большим нежели значение MTU
BUF = 3000
# Значение MTU на интерфейсе в интернет.
MTU = 1500
# Значение MSS будет искаться в пределе от MTU-LIM-40 до MTU-40. Запрещено
# ставить значение больше MTU и не рекомендуется ставить значения более чем
# 100-200 - это может привести к большому времени работы скрипта.
LIM = 100
# Задержка между обращениями к сайту. Рекомендуется устанавливать отличной от
# нуля на медленном канале.
TRY_TIME = 0

def set_mss(mss, action='A'):
    return os.system("iptables -t mangle -%s OUTPUT -p tcp --tcp-flags \
            SYN,RST SYN -j TCPMSS --set-mss %d" % (action, mss) )

def check_connection(host):
    s = socket.socket()
    s.connect( (host, 80) )
    s.send('GET / HTTP/1.1\r\nHost: %s\r\n\r\n' % host)
    s.settimeout(TIMEOUT)
    try:
        d = len( s.recv(BUF) )
    except:
        d = 0
    s.close()
    return d

def main():
    mss = MTU - 40
    if not check_connection(HOST):
        mss = MTU - 40 - LIM
        set_mss(mss)
        if not check_connection(HOST):
            set_mss(mss,'D')
            print "Error: Too small LIM"
            sys.exit(1)
        else:
            while check_connection(HOST):
                time.sleep(TRY_TIME)
                set_mss(mss,'D')
                if mss >= MTU-40:
                    print "Error in determining MSS"
                    sys.exit(1)
                mss += 1
                set_mss(mss)
            set_mss(mss,'D')
            mss -= 1
    print 'MSS = %d' % (mss)

if __name__ == '__main__':
    main()
    sys.exit(0)

Запускать скрипт нужно с правами суперпользователя. Алгоритм его работы таков:
1. Пытаемся получить некоторое количество данных с сайта с нормальным значением MSS.
2. Если это не получается, то понижаем MSS на iptables цепочке OUTPUT до MTU – 40 – LIM.
3. Если и после этого мы не можем получить данные, то выдаем ошибку о том, что LIM имеет слишком маленькое значение.
4. Последовательно наращивая MSS, ищем тот момент, когда данные перестанут поступать. После этого выводим последнее рабочее значение MSS.
5. Если мы дошли до MSS=MTU-40, то выводим ошибку о том, что не можем определить MSS. Данная ситуация является ошибочной, т. к. в пункте 1 проводим аналогичную проверку, и, если результаты не совпадают, это повод задуматься.

После получения нужного MSS необходимо вписать его в соответствующее правило (используя –set-mss). Можно обойтись и без скрипта, на глаз понизив значение MSS, но лучше выяснить его точно – меньше накладые расходы на пересылку пакетов.

Внимание! Чтобы использовать эти правила для iptables в ядре должны быть включены две опции – CONFIG_NETFILTER_XT_TARGET_TCPMSS и CONFIG_NETFILTER_XT_MATCH_TCPMSS. Проверить можно например так:

cat /boot/config-2.6.26-2-686 | grep TCPMSS
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m

Как видите у меня они подключены модулями.

Часто на форумах можно встретить советы понизить MTU на том или ином интерфейсе. Нужно понимать, что это не панацея, и результат зависит от того, на каком интерфейсе понижать. Если понизим на одном из интерфейсов участников TCP соединения, то это принесет эффект, так как заявленная MSS будет соответствовать минимальному размеру пакета. Но если это будут не конечные точки, а один из транзитных маршрутизаторов, то без включения опции –clamp-mss-to-pmtu никакого эффекта не будет.

Надеюсь данная статья поможет Вам решить подобную проблему как у себя, так и у ваших друзей и знакомых. Еще раз обращаюсь к специалистам провайдеров – НЕ БЛОКИРУЙТЕ ICMP ТИП 3 КОД 4 – этим вы создаете проблемы вашим колегам.

image_pdfimage_print

Postfix: lost connection with while sending message body

Увидел в логах ошибку

...status=deferred (lost connection with mx2.qq.com[203.205.219.58] while sending message body)

postfix не отправлял письмо с вложением (~20 Mb) только на один хост, отваливаясь с этим сообщением.

Просидел с tcpdump-ом весь вечер, перепробовал всевозможные способы решения с sysctl, но помог только один – временно установить на интерфейсе MTU меньшего размера:

# ifconfig em0 mtu 1400

после отправки вернул назад:

# ifconfig em0 mtu 1500

Источники:

image_pdfimage_print

Как сделать ssh туннель и вывести через него браузер

Задача была в том, чтобы все запросы браузера шли через удаленный сервер. Рассматривается пример проброса для windows, туннель будем настраивать через putty, а браузером будет FireFox.

Удаленный сервер

На сервере должен быть поднят сервер ssh и разрешены socks.
Более ничего не требуется.

Настройка putty

  1. Скачать и установить PuTTY
  2. Создаем сессию: заполняем адрес хоста и порт:pic1
  3. Можно сохранить сессию
  4. Открывает, в левом дереве, Connection->SSH->Tunnels
  5. В поле SourcePort вводим 8080 (можно ввести любой другой порт, главное потом указать такой же в настройках браузера)
  6. Выбираем Dynamic в секции Destinationpic1
  7. Нажимаем Add, видим, что в поле выше добавилось D8080
  8. Возвращаемся во вкладку Session и нажимаем Save, для сохранения результатов.

Настройка FireFox

  1. Заходим в настройки браузера, выбираем вкладку Дополнительные, в секции Соединение нажимаем Настроить.pic1
  2. Выбираем Ручная настройка прокси – Узел SOCKS, указываем 127.0.0.1 и порт 8080 (из 5го пункта настроек putty)pic1
  3. Нажимаем OK – все, можно зайти на www.2ip.ru и проверить ip адрес
image_pdfimage_print

nmap

Несколько полезных опций:

  • -P0 – Не пинговать хост перед сканированием. Полезно в случаях, когда ICMP- игнорируются сервером.
  • -O – Позволяет задействовать систему определения OS fingerprints, иногда полезно знать, на какой оси работает компьютер.
  • -v – Вербализация. Очень полезная штука – выдает гораздо больше информации о том, что было обнаружено при сканировании.
  • -o <имя файла> – Позволяет задать имя файла, куда будут записаны результаты сканирования.
  • -p <порт/порты> – Опция, с помощью которой можно задавать конкретный номер сканируемого порта или же диапазон портов. Например, -p 23, -p 1-105 и так далее. По умолчанию просматривается диапазон с первого по 1024 порт.
  • -F – При сканировании рассматриваются только те порты, которые внесены в вышеупомянутый список “известных сервисов”. Эта опция существенно ускоряет процесс сканирования.

Способы задачи адресов:

  1. 192.168.1.1 – прямой
  2. 192.168.*.* – по маске
  3. 192.168.0-255.0-255  – диапазон
  4. 192.168.1-50,51-255.1,2,3,4,5-255 – диапазоны
  5. 192.168.0.0/16 – сабнет (для сетей класса С используется маска /24)

Пример стандартного сканирования одного хоста, с определением версии операционной системы, повышенной вербализацией и записью в лог файл:

# nmap -sS -O -v -o scan_host.log host.com
image_pdfimage_print

openvpn посмотреть кто сейчас подключен

Через openvpn-status.log:

# cat openvpn-status.log | grep 10.8.*
10.8.0.18,tst-svm-web,94.4.21.11:1194,Sat Jun 8 10:01:02 2019
10.8.0.10,note-tst,192.168.1.1:35510,Sat Jun 8 10:01:22 2019

Через консоль (предварительно прописав строку в server.conf)

# echo "management localhost 7505" >> /etc/openvpn/server.conf
# systemctl restart openvpn@server
# systemctl status openvpn@server

и соединившись по telnet/nc:

# telnet 127.1 7505
status
OpenVPN CLIENT LIST
Updated,Sat Jun  8 10:20:20 2019
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
tst-svm-web,94.4.21.11:1194,37268,41775,Sat Jun  8 09:57:54 2019
note-tst,192.168.1.1:54486,9973,5094,Sat Jun  8 10:23:00 2019
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.18,tst-svm-web,94.4.21.11:1194,Sat Jun  8 10:01:02 2019
192.168.0.0/24,tst-svm-web,94.4.21.11:1194,Sat Jun  8 09:57:54 2019
10.8.0.10,note-tst,192.168.1.1:35510,Sat Jun  8 10:01:21 2019
GLOBAL STATS
...
image_pdfimage_print

Clonehdd

Любой из нас хорошенько задумывается над тем, как правильно разбить HDD при установке FreeBSD. Действительно, потом будет весьма проблематично изменить размер патриции при необходимости. Проблема заключается в том, что на жестком диске находятся, так называемые, слайсы, а уже в них инкапсулированы партиции. Это не всегда так, потому что есть еще и второй метод разметки HDD без слайсов, но в данной статье он не рассматривается. Популярные программы для работы с разделами HDD, такие как Partition Magic, Acronis могут удалить слайс, скопировать/переместить его посекторно, но никак не заглянуть внутрь и изменить размер той или иной партиции.

Итак, есть система (далее, система — это установленная ОС FreeBSD, включающая в себя MBR, корневой раздел, SWAP, дополнительные разделы /tmp, /var и т.д.) на жестком диске объемом 80 ГБ.

Задача: перенести систему на другой жесткий диск объемом 250 ГБ, увеличивая размеры партиций пропорционально увеличению объема HDD. В нашем случае это 250-80=170 ГБ.

Вторая часть задачи: повторять эту процедуру автоматически, с определенным интервалом (для создания резервной копии системы). В обоих случаях, нужно скопировать систему полностью, т.е. не только файлы и каталоги, а и загрузочный сектор, загрузчик для сохранения возможности загрузки системы с полученной копии.

# whereis clonehdd clonehdd: /usr/ports/sysutils/clonehdd 
# cd /usr/ports/sysutils/clonehdd 
# make install clean

После установки мы видим грозное предупреждение о том, что запуская clonehdd нужно семь раз отмерить а потом уже отрезать =)) Но все не так страшно, как кажется: программа изначально рассчитана так, что данные на исходном винте никогда и ни при каких условиях не подвергнутся записи. Это сообщение больше относится к нашему новому, чистому винту. Поэтому, если вы купили чистый винт и хотите на него переехать, то вряд ли clonehdd чем то сможет навредить.

Работа с программой предельно проста. Для осуществления задуманного нам нужно всего один раз запустить утилиту с нужными параметрами. Вот о параметрах теперь поподробнее.

-src=[device] — Это исходный девайс на котором находится наша система. Чтобы узнать имя текущего винта, нужно выполнить команду:

/sbin/mount

Мы увидим таблицу, в первой колонке которой указаны имена примонтированных устройств. Вот, например: /dev/ad0s1f

/dev/» это папка, в которой находятся все устройства, «ad0» это нужное нам имя самого винта,

«s1» слайс под номером 1, «f» имя партиции на слайсе.

Вывод: значение этому параметру присваиваем «ad0»

-dst=[device] Это девайс назначения. Именно сюда переедет ваша система. Узнать его можно, например, командой:

cat /var/run/dmesg.boot

На экране появится список сообщений ядра при загрузке. Обычно, сообщения о найденных винтах находятся в самом конце. Ни одна партиция не должна быть примонтирована с этого винта, иначе CloneHDD выдасть ошибку.

-swap=[size in MB] Размер будущего раздела SWAP.

-freespace=[Required free space on dst partition] Если клонирование производится на винт меньшего размера, на DST винте после клонирования должен остаться небольшой кусочек свободного места, для того чтобы винт небыл на 100% заполнен после клонирования. По умолчанию — это 100МБ. Этим параметром его можно изменить.

-safe [Required safe mode for `dump`] Включает режим безопасного копирования. В этом режиме сначала создается образ каждого раздела в папке .snap, а потом делается перенос. В «небезопасном» режиме, копирование производится на лету. Вся проблема в том что размер этого образа равен размеру данных на разделе. А т.к. образ будет записан на тот же раздел с которого производится копирование, на разделе долно быть минимум 50% свободного места. Вернемся к параметру -safe. Если параметр отсутствует, клонирование будет произведено в безопасном режиме если достаточно свободного места или в небезопасном режиме если этого места недостаточно. Если параметр задан, небезопасного копирования не будет, и разделы с недостатком свободного места склонированы не будут.

-fstab=[Device name to write in fstab] После клонирования будет сгенерирован файл /etc/fstab на полученном винте. Параметр задает Имя девайса, который будет записан в этот файл. По умолчанию: девайс, заданный параметром -src.

-force [Do not ask any questions] При выполнении второй части задачи, утилита будет выполняться из cron’а и нам не нужны лишние вопросы, в ходе выполнения программы. Данный параметр отключает интерактивный режим и вопрос «Are you sure?» задаваться не будет.

Вернемся к нашей задаче. Мой исходный винт: ad0, новый винт: ad1.

# clonehdd -src=ad0 -dst=ad1 -swap=1024
Clone parameters:
Source partition: /dev/ad0
Dest partition: /dev/ad1
Swap size: 1024 MB
Safe dumping: Disabled
Free space on DST: 100 MB
Fstab device name: ad0
—
[OK] Found devices for clone procedure
[OK] DST partition is not in use
—
Source partition
/usr size: 64489MB, used: 10563MB
/var size: 4958MB, used: 144MB
/ size: 1483MB, used: 82MB
/tmp size: 1483MB, used: MB
Total: 72415 MB, used: 10790 MB
—
[OK] Device ad1 has enough free space
Wait 10 seconds before start: 10 9 8 7 6 5 4 3 2 1
[OK] Device /dev/ad1 made clean
[OK] New slice created
—
Destination device partitions:
SWAP size: 1024 MB
/ size 1588 MB
/tmp size 1588 MB
/var size 5306 MB
/usr size 69026 MB
—
[INF] Last partition were increased for 3 blocks
[OK] Partitions were created successfully
—

[OK] Partition /tmp was formatted successfully
Starting dump/restore procedure… [OK]

[OK] Partition /var was formatted successfully
Starting dump/restore procedure… [OK]

[OK] Partition /usr was formatted successfully
Starting dump/restore procedure… [OK]

[OK] Partition / was formatted successfully
Starting dump/restore procedure… [OK]

[OK] file /etc/fstab generated successfully

Видим сообщения об успешном клонировании. Теперь сделаем выполнение задачи по расписанию: выполнять каждый день в 2 часа ночи клонирование рабочего винта на запасной. Добавляем в файл /etc/crontab строку

0 2 * * * root clonehdd -src=ad0 -dst=ad1 -swap=1024 -force >/dev/null

Обратите внимание, что >/dev/null убивает не все сообщения. Только обычные сообщения будут опущены. Все сообщения об ошибках отсылаются на выход STDERR, не попадают на /dev/null и будут отправлены cron’ом по почте системному администратору.

 

http://subnets.ru/blog/?p=905

https://anikin.pw/all/perenos-freebsd-na-drugoy-zhestkiy-disk/

http://www.opennet.ru/base/sys/clonehdd.txt.html

 

image_pdfimage_print

Планировщик заданий: коды ошибок завершения

Обычные коды для назначенных заданий следующие:

0x0: Операция выполнена успешно.
0x1: Вызов неверной или неизвестной функции.
0xa: Ошибка в среде.

Если формат кода завершения

C0000XXX

задание не было успешно завершено (“C” указывает на ошибку). Наиболее распространенный код завершения с “C”

0xC000013A: Приложение завершено из-за нажатия сочетания клавиш CTRL+C

Также проверьте следующие данные в свойствах задания:

  • Убедитесь, что установлен флажок, включающий выполнение задания.
  • Проверьте правильность пути к программе. Кроме того, проверьте, не требует ли программа для запуска каких-либо отсутствующих параметров командной строки.

Проверка журнала назначенных заданий

Назначенные задания фиксируются в файле журнала (Schedlgu.txt) в папке c:\Windows. Журнал можно просмотреть из окна назначенных заданий, выбрав Просмотр журнала в меню Дополнительно.

Размер файла журнала 32 килобайта (КБ), после достижения максимального размера автоматически начинается запись с начала журнала поверх старых данных.

Расширенное описание кодов ошибок можно прочитать в MSDN:

Task Scheduler Error and Success Constants (для Windows 2008 server и Windows Vista)

System Error Codes

image_pdfimage_print