Как сжать / домой и добавить больше места на CentOS7

28

CentOS 7Файловая система есть XFS, и resize2fsне работает. Мне нужно сжать /homeдо 400G и добавить 100G место /. Что мне делать?

# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G   50G  341M 100% /
devtmpfs                 7.8G     0  7.8G   0% /dev
tmpfs                    7.8G   84K  7.8G   1% /dev/shm
tmpfs                    7.8G  778M  7.0G  10% /run
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1                497M  241M  257M  49% /boot
tmpfs                    1.6G   16K  1.6G   1% /run/user/42
tmpfs                    1.6G     0  1.6G   0% /run/user/0
/dev/mapper/centos-home  500G   20G  480G   4% /home

Вывод lvs, vgs и pvs:

[root@localhost]~# lvs -v
    Using logical volume(s) on command line.
  LV   VG     #Seg Attr       LSize   Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log Convert LV UUID                                LProfile
  home centos    1 -wi-ao---- 499.38g  -1  -1  253    2                                                     4I53D9-7VSm-HN9H-QsSp-FvFU-5R9D-y5VwsN         
  root centos    1 -wi-ao----  50.00g  -1  -1  253    0                                                     LGRoEL-0EHz-G135-p6vx-Lt2s-RvI5-qdT9Sm         
  swap centos    1 -wi-ao----   7.81g  -1  -1  253    1                                                     UYB5xP-cEyV-lWvn-blIq-8s13-9kVB-ykjIWI         
[root@localhost]~# vgs -v
    Using volume group(s) on command line.
  VG     Attr   Ext   #PV #LV #SN VSize   VFree  VG UUID                                VProfile
  centos wz--n- 4.00m   1   3   0 557.26g 64.00m Gd5c08-ujdQ-fsix-o7z6-Wfsv-C0uW-XzDois         
[root@localhost]~# pvs -v
    Using physical volume(s) on command line.
    Found same device /dev/sda2 with same pvid TCmreQr93apETNoTl8bMc54l57FZ5hut
  PV         VG     Fmt  Attr PSize   PFree  DevSize PV UUID                               
  /dev/sda2  centos lvm2 a--  557.26g 64.00m 557.26g TCmreQ-r93a-pETN-oTl8-bMc5-4l57-FZ5hut
[root@localhost]~# 
GoingMyWay
источник
Я нашел это: blog.endpoint.com/2015/01/…, который говорит, что это невозможно, но продолжает с каким-то ответом.
Дэйви,

Ответы:

47

Как уже отмечали другие, файловая система XFS не может быть сокращена.

Поэтому лучше всего сделать резервную копию / home, удалить и воссоздать его том в меньшем размере, а остальное отдать тому / root, как об этом говорил Коен ван дер Рийт в своем посте.

• сделать резервную копию содержимого / home

> tar -czvf /root/home.tgz -C /home .

• проверить резервную копию

> tar -tvf /root/home.tgz

• размонтировать дом

> umount /dev/mapper/centos-home

• удалить домашний логический том

> lvremove /dev/mapper/centos-home

• воссоздать новый логический том 400 ГБ для / home, отформатировать и смонтировать его

> lvcreate -L 400GB -n home centos
> mkfs.xfs /dev/centos/home
> mount /dev/mapper/centos-home

• Расширьте свой / корневой том ВСЕМ оставшегося места и измените размер (-r) файловой системы при этом

> lvextend -r -l +100%FREE /dev/mapper/centos-root

• восстановить резервную копию

> tar -xzvf /root/home.tgz -C /home

• проверьте / etc / fstab на предмет соответствия тома / home. Если он использует UUID, вы должны обновить часть UUID. (Поскольку мы создали новый том, UUID изменился)

Вот и все.

Надеюсь это поможет.

Ari
источник
1
при монтировании может быть ошибка target is busy, может помочь umount -l / dev / mapper / centos-home. и может появиться другая ошибка: «Логический том centos / home содержит используемую файловую систему», может помочь fuser -kuc / dev / vg_data / backup.
Буксижижум
Следуя совету @ buxizhizhoum, команда yum install psmiscбыла необходима для того, fuserчтобы быть доступным.
Мифофешелон
Это действительно сработало. Спасибо! Я вошел в систему с помощью ssh, и мне нужно было разорвать соединение ssh, чтобы удалить «lvremove». В соответствии с bartрекомендациями пользователя, я запускаю restorecon -R -v /homeпосле завершения всех вышеуказанных шагов.
Икром
Спасибо. В моем сценарии мне очень помогли упомянутые команды, это всего лишь 10 минут работы. в худшем случае я сделал резервную копию виртуальной машины, затем выполнил вышеуказанные команды, после чего смог расширить корневой том.
Харша Вардхана
5

Дополнение к ответу Ари, поскольку я не смог ssh использовать аутентификацию с открытым ключом после выполнения его инструкций

С включенным selinux вы можете получить это сообщение в / var / log / messages (с включенной отладкой в ​​sshd_config), потому что / home был воссоздан:

SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys

Исправить это с помощью:

restorecon -R -v /home
Барт
источник
3

Вы не можете сжать файловую систему XFS .
Вы можете только вырастить их xfs_growfs.

См. Https://access.redhat.com/solutions/540013
и
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/xfsgrow.html.

В настоящее время невозможно уменьшить размер раздела или логического тома с помощью файловой системы xfs. В качестве возможного обходного пути в некоторых средах тома LVM с тонким предоставлением можно рассматривать как дополнительный уровень ниже файловой системы XFS.


Узнайте, что занимает так много места, /и разбейте его как свою файловую систему.

ewwhite
источник
в качестве альтернативы вы можете сделать резервную копию / домой, увидев только 20 г, и убить этот LV и воссоздать его с
нужными
Спасибо. возможно я должен разрушить /homeи перераспределить пространство по мере необходимости.
GoingMyWay
0

Вы можете сделать это только в действующей системе, если она разделена с помощью LVM - управление логическими томами. какой вывод:

lvs -v
vgs -v
pvs -v
Sum1sAdmin
источник
Сэр, я обновил вопрос, добавил вывод.
GoingMyWay
смотри выше, ты загнал себя в угол!
Sum1sAdmin
0

Первое, что вам нужно сделать, это проверить, что заняло все свободное место на диске, иначе эта проблема снова возникнет когда-нибудь в будущем.

Если вам действительно нужно изменить размер, мой подход будет:

  • сделайте резервную копию содержимого / home. (его всего 20 г)
  • umount /home
  • уничтожить домашний логический том ( lvremove)
  • выделите место по мере необходимости, измените размеры томов. ( lvextend, resize2fs)
  • пересоздать новый логический том для / home, отформатировать и смонтировать его ( lvcreate, mkfs.xfs)
  • восстановление резервной копии
  • перепроверьте содержимое / etc / fstab, что вы будете монтировать правильный том для / home
  • запустить mount -aилиreboot
Коэн ван дер Рейт
источник