SokolovS Опубликовано 24 марта, 2010 (изменено) · Жалоба Есть внешняя система хранения данных. Расширяем физический диск (т.е. добавляем новый винт потом RAID Expand, затем Volume Expand). Все зашибись физический размер увеличился но система естественно этого не видит, как ее заставить увидеь новый размер? Без перезагрузки естественно. Система CentOS 5.4 Изменено 24 марта, 2010 пользователем SokolovS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 24 марта, 2010 · Жалоба Если используемая на этом томе ФС позволяет изменение размеров без размонтирования - то соответствующими утилитами. Если не позволяет - то никак. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
f13 Опубликовано 24 марта, 2010 · Жалоба кстати, да сам с таким столкнулся EvilShadow, SokolovS говорит про увеличение размера физического диска, а не фс, с фс то всё понятно и так Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 24 марта, 2010 · Жалоба кстати, да сам с таким столкнулсяEvilShadow, SokolovS говорит про увеличение размера физического диска, а не фс, с фс то всё понятно и так Вот именно! Физического диска, с ФС все понятно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 24 марта, 2010 · Жалоба Вот именно! Физического диска, с ФС все понятно.Тогда я чего-то не понимаю. Потому чтоВсе зашибись физический размер увеличилсяТак увеличился или не увеличился? И если увеличился, как Вы это определили? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 24 марта, 2010 · Жалоба мне тут скриптик scsi_rescan.sh попадался. На виртуалках помогает - видит добавление\удаление диска, изменение раздела... Могу запостить, если что... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
f13 Опубликовано 24 марта, 2010 · Жалоба EvilShadow, диск увеличивается, но ос об этом узнает только после перезагрузки martin74, было бы замечательно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 24 марта, 2010 · Жалоба echo '- - -' > /sys/class/scsi_host/${host_number}/scan Но всё-таки, как определили, что он увеличился? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 24 марта, 2010 · Жалоба #!/bin/bash # Skript to rescan SCSI bus, using the # scsi add-single-device mechanism # (w) 1998-03-19 Kurt Garloff <kurt@garloff.de> (c) GNU GPL # (w) 2003-07-16 Kurt Garloff <garloff@suse.de> (c) GNU GPL # $Id: rescan-scsi-bus.sh,v 1.15 2004/05/08 14:47:13 garloff Exp $ setcolor () { red="\e[0;31m" green="\e[0;32m" yellow="\e[0;33m" norm="\e[0;0m" } unsetcolor () { red=""; green="" yellow=""; norm="" } # Return hosts. sysfs must be mounted findhosts_26 () { hosts= if ! ls /sys/class/scsi_host/host* >/dev/null 2>&1; then echo "No SCSI host adapters found in sysfs" exit 1; #hosts=" 0" #return fi for hostdir in /sys/class/scsi_host/host*; do hostno=${hostdir#/sys/class/scsi_host/host} hostname=`cat $hostdir/proc_name` hosts="$hosts $hostno" echo "Host adapter $hostno ($hostname) found." done } # Return hosts. /proc/scsi/HOSTADAPTER/? must exist findhosts () { hosts= for driverdir in /proc/scsi/*; do driver=${driverdir#/proc/scsi/} if test $driver = scsi -o $driver = sg -o $driver = dummy -o $driver = device_info; then continue; fi for hostdir in $driverdir/*; do name=${hostdir#/proc/scsi/*/} if test $name = add_map -o $name = map -o $name = mod_parm; then continue; fi num=$name driverinfo=$driver if test -r $hostdir/status; then num=$(printf '%d\n' `sed -n 's/SCSI host number://p' $hostdir/status`) driverinfo="$driver:$name" fi hosts="$hosts $num" echo "Host adapter $num ($driverinfo) found." done done } # Test if SCSI device $host $channen $id $lun exists # Outputs description from /proc/scsi/scsi, returns new testexist () { grepstr="scsi$host Channel: 0*$channel Id: 0*$id Lun: 0*$lun" new=`cat /proc/scsi/scsi | grep -e"$grepstr"` if test ! -z "$new"; then cat /proc/scsi/scsi | grep -e"$grepstr" cat /proc/scsi/scsi | grep -A2 -e"$grepstr" | tail -n2 | pr -o4 -l1 fi } # Perform search (scan $host) dosearch () { for channel in $channelsearch; do for id in $idsearch; do for lun in $lunsearch; do new= devnr="$host $channel $id $lun" echo "Scanning for device $devnr ..." printf "${yellow}OLD: $norm" testexist if test ! -z "$remove" -a ! -z "$new"; then # Device exists and we're in remove mode, so remove and readd echo "scsi remove-single-device $devnr" >/proc/scsi/scsi echo "scsi add-single-device $devnr" >/proc/scsi/scsi printf "\r\x1b[A\x1b[A\x1b[A${yellow}OLD: $norm" testexist if test -z "$new"; then printf "\r${red}DEL: $norm\r\n\n\n\n"; let rmvd+=1; fi fi if test -z "$new"; then # Device does not exist, try to add printf "\r${green}NEW: $norm" echo "scsi add-single-device $devnr" >/proc/scsi/scsi testexist if test -z "$new"; then # Device not present printf "\r\x1b[A"; # Optimization: if lun==0, stop here (only if in non-remove mode) if test $lun = 0 -a -z "$remove" -a $optscan = 1; then break; fi else let found+=1; fi fi done done done } # main if test @$1 = @--help -o @$1 = @-h -o @$1 = @-?; then echo "Usage: rescan-scsi-bus.sh [options] [host [host ...]]" echo "Options:" echo " -l activates scanning for LUNs 0-7 [default: 0]" echo " -w scan for target device IDs 0 .. 15 [default: 0-7]" echo " -c enables scanning of channels 0 1 [default: 0]" echo " -r enables removing of devices [default: disabled]" echo "--remove: same as -r" echo "--nooptscan: don't stop looking for LUNs is 0 is not found" echo "--color: use coloured prefixes OLD/NEW/DEL" echo "--hosts=LIST: Scan only host(s) in LIST" echo "--channels=LIST: Scan only channel(s) in LIST" echo "--ids=LIST: Scan only target ID(s) in LIST" echo "--luns=LIST: Scan only lun(s) in LIST" echo " Host numbers may thus be specified either directly on cmd line (deprecated) or" echo " or with the --hosts=LIST parameter (recommended)." echo "LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges" echo " (No spaces allowed.)" exit 0 fi expandlist () { list=$1 result="" first=${list%%,*} rest=${list#*,} while test ! -z "$first"; do beg=${first%%-*}; if test "$beg" = "$first"; then result="$result $beg"; else end=${first#*-} result="$result `seq $beg $end`" fi test "$rest" = "$first" && rest="" first=${rest%%,*} rest=${rest#*,} done echo $result } if test ! -d /proc/scsi/; then echo "Error: SCSI subsystem not active" exit 1 fi # defaults unsetcolor lunsearch="0" idsearch=`seq 0 7` channelsearch="0" remove="" optscan=1 if test -d /sys/class/scsi_host; then findhosts_26 else findhosts fi # Scan options opt="$1" while test ! -z "$opt" -a -z "${opt##-*}"; do opt=${opt#-} case "$opt" in l) lunsearch=`seq 0 7`;; w) idsearch=`seq 0 15`;; c) channelsearch="0 1";; r) remove=1;; -remove) remove=1;; -hosts=*) arg=${opt#-hosts=}; hosts=`expandlist $arg`;; -channels=*) arg=${opt#-channels=};channelsearch=`expandlist $arg`;; -ids=*) arg=${opt#-ids=}; idsearch=`expandlist $arg`;; -luns=*) arg=${opt#-luns=}; lunsearch=`expandlist $arg`;; -color) setcolor;; -nooptscan) optscan=0;; *) echo "Unknown option -$opt !";; esac shift opt="$1" done # Hosts given ? if test "@$1" != "@"; then hosts=$*; fi echo "Scanning hosts $hosts channels $channelsearch for " echo " SCSI target IDs " $idsearch ", LUNs " $lunsearch test -z "$remove" || echo " and remove devices that have disappeared" declare -i found=0 declare -i rmvd=0 for host in $hosts; do dosearch; done echo "$found new device(s) found. " echo "$rmvd device(s) removed. " Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 24 марта, 2010 · Жалоба echo '- - -' > /sys/class/scsi_host/${host_number}/scanПопробую.Но всё-таки, как определили, что он увеличился?Очень просто, у внешних систем хранения данных есть интерфейс управления (RS232, Telnet, Web и.т.д) там видно что размер увеличился. Но, система сканирует размеры физических носителей только в момент загрузки и потом это значение не меняется. Вобщем так. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 24 марта, 2010 · Жалоба Если у Вас всё построено на LVM, то расширяться на ходу можно добавляя, например 2 новых винта в RAID1 и сказать рейд-контроллеру, чтобы представлял их одним логическим устройством, после этого выполняем команду из сообщения #8, затем создаём из нового устройства PV, добавляем PV в LG, расширяем LV за счёт нового пространства LG, а дальше уже в рамках LV расширяем конкретную точку монтирования или создаём новую Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 24 марта, 2010 · Жалоба Но всё-таки, как определили, что он увеличился?Очень просто, у внешних систем хранения данных есть интерфейс управления (RS232, Telnet, Web и.т.д) там видно что размер увеличился. Но, система сканирует размеры физических носителей только в момент загрузки и потом это значение не меняется. Вобщем так. Понял, спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
f13 Опубликовано 25 марта, 2010 · Жалоба SokolovS, если удастся отпишите, а то тестового сервера сейчас у меня нет, а на боевом железе экспериментировать как-то не хорошо :) да, есть ещё /usr/bin/rescan-scsi-bus.sh и /usr/bin/scsi-rescan в пакете sg3_utils, может это то самое Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 26 марта, 2010 (изменено) · Жалоба 2f13: данный скрипт действительно идет в sg3-utils и нужен для того чтобы добавить или удалить SCSI устройство без перезагрузки, размер уже подключенного устройства при этом не изменяется, т.е. он просто сканирует шину. Реальнг для рескана размера в режиме онлайн нужно выполнить команду echo 1 > /sys/block/sdX/device/rescan Найдено тут: http://www.redhat.com/docs/en-US/Red_Hat_E...i-resizing.html Это работает. Если что, вот скрипт рескана размера для всех блочных устройств #!/bin/sh block_dir=/sys/block echo "Rescan block device SIZE:" for dir in `ls $block_dir`; do root_path=$block_dir/$dir dev_path=$block_dir/$dir/device rescan_fpath=$dev_path/rescan if [ -e $rescan_fpath ]; then rev=`cat $dev_path/rev` vendor=`cat $dev_path/vendor` model=`cat $dev_path/model` old_sectr=`cat $root_path/size` echo -n "Rescan size for '$vendor $model rev. $rev': " echo 1 >$rescan_fpath [ "$?" = "0" ] && echo -n "OK!" || echo -n "FAIL!!!" new_sectr=`cat $root_path/size` echo " (OLD sectors '$old_sectr', NEW sectors '$new_sectr')" fi done Изменено 26 марта, 2010 пользователем SokolovS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 26 марта, 2010 · Жалоба Есть одна проблема, на большие устройства ругается таким сообщением: kernel: sda : very big device. try to use READ CAPACITY(16). kernel: SCSI device sda: 17578119168 512-byte hdwr sectors (8999997 MB) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 26 марта, 2010 · Жалоба Похоже это все таки не ошибка, просто т.к. размер больше 2Тб, используется READ CAPACITY(16). Подсчитывается правильный размер, но почему то fdisk -l в упор не видит этого нового размера. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 26 марта, 2010 · Жалоба fdisk не умеет работать с дисками большими, чем 2T. Используйте LVM. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 26 марта, 2010 · Жалоба Это все понятно, работать не умеет, но размер по fdisk -l покажет. Работаю с помощью parted. В общем вопрос не решен, новый размер не записывается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 26 марта, 2010 · Жалоба невозможно создать раздел более 2Т. Просто нет места в mbr для его размера. [root@files ~]# fdisk -l Диск /dev/sda: 320.0 ГБ, 320072933376 байт 255 heads, 63 sectors/track, 38913 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 38913 312464250 8e Linux LVM Диск /dev/sdb: 3495.0 ГБ, 3495019151360 байт 255 heads, 63 sectors/track, 424911 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт На диске /dev/sdb отсутствует верная таблица разделов Диск /dev/sdc: 3495.0 ГБ, 3495019151360 байт 255 heads, 63 sectors/track, 424911 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт На диске /dev/sdc отсутствует верная таблица разделов Диск /dev/sdd: 3495.0 ГБ, 3495019151360 байт 255 heads, 63 sectors/track, 424911 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт На диске /dev/sdd отсутствует верная таблица разделов [root@files ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup00 lvm2 a- 297,97G 0 /dev/sdb files0 lvm2 a- 3,18T 0 /dev/sdc files1 lvm2 a- 3,18T 0 /dev/sdd files2 lvm2 a- 3,18T 0 [root@files ~]# Вот только что parted, что fdisk при попытке на том самом sdb создать раздел на весь том создавали раздел на 250Г..... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 29 марта, 2010 · Жалоба На больших дисках parted'ом надо создавать таблицу разделов не MBR, а GPT. Но загрузится с такой штуки скорее всего не выйдет, поэтому делают маленькое блочное устройство для /boot или системы, а остальное - на GPT. Использование блочного устройства целиком без MBR/GPT может быть чревато - можно ненароком ошибиться и что-нибудь затереть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
RushOnline Опубликовано 29 марта, 2010 · Жалоба На больших дисках parted'ом надо создавать таблицу разделов не MBR, а GPT. Но загрузится с такой штуки скорее всего не выйдет, поэтому делают маленькое блочное устройство для /boot или системы, а остальное - на GPT. Использование блочного устройства целиком без MBR/GPT может быть чревато - можно ненароком ошибиться и что-нибудь затереть. Абсолютно плюсуюсь. Насчёт перечитывания системой изменившегося физического объёма (подцепили вторую корзину на 10TiB, итого стало 20TiB) - мне так и не удалось, пришлось перезагрузать. Пытался сделать и hdparm -w, hdparm -w (опасно!), partprobe, и долго мучал Dell'овскую утилиту MegaCLI64. После перезагрузки - без проблем, система увидела новый объём. Да, и ещё - мой parted не смог ни resize ни move (собирал самый новый - пофиг), поэтому пришлось тупо запомнить начало расширяемой паритиции, потом удалить её, а потом создать заново с тем же началом и другим концом. После монтирования (именно так) выполнил xfs_growfs - вуаля, всё ок. За что люблю xfs - никогда проблем с ним не было ни на больших нагруженных серверах, ни на десктопах, и даже на нетбуке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 14 апреля, 2010 · Жалоба Да, и ещё - мой parted не смог ни resize ни move (собирал самый новый - пофиг), поэтому пришлось тупо запомнить начало расширяемой паритиции, потом удалить её, а потом создать заново с тем же началом и другим концом. После монтирования (именно так) выполнил xfs_growfs - вуаля, всё ок. За что люблю xfs - никогда проблем с ним не было ни на больших нагруженных серверах, ни на десктопах, и даже на нетбуке. Поступаю точно так же. Запоминаю границы, удаляю, создаю заново с новым концом. Потом mount -o remount,resize (у меня jfs). parted действительно может ресйзить только ext3. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...