LINUX.ORG.RU

Сообщения kreiz

 

lvresize/lvreduce - странная интерпретация требуемого размера.

Форум — Admin

Ребята, у меня тут что-то лыжи не едут.

Fedora Linux 39
6.6.6-200.fc39.x86_64

temp vg01 -wi-a----- <11.37t

/dev/mapper/vg01-temp   12T  2.5T  8.4T  23% /mnt

Пытаюсь уменьшить том, до 5T, получаю следующий прикол

lvresize -r -L5T /dev/vg01/temp
File system ext4 found on vg01/temp.
File system size (<11.37 TiB) is larger than the requested size (1.00 TiB).
File system reduce is required using resize2fs.
File system fsck will be run before reduce.
Reducing file system ext4 to 1.00 TiB (1099511627776 bytes) on vg01/temp...
e2fsck /dev/vg01/temp
/dev/vg01/temp: 14/381480960 files (0.0% non-contiguous), 679430522/3051815936 blocks
e2fsck done
resize2fs /dev/vg01/temp 1073741824k
resize2fs 1.47.0 (5-Feb-2023)
resize2fs: New size smaller than minimum (663495623)

resize2fs failed
File system reduce failed.
Failed to reduce file system with lvresize_fs_helper.

Если, вначале, уменьшить ФС до 5T(успешно уменьшается), а потом применить lvreduce - получается та же фигня

[root@storage ~]# e2fsck -fy /dev/vg01/temp
e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg01/temp: 14/381480960 files (0.0% non-contiguous), 679430522/3051815936 blocks

[root@storage ~]# resize2fs /dev/vg01/temp 5T
resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/vg01/temp to 1342177280 (4k) blocks.
The filesystem on /dev/vg01/temp is now 1342177280 (4k) blocks long.

mount /dev/vg01/temp /mnt/; df -h | grep mnt
/dev/mapper/vg01-temp  5.0T  2.5T  2.4T  52% /mnt - ФС уменьшилась

[root@storage ~]# lvreduce -L -5T /dev/vg01/temp
File system ext4 found on vg01/temp.
File system size (5.00 TiB) is larger than the requested size (377.75 GiB).
File system reduce is required (see resize2fs or --resizefs.)

Пробовал отнимать в экстентах, если один PE=4M, то чтобы уменьшить том на 4T, делаю соответственно

[root@storage ~]# lvreduce -l -1000000 /dev/vg01/temp
File system ext4 found on vg01/temp.
File system size (5.00 TiB) is larger than the requested size (1.55 TiB).
File system reduce is required (see resize2fs or --resizefs.)

Вопрос - что происходит? Откуда берутся эти «requested size»? Почему он не такие, как я указываю? В мане к lvresize(reduce) по прежнему указано

UNIT represents other possible input units: b|B is bytes, s|S is sectors of 512 bytes, k|K is KiB, m|M is MiB, g|G is GiB, t|T is TiB, p|P is PiB, e|E is EiB.

Пробовал указывать и в мегабайтах и в гигабайтах и в процентах, на выводе получаю такую же бессистемную чушь.

Проскакивала мысль о том, что виной может быть размер тома, который по дефолту MBR и lvresize отталкивается от размера в 2T, но попробовал провернуть такое же (оба способа) на CentOs7, уменьшив lvm-том с 7T до 5T - прошло как по маслу.

/dev/mapper/vg01-ringbackup  7.0T  2.5T  4.6T  35% /ringback
ringbackup  vg01 -wi-a-----   7.00t

 lvresize -r -L5T /dev/vg01/ringbackup
fsck from util-linux 2.23.2
/dev/mapper/vg01-ringbackup: 112744/234881024 files (34.4% non-contiguous), 666628760/1879048192 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg01-ringbackup to 1342177280 (4k) blocks.
The filesystem on /dev/mapper/vg01-ringbackup is now 1342177280 blocks long.

  Size of logical volume vg01/ringbackup changed from 7.00 TiB (1835008 extents) to 5.00 TiB (1310720 extents).
  Logical volume vg01/ringbackup successfully resized.

 ringbackup  vg01 -wi-a-----   5.00t
/dev/mapper/vg01-ringbackup  5.0T  2.5T  2.6T  49% /ringback



 ,

kreiz
()

Подстановка в имя переменной значение другой переменной + суффикс

Форум — General

Пытаюсь реализовать следующую схему:

HOSTS=$(cat << EOF
host1 #допустим это имя локалхоста
host2
host3
EOF
)

LOCALHOST=$(hostname | cut -d . -f 1)

for host in $HOSTS
do


     if [[ $host = $LOCALHOST ]]
        then
             host_local=$(command)
        else
            host_remote=$(command)
      fi
done

Вопрос в том, как объявить переменную host_local(remote) таким образом, чтобы первая её часть - host, содержала значение переменной $host, чтобы можно было потом к ней обратиться. Т.е. на выходе нужно получить переменные

$host1_local
$host2_remote
$host3_remote

содержащие результаты выполнения команд на этих хостах

 , ,

kreiz
()

Не работает цикл while, при наличии в нем обращения на другой хост

Форум — General
while read line
do
var=`ssh user@host 'command'`
echo $line
done < /home/file

При таком раскладе, скрипт отрабатывает идеально, но только один раз, на следующую итерацию не заходит.

Если убрать строку с ssh, то отрабатывает как надо и сколько нужно раз.

 , ,

kreiz
()

RSS подписка на новые темы