Сначала была успешно создана резервная копия файловой системы и проведено ее размонтирование.
Затем был выполнен lvresize, который уже работает:
lvresize --resizefs --size 1024G /dev/dbdrp/db
И показывает вывод:
fsck from util-linux-ng 2.17.2
/dev/mapper/dbdrp-db: 1718907/201326592 files (0.4% non-contiguous), 92969270/805304320 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/dbdrp-db to 268435456 (4k) blocks.
Вывод файловых систем был прежним:
[root@generic-linux-hostname ~]# df -hP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dbdrp-db 3.0T 310G 2.7T 11% /usr/local/oracle
А таблицы физических объемов содержат следующее:
PV VG Fmt Attr PSize PFree
/dev/xvdc1 dbdrp lvm2 a-- 1.50t 0
/dev/xvdd1 dbdrp lvm2 a-- 1.50t 0
После завершения изменения размера один из этих томов будет удален, чтобы повторно использовать виртуальный жесткий диск.
Как я могу увидеть ход выполнения этого lvresize? Он работает уже час, и не так уж много информации было выдано.
Спасибо ребята :)
решение1
Это может быть превышением, поскольку я не знаю внутреннего устройства, но чтобы иметь представление, вы можете попробовать следующее:
Получите pid запущенного процесса:
pgrep -afl resize2fs
2377 resize2fs -M /dev/vg0/lv-3
Здесь это было, resize2fs
но измените на lvresize (если это команда, которая действительно делает изменение размера). Затем запустите strace -e pread64,pwrite64 -p 2377
для мониторинга того, какие системные вызовы выполняет команда, чтобы вы могли увидеть, откуда она считывает и куда пишет.
Вывод будет примерно таким:
pread64(3, "<!-- ..........................."..., 1236992, 2441878626304) = 1236992
pwrite64(3, "<!-- ..........................."..., 1236992, 181592702976) = 1236992
pread64(3, "<!-- ..........................."..., 479232, 2441880231936) = 479232
pwrite64(3, "<!-- ..........................."..., 479232, 181593939968) = 479232
и если вы проверите страницу man для pread64
, вы увидите, что его сигнатура ssize_t pread(int fd, void *buf, size_t count, off_t offset)
такова, последний параметр вызова - это смещение или с какой точки блока он считывает прямо сейчас. Если вы преобразуете 2441880231936
байты в ТБ, это будет примерно 2,2 ТБ, а мой том, как показано ниже, имеет 3,44 ТБ, 2,2/3,34 = ~65%. Но это всего лишь приблизительная оценка того, где он сейчас, потому что в этом случае он изменит размер раздела до минимально возможного (из-за resize2f -M) на основе свободного места. Кроме того, я не уверен, будет ли ext4 (в моем случае) записывать данные в смежные блоки, поэтому это может быть меньше работы, чем полный диск.
lv-3 vg0 -wi-ao---- <3.34t
решение2
У lvresize нет опции прогресс-бара. Но если вы делаете изменение размера в несколько шагов, вы можете это проверить:
- Проверьте начальный размер файловой системы:
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects 19G 5.3G 13G 30% /mnt
- размонтировать:
# umount /mnt
- проверьте фс:
# e2fsck -f /dev/mapper/vg00-vol_projects
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/vg00-vol_projects: 13/1245184 files (0.0% non-contiguous), 1447987/4980736 blocks
- изменить размер файловой системы с помощью параметра progress (-p):
# resize2fs -p /dev/mapper/vg00-vol_projects 6G
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/mapper/vg00-vol_projects to 1572864 (4k) blocks.
Begin pass 2 (max = 32768)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 152)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg00-vol_projects is now 1572864 blocks long.
- проверьте начальный размер LV:
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 19.00g
- изменить размер LV без опции resizefs (мы это делали на предыдущем шаге):
# lvresize --size 6G /dev/mapper/vg00-vol_projects
WARNING: Reducing active logical volume to 6.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vol_projects? [y/n]: y
Reducing logical volume vol_projects to 6.00 GiB
Logical volume vol_projects successfully resized
- проверьте размер:
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 6.00g
- смонтируйте и проверьте размер fs:
# mount /dev/mapper/vg00-vol_projects /mnt
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects 6.0G 5.3G 402M 94% /mnt
... но я думаю, что этот способ сложнее :/