LINUX.ORG.RU
решено ФорумAdmin

Расширение раздела диска без lvm

 , , ,


1

1

Добрый день! Возникла необходимость увеличить один из разделов диска. Сервер c RHEL5 имеет аппаратный raid5 из трёх дисков по 600Гб, суммарный объём 1.2Т, разделы нарезаны без lvm:

# fdisk -l

Disk /dev/cciss/c0d0: 1200.1 GB, 1200186941440 bytes
255 heads, 63 sectors/track, 145914 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1        1958    15727603+  83  Linux
/dev/cciss/c0d0p2            1959       41121   314576797+  83  Linux
/dev/cciss/c0d0p3           41122       80284   314576797+  83  Linux
/dev/cciss/c0d0p4           80285      145914   527172975    5  Extended
/dev/cciss/c0d0p5           80285       83548    26218048+  83  Linux
/dev/cciss/c0d0p6           83549       85637    16779861   82  Linux swap / Solaris
/dev/cciss/c0d0p7           85638       87595    15727603+  83  Linux
df -h показывает следующее:
]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c0d0p1      15G  4.9G  9.0G  35% /
/dev/cciss/c0d0p7      15G  6.4G  7.4G  47% /var
/dev/cciss/c0d0p5      25G  5.2G   18G  23% /opt
/dev/cciss/c0d0p3     291G  266G  9.9G  97% /date
/dev/cciss/c0d0p2     291G   93G  183G  34% /home
tmpfs                  18G     0   18G   0% /dev/shm
то есть использовано ~600Гб. Смотрю свободное место:
# parted /dev/cciss/c0d0
GNU Parted 1.8.1
Using /dev/cciss/c0d0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free

Model: Compaq Smart Array (cpqarray)
Disk /dev/cciss/c0d0: 1200GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32.3kB  16.1GB  16.1GB  primary   ext3         boot
 2      16.1GB  338GB   322GB   primary   ext3
 3      338GB   660GB   322GB   primary   ext3
 4      660GB   1200GB  540GB   extended
 5      660GB   687GB   26.8GB  logical   ext3
 6      687GB   704GB   17.2GB  logical   linux-swap
 7      704GB   720GB   16.1GB  logical   ext3
        720GB   1200GB  480GB             Free Space
то есть имеется неразмеченная область в 480Гб.

Задача стоит расширить точку монтирования /date на 100Гб. Как правильно это сделать, желательно без простоя системы? Пока только есть вариант нарезать раздел из неразмеченной области, скопировать туда всё из /date и примонтировать его. Возможно ли существующие разделы как-то воткнуть в lvm без потери данных и спокойно увеличивать потом на лету?

У тебя свободное место не примыкает к разделу, который ты увеличить хочешь. Или городить raid или что-то похожее, если не хочешь двигать то, что за ним. Или двигать то, что отделяет его от свободного места.

Radjah ★★★★★
()

Гипотетически можно снести mbr, поджать первый раздел, сделать на рейде pv и на нем создать lv, указав экстенты так, чтобы они попали точно на старые данные (не забыть ключик, запрещающий lvcreate затирать фс). Но делать это на проде я бы не рискнул.

Если делать без эквилибристики, через копирование на пустое место, то можно сократить даунтайм используя rsync в два приема - один на горячую, второй окончательный на остановленном сервере.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

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

Получается, я делаю новую партицию /dev/cciss/c0d0p8 которая начинается на отметке 720GB и до конца, rsync'ом копирую на горячую. Даунтайм так или иначе будет? Зачем нужен второй rsync на остановленном сервере?

barabulka
() автор топика
Ответ на: комментарий от barabulka

Этот сценарий применим к файлопопойке. Если у вас данные - это база данных, то нижеследующее делать нельзя (бесполезно).

0. форматируете новый раздел, монтируете временно куда-нибудь.

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

Когда я у себя на локалхосте переносил корень на lvm рсинк вызывал так:

rsync -aHAXDSx --del --stats / root_new/
слеши в конце путей обязательно!

2й этап. останавливаете на сервере всё, что нуждается в переносимых данных, перемонтируете исходный раздел в ro. Повторно запускаете rsync, он найдёт изменившиеся с 1 этапа файлы и перекопирует их. дальше можно отмонтировать старый и смонтировать новый на его место. Старый лучше не удалять некоторое время, мало ли какие косяки всплывут.

Рсинк ориентируется по размерам и mtime файлов, если ваши программы меняют файлы и не трогают mtime то могут быть аномалии. Например, ms excel сохраняет позицию скролла в xls не трогая дату изменения (впрочем с ним проблем нет).

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Ок, спасибо, понимаю что сразу по второму этапу надо будет идти, с остановом БД, так как именно раздел с базой требует расширения. Новую партицию буду сразу форматить с поддержкой lvm, копирую всё нужное, монтирую вместо старой, проверяем работоспособность.

Потом уже отмонтированную старую партицию грохаю и форматирую так же с поддержкой lvm и добавляю в новообразованную группу томов.

barabulka
() автор топика
Ответ на: комментарий от barabulka

Ну да,как-то так. Получится несколько pv на одном рейде, не очень изящно, но терпимо.

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

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Соглашусь. Тоже так делал когда-то. Действительно «не очень изящно». Морально напрягает. По факту отработала нормально.
Но если учесть что у ТС raid5, мне кажется там вообще ничего не страшно.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.