На сервере, к которому у меня есть доступ только через ssh и vnc (что означает невозможность загрузки с "живого" CD / DVD), я хотел бы уменьшить раздел, назначенный / var (чтобы освободить место для дополнительная перегородка). Какой хороший и безопасный способ сделать это?
Решение (на основе ответа Дэвида Спиллета, при условии, что у вас достаточно места на / для размещения копии / var):
Если у вас есть место в корневом разделе для содержимого / var, вы можете:
/var
где возможноmount -f -oremount,ro /var
/var
к /
под другим именем с mkdir /vartmp; cp -av /var/* /vartmp/
mv /var /varmount; mv /vartmp /var
/var
в /etc/fstab
Теперь у вас должно быть /var
на своем корневом разделе, а не на своем. Теперь вы можете изменить размер старого раздела по мере необходимости. Шаг 4 должен позволить вам переименовать /var
каталог, даже если он используется как точка монтирования и в противном случае занят (и работает с открытыми файлами, там будет отслеживаться изменение, поскольку открытые файлы не упоминаются по пути + имени, а вместо этого по индексу после открытия).
Если у вас нет места на /
но делай дальше /someotherfs
тогда вы можете попробовать переместить его туда с помощью символической ссылки в /
вот так:
/var
где возможноmount -f -oremount,ro /var
/var
с участием cp -av /var /someotherfs/var
mv /var /varmount; ln -s /someotherfs/var /var
/var
в /etc/fstab
Это немного более рискованно, так как вы должны быть уверены, что /someotherfs
устанавливается до /var
при загрузке.
Если у вас нет места, куда вы хотите временно скопировать его, вы можете уменьшить размер /var
удалив такие вещи, как кешированные пакеты (aptitude clean
в настройках стиля Debian, без сомнения, эквивалент yum
команда), удаляя другие вещи (например, Debian сохраняет httpdocs по умолчанию в /var/www
поэтому, если он все еще там и у вас много данных, переместите его в другой раздел) и удалите файлы из /var/log
которые появились не совсем недавно (сначала сделайте резервную копию, на случай, если вам понадобится обратиться к ним позже).
Как говорит Зоредак: что бы вы ни делали, убедитесь, что вас устраивает резервная копия, прежде чем продолжить.
Предостережение: все вышесказанное по памяти, нигде не тестировал, следите на свой страх и риск!
Традиционный способ - загрузка в однопользовательском режиме. Туда, /var
даже не будет смонтирован по умолчанию, так что вы можете возиться с ним сколько угодно.
Если у вас есть доступ к консоли (например, клавиатура-видео-мышь через Ethernet), вы можете:
init 1
(и дайте root-пароль)systemctl stop systemd-timesyncd
требуется, только если вы его используетеumount /var
e2fsck /dev/volume-where-var-is-in-your-system
resize2fs /dev/volume...
к чему угодно (в моем случае я хотел уменьшить его, поэтому я использовал -M
)lvresize
или что угодно)затем перезагрузите
Один пользователь - самая безопасная ставка:
Эти инструкции касаются изменения размера var LV / FS в системе Red Hat 7.x.
Проведите инвентаризацию перед переходом в однопользовательский режим:
# df -h /var
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-var 13G 6.2G 5.9G 52% /var
# vgs
VG #PV #LV #SN Attr VSize VFree
vg00 1 7 0 wz--n- <39.51g <2.63g
# lvs | grep var
var vg00 -wi-ao---- <12.86g
Загрузитесь в однопользовательском режиме, соответствующем используемой вами платформе.
ПРИМЕЧАНИЕ: система будет доступна через / sysroot.
Активировать vg00:
# lvm vgchange -ay vg00
Восстановите файлы устройства LV:
# lvm vgmknodes -vv
# e2fsck -f /dev/vg00/var
На всякий случай уменьшим FS до 8 ГБ, а затем LV до 8,5 ГБ (с последующим изменением размера FS, чтобы заполнить его):
# /sysroot/sbin/resize2fs -p /dev/vg00/var 8G
Некоторая математика изменения размера:
VG PE size: PE Size 4.00 MiB
4M * 1024K = 4096K
8.5G * 1024K * 1024K = 8,912,896K
8,912,89 / 4096 = 2176 PEs
ПРИМЕЧАНИЕ. Первоначально я получил следующую ошибку, и мне пришлось вручную переопределить lock_type: «Тип блокировки только для чтения. Блокировки записи запрещены».
# grep locking_type /etc/lvm/lvm.conf
locking_type = 4
Уменьшить LV:
# lvm lvreduce -l 2176 /dev/vg00/var --config 'global {locking_type=1}'
Повторно выполните изменение размера, чтобы заполнить контейнер LV до 8,5 ГБ:
# /sysroot/sbin/resize2fs /dev/vg00/var
Подтвердите новый размер с помощью:
# lvm lvs
# reboot