- Расширение диска или раздела Linux
- Шаг 1. Расширение раздела
- Обычные тома
- Шаг 2. Изменение размера для файловой системы
- Увеличение разделов с Gparted
- Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе
- Что такое файловая система
- Примеры команд mkfs
- mkfs без опций создает файловую систему ext2
- Укажите тип файла с помощью mkfs
- Проверьте наличие плохих блоков на устройстве
- Бонусный совет: проверьте тип файловой системы устройства
- Реальный пример использования: использование команды mkfs для создания файловой системы на USB-устройстве.
- Найди свое устройство
- Проверьте раздел
- Удаленная замена корневой ФС в GNU/linux
- Задачи
- Прежде чем начать
- Решение
Расширение диска или раздела Linux
В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.
Принцип увеличения диска:
- Расширение раздела.
- Изменение размера файловой системы.
В зависимости от типа раздела и файловой системы, действия различаются.
Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.
Шаг 1. Расширение раздела
Обычные тома
Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить.
Сначала необходимо отмонтировать раздел:
В случае работы с корневой директорией, отмонтировать ее не получиться. В таком случае необходимо загрузить компьютер с LiveCD.
Подключаемся утилитой fdisk к /dev/sdb:
Если мы работаем с разделом более чем 2Тб, используем утилиту parted.
Смотрим номера разделов:
Удаляем раздел (не переживайте — все данные сохраняются):
* в моем примере, раздел для удаления на второй позиции.
Создаем новый раздел:
Номер раздела — 2:
На запрос начального и конечного секторов просто нажимаем Enter.
Если раздел был загрузочный, добавляем соответствующий флаг:
Еще раз проверяем, что получилось:
LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.
Открываем диск утилитой fdisk:
* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.
Создаем еще один раздел:
Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).
Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).
Задаем тип раздела:
Выбираем номер раздела (в моем примере создавался раздел 3):
Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):
Проинформируем систему, что в таблице разделов произошли изменения:
Создаем физический том из нового раздела:
Смотрим наши Volume Group и для нужного добавляем созданный том:
vgextend vg_centos /dev/sda3
* в моем примере группа томов LVM называется vg_centos
Смотрим LVM-разделы и расширяем пространства для нужного:
lvextend -l +100%FREE /dev/vg_centos/lv_root
* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).
Шаг 2. Изменение размера для файловой системы
После того, как на предыдущем шаге мы расширили раздел, система по-прежнему будет видеть старый по объему диск. Чтобы это исправить, необходимо выполнить команду по изменению размера файловой системы. В зависимости от последней, команды различаются.
Посмотреть файловую систему:
ext2/ext3/ext4:
XFS:
Reiserfs:
* обратите внимание, что в данных примерах используются различные устройства.
Если раздел был отмонтирован, монтируем его, например:
mount /dev/sda2 /mnt
Проверяем, что настройки применились:
Увеличение разделов с Gparted
Если работы выполняются на системе с графическим интерфейсом или есть возможность перезагрузить сервер и загрузиться с LiveCD, можно воспользоваться простым средством — утилитой Gparted, которая позволяем менять размер разделов мышкой.
Запускаем утилиту — выбираем диск, с которым будем работать — кликаем правой кнопкой по разделу, который хотим увеличить и выбираем Resize/Move:
В открывшемся окне с помощью мышки или форм меняем размер раздела:
Нажимаем кнопку Resize/Move.
Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:
Источник
Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе
Главное меню » Linux » Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе
Вы также можете использовать команду mkfs следующим образом:
В этой статье мы в общих чертах расскажем, что такое файловая система. А также приведем примеры эффективного использования команды mkfs.
Поскольку команда mkfs работает с дисками и разделами, вам необходимо быть пользователем root или sudo с правами доступа для запуска команд администратора.
MKFS это мощный инструмент. Важно понимать потенциальные последствия изменения файловой системы. Выбор неправильного узла устройства удалит все данные на этом устройстве. Используйте эту команду на свой страх и риск. Вы были предупреждены
Что такое файловая система
Файловая система (fs) относится к структуре и логике, которые управляют данными на устройстве. Файловая система контролирует, как данные хранятся и извлекаются.
Существует много типов файловых систем, каждая из которых имеет свои преимущества и недостатки. Вот наиболее распространенный тип файловых систем:
Возможно, вы уже сталкивались с одним или несколькими из этих типов файловых систем. Вы можете даже связать типы с их соответствующими операционными системами.
Вообще говоря, FAT/NTFS предназначены для Windows, Ext используется с системами Linux, а APFS/HFS – файловые системы macOS. Каждый из них по-разному обращается к логике файловой структуры, что может привести к проблемам.
Вот почему важно подумать об этом перед объявлением типа файловой системы или «форматированием» вашего устройства. Каждый вариант использования индивидуален, и вам решать, какая файловая система лучше всего подходит для ваших нужд.
Примеры команд mkfs
Позвольте нам показать вам наиболее распространенное использование команды mkfs.
Пожалуйста, не пытайтесь использовать вслепую ни одну из этих команд в вашей реальной системе. Они отформатирует целевое устройство/раздел диска, удалив все данные.
mkfs без опций создает файловую систему ext2
Если вы не укажете тип файловой системы для целевого устройства, он будет использовать файловую систему ext2 по умолчанию.
Укажите тип файла с помощью mkfs
Использование ext2 не очень удобно или целесообразно. В наши дни большинство систем Linux рекомендуют использовать ext4. Вы можете указать файловую систему следующим образом:
Вы также можете использовать это так:
Проверьте наличие плохих блоков на устройстве
Вы также можете проверить наличие плохих блоков на устройстве, но имейте в виду, что проверка часто занимает много времени.
Бонусный совет: проверьте тип файловой системы устройства
Вы можете проверить тип файловой системы устройства, которое вы только что отформатировали, используя команду mkfs. Вы можете использовать команду file для этой цели.
Вот пример, который показывает, какой вывод он может показать:
Реальный пример использования: использование команды mkfs для создания файловой системы на USB-устройстве.
Теперь, когда у вас есть некоторая справочная информация, вы можете начать использовать mkfs.
Самая практическая демонстрация, которую мы можем придумать, – это форматирование USB-накопителя. Эти же принципы будут применяться к любому типу хранилища по вашему выбору.
Найди свое устройство
Сначала вам нужно будет найти свое устройство. Один метод, который вы можете использовать, это sudo fdisk -l. Это перечислит все дисковые узлы, которые в настоящее время смонтированы.
Ваш вывод, очевидно, будет различным. Пожалуйста, будьте очень осторожны при определении желаемого диска . Если вы не уверены, извлеките диск и повторите команду fdisk -l. Если у вас есть правильное устройство, оно не будет отображаться во время отключения.
Проверьте раздел
Устройство, которое мы используем, является USB-накопителем Patriot Memory, и оно находится по адресу /dev/sdb. В дополнение к определению правильного диска, вам нужно будет убедиться, что вы меняете fs нужного раздела.
Мы использовали инструменты fdisk, чтобы удалить существующие данные и написать новую таблицу разделов. Пока мы делали это, мы создали новый раздел для записи. Этот раздел будет нашей целью /dev/sdb1.
Источник
Удаленная замена корневой ФС в GNU/linux
Иногда мне приходится сталкиваться с заменой корневой файловой системы. Имея загрузочный диск и доступ к серверу, это не сложно. Однако, я хочу поделиться опытом замены корневой ФС удаленно, через ssh, без перезагрузки.
Причины для замены коневой ФС бывают разные:
- перевод / в LVM
- перевод / в mdraid
- замена типа файловой системы (ext3 => btrfs)
- уменьшение размера ФС (resize2fs)
В качестве примера, я буду перемещать корневую ФС из /dev/sda2 в LVM
Описание буду проводить на примере gentoo GNU/linux.
Данный способ был проверен мной также и на debian GNU/linux.
Сразу оговорюсь, что не смотря на то, что у меня ни разу не было потери данных при этой операции, резервное копирование никто не отменял!
Есть удаленный сервер, размещенный в датацентре.
В моем случае, это будет хост система, с запущенными виртуальными машинами KVM.
Жесткий диск /dev/sda, где находится корневая ФС, разбит на три msdos раздела:
- sda1 200Мб /boot
- sda2 2Гб /
- sda3 197Гб LVM
Задачи
Прежде чем начать
— Мне понадобится утилита lsof. Необходимо установить ее до начала работ.
— Нужно понимать, что в процессе решения задачи нам потребуется перезапустить все процессы на сервере.
— Важно! Я пишу эту статью для тех, кто уже знаком с LVM и понимает, что при загрузке ядро не сможет самостоятельно замонтировать / без помощи initramfs!
Решение
1. Создаем новый логический том в LVM
Том будет размером 3Гб и называться root
lvcreate -L 3g -n root sys
2. Создаем папки для монтирования
mkdir /mnt/oldroot /mnt/newroot
3. Готовимся к перемонтированию старой корневой ФС / в режиме readonly
Это нужно для того, чтобы скопировать старую корневую ФС в новое место в консистентном состоянии.
Но сама ФС, скорее всего, сейчас используется процессами для записи данных.
3.1. Проверяем удаленные файлы
lsof / | grep ‘ DEL \|delete’
Если такие файлы нашлись, то процессы нужно перезапустить или остановить.
У меня такие файлы есть. Они возникли из-за того, что недавно были обновлены пакеты net-misc/openssh и sys-fs/lvm2
3.2. Перезапускаем и/или останавливаем процессы с удаленными файлами
В моем случае я перезапускаю sshd и завершаю dmeventd
/etc/init.d/sshd restart
3.3. Убеждаемся, что нет больше удаленных файлов
lsof / | grep ‘ DEL \|delete’
Убедились.
3.4. Проверяем открытые на запись файлы
lsof / | grep -v ‘ \(mem\|txt\|rtd\|cwd\) ‘
Смотрим на файлы, у которых режим открытия (колонка FD) содержит одну из букв: uUwW
В моем случае я не вижу проблем остановить все эти сервисы на время перемещения.
В вашем случае, решайте сами.
3.5. Останавливаем процессы, которые держат открытые файлы
/etc/init.d/rsyslog stop
3.6. Убеждаемся, что нет больше открытых на запись файлов
lsof / | grep -v ‘ \(mem\|txt\|rtd\|cwd\) ‘
3.7. Размонтируем все loop устройства
В моем случае я размонтирую squashfs файловую систему в /usr/portage
umount /usr/portage
3.8. Размонтируем ФС типа nfs, cifs, fuse и aufs
В моем случае таких нет.
3.9. Смотрим файловые (unix) сокеты
netstat —unix -a |grep ‘/\|Path$’
При переносе корневой ФС эти сокеты перестанут быть связанными со своими приложениями.
Это решается:
— предварительной остановкой этих приложений (рекомендуется)
— перезапуском этих приложений после подмены корневой ФС
Меня не пугает потеря связи с приложениями через эти сокеты.
4. Перемонтируем корневую ФС / в режим readonly
mount -n -o remount,ro /
Если все успешно, то команда завершится тихо.
Если же появится строка «mount: / is busy», то корневая ФС все еще занята. Возвращайтесь к пункту 3 и проверяйте. Возможно вы что-то забыли.
Не исключаю, что я тоже мог что-то не предусмотреть, но на данном этапе, если вам не удается этот шаг, то дальше двигаться нельзя. Вы еще ничего не успели изменить. Просто возвращайте в работу остановленные процессы.
Если же у вас все прошло успешно, то движемся дальше.
5. Резервное копирование (опционально)
Сейчас для этого самое время.
Для себя я не вижу в этом необходимости, т.к. после всей операции в качестве резервной копии останется старый раздел sda2.
Кроме того, у меня настроено ежедневное резервное копирование всех разделов хост системы и всех виртуальных машин.
6. Копируем корневую ФС с устройства sda2 в LVM том root
dd if=/dev/sda2 of=/dev/sys/root bs=8M
7. Изменяем размер ФС
7.1. Первоначально проверяем ФС на ошибки
fsck -fC /dev/sys/root
fsck from util-linux 2.20.1
7.2. Производим изменение размера ФС
В нашем случае, мы увеличиваем ФС до размеров LVM тома.
resize2fs -p /dev/sys/root
8. Монтируем копию
mount -n /dev/sys/root /mnt/newroot
9. Подменяем корневую ФС
Это то, ради чего я все это затеял.
С этого момента наступает опасное время.
Важно: После подмены корневой ФС, если произойдет обрыв SSH сессии, то система не сможет установить новое соединение!
Подменяем ФС:
cd /mnt/newroot
Важно выполнить именно эти две команды в том виде, в котором они написаны, чтобы избежать блокировок из-за текущей рабочей папки (cwd).
После этой команды, том /dev/sys/root встанет на место /, а раздел sda2 сменит точку монтирования в /mnt/oldroot. При этом все другие замонтированные ФС тоже сменят точку монтирования. Например, файловая система /dev переместится в /mnt/oldroot/dev.
10. Возврщаем точки монтирования всех остальных ФС (кроме старой корневой ФС)
Переносим стандартные ФС, которые есть у большинства:
mount -n —move /mnt/oldroot/proc /proc
mount -n —move /mnt/oldroot/dev /dev
mount -n —move /mnt/oldroot/sys /sys
Теперь можно смотреть в /proc/mounts, что еще нужно вернуть на место
cat /proc/mounts |grep oldroot
В моем примере, я переношу
mount -n —move /mnt/oldroot/lib64/rc/init.d /lib64/rc/init.d
mount -n —move /mnt/oldroot/var/distfiles /var/distfiles
mount -n —move /mnt/oldroot/var/db /var/db
С этого момента вы вне опасности. Новые SSH сессии должны успешно открываться.
11. Перезапускаем приложения с новой корневой ФС
11.1. Смотрим, файлы процессов
lsof /mnt/oldroot
Видим, что все процессы запущены со старой корневой ФС.
11.2. Начинаем перезапускать системные процессы
Я рекомендую в первую очередь:
/etc/init.d/udev restart
/etc/init.d/sshd restart
11.3. Открываем вторую ssh сессию на сервер
Если вход успешен, то первую сессию нужно завершить, для того чтобы закрыть старую оболочку bash и форк старой sshd.
смотрим lsof /mnt/oldroot
все sshd процессы, запущенные со старой корневой ФС должны исчезнуть.
11.4. Необычные процессы.
Перезапускаем agetty и init
С agetty (или другими *tty) все просто:
killall agetty
Не стоит бояться, init их перезапустит
Cам init перезапускаем командой
telinit u
11.5. Монтируем файловые системы, отключенные ранее
Я монтирую squashfs в /usr/portage
mount /usr/portage
11.6. Запускаем остановленные ранее сервисы
В моем случае я запускаю:
/etc/init.d/rsyslog start
11.7. Продолжаем перезапускать сервисы
смотрим lsof /mnt/oldroot, и перезапускаем, что осталось
/etc/init.d/ntpd restart
/etc/init.d/radvd restart
/etc/init.d/smartd restart
/etc/init.d/dnsmasq restart
В том числе, я перезапускаю виртуальные машины, которые все это время спокойно работали.
Более того, теперь уже нет особой надобности торопиться.
Мы перезапускаем сервисы, только чтобы размонтировать старую корневую ФС.
/etc/init.d/kvm.204 restart
/etc/init.d/kvm.205 restart
/etc/init.d/kvm.206 restart
12. Операции после подмены корневой ФС
12.1. Не забываем изменить fstab
Я пользуюсь метками LABEL=, поэтому ничего не меняю
12.2. Размонтируем старую корневую ФС
umount /mnt/oldroot
rmdir /mnt/oldroot /mnt/newroot
Она больше никем не используется
Для тех, кто хочет сохранить старую корневую ФС, я рекомендую поменять у нее LABEL и UUID, чтобы она не путала загрузчик.
tune2fs -L oldroot -U $(uuidgen) /dev/sda2
Для себя, я больше не вижу необходимости в старой ФС. Удаляю.
wipefs /dev/sda2 -o 0x438
12.3. Не забываем добавить/изменить initramfs, при переходе на LVM
12.4. Не забываем переконфигурировать загрузчик
В моем случае это grub2
Устанавливаем загрузчик на sda
grub2-install —no-floppy /dev/sda
Источник