вторник, 18 июня 2013 г.

Изменение рамера ext3 и удаление физического тома из группы томов в LVM

Все начиналось с того, что при покупке нового винчестера 2Тб против 500Гб (было до этого) мне показалось мало и я решил на старом винте оставить 100Гб для системы и /home, а остальные ~400Гб объединить с новым винтом. Однако, во мне закралась мысль, что это не есть хорошо для сохранности данных. Потому что доступ к данным будет потерян, если погибнет один из винтов. Также, если переставить новый винт в другой комп без старого доступ к инфе также не получить (надо проверить). Поэтому, пока еще не поздно, я решил  убрать из логического тома (LV) на сервере один из физических томов (PV).
После недолго гугления мысли в голове закрутились я начал действовать. Мои вчерашние действия можно назвать хаотично-лихорадочными, однако, сегодня я успешно захватил мир закончил осуществять свой план.

Тех. задание:
Имеем: логический том (LV) store в группе (VG) media. Группа состоит из двух физических томов (PV): /dev/sdc1 (2Тб) и /dev/sda4 (500Гб).
1.Уменьшаем ФС (ext3) на LV до 1,6Тб (размер ФС выбираем такой, чтобы она был гарантировано меньше полученного LV, иначе можно потерять данные).
2. Уменьшаем LV до размера меньше, чем PV, который останется.
3. Удаляем PV /dev/sda4 из группы томов.
4. Увеличиваем LV
5. Увеличиваем ФС

Итак, начнем..
1. Заходим под рутом или делаем su:
$ su
2. Гасим все программы, которые могут обращаться к разделу:
# /etc/init.d/samba stop
# /etc/init.d/transmission-daemon stop
# /etc/init.d/dropbox stop
# /etc/init.d/proftpd stop 
3. Отмонтируем раздел от дерева каталогов:
# umount /media
4. Проверим раздел на ошибки (быстрая проверка):
 # fsck -n /dev/media/store
Если ошибок нет, мы должны увидеть такие строчки:
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
/dev/mapper/media-store: clean, 293893/122101760 files, 223987569/488377344 blocks
5. Теперь удалим журнал с раздела, тем самым переведя его в ext2:
# tune2fs -O ^has_journal /dev/media/store
6. Снова проверяем раздел  (процесс занимает порядка 15 минут для 2Тб):
# fsck -f /dev/media/store
Получаем:
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
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/mapper/media-store: 293893/122101760 files (5.2% non-contiguous), 223987569/488377344 blocks
7. Собственно изменяем размер ФС:
# resize2fs /dev/media/store 1700G 
Важно! Еще раз перепроверьте указанный размер! Операция занимает значительное время, поэтому используйте UPS, если сидите через SSH используйте также screen:
# screen -m -A -S name_session
8. Уменьшаем размер LV:
# lvreduce -L1700G /dev/media/store
Примечание. Вместе с опцией -L можно указать как конечный размер тома: -L170G, так и значение на которое нужно уменьшить размер тома: -L-170G.
9. Убеждаемся, что физический том не используется никакими логическими томами. Для этого используем:
# pvdisplay /dev/sda4
--- NEW Physical volume ---
PV Name /dev/sda4
VG Name
PV Size 406,94 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID QrMY12-sJrt-QJnr-EKeM-1Iod-fmuI-3J8IIR
Если это не так, то нужно перенести данные на другой том. Подробнее смотрите в [2].
10. Теперь удаляем физический том "/dev/sda4" из группы томов "media":
# vgreduce media /dev/sda4
11. Проверяем осталось ли не распределенные экстенты (свободное место) в группе томов командой:
# vgdisplay
 --- Volume group ---
VG Name media
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 8
VG Access read/write
VG Status resizable
  -------------
VG Size 1,82 TiB
PE Size 4,00 MiB
Total PE 476931
  Alloc PE / Size 473588 / 1,81 TiB
  Free PE / Size 3343 / 13,3GiB
VG UUID MYDxI3-3Q3A-dna5-NLoF-LWj2-pLBn-MysXB0
12. Увеличиваем, если нужно, размер логического тома.
Можно оперировать (мега, гига, тера)байтами, если нужно не сто процентное заполнение:
# lvextend -L+13G
Или указываем количество экcтентов (3343):
# lvextend -l+3343
13. Теперь увеличиваем размер файловой системы:
# resize2fs /dev/media/store
Примечание. По умолчанию, если опускается параметр size, то файловая система увеличивается до размеров раздела (e2fsprogs v1.42.5).
14. Включаем журнал на файловой системе:
# tune2fs -j /dev/media/store
15. Монтируем раздел в указанную папку:
# mount /dev/media/store /media 
16. Проверяем:
# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/media-store 1,8T 826G            1009G       46%        /home/bycter/store
17. Пользуемся.

Ссылки:
1. How To Resize ext3 Partitions Without Losing Data.
2. Повесть о Linux и LVM (Logical Volume Manager).