====== Управление файловыми системами в Linux ====== ===== Получить информацию о подключенных дисках ===== # lshw -C disk # lsblk ===== Анализ разделов на диске ===== # fdisk -l # fdisk -l /dev/sda # lsblk -o name,label,uuid # man sfdisk ===== Монтирование файловых систем вручную ===== # mount /dev/cdrom /mnt ===== Монтирование файловых систем автоматически через udev ===== Можно не только монтировать, но и запрограммировать определенные действия, например бэкап. * [[https://help.ubuntu.com/community/UsbDriveDoSomethingHowto|UsbDriveDoSomethingHowto]] ===== Добавление дисков в Linux ===== ==== Удалить таблицу разделов ==== * [[Команда dd#Удаление таблицы разделов]] ==== Создать раздел ==== # parted -a optimal /dev/sdb (parted) mklabel gpt (parted) unit mib (parted) mkpart primary 1 -1 (parted) print (parted) quit # fdisk /dev/sdb n p 1 w # fdisk -l /dev/sdb ==== Выбрать файловую систему ==== * [[http://ru.wikipedia.org/wiki/Ext2|Ext2]] * [[http://ru.wikipedia.org/wiki/Ext4|Ext4]] * [[http://ru.wikipedia.org/wiki/ReiserFS|ReiserFS]] * [[https://help.ubuntu.com/community/InstallingANewHardDrive|InstallingANewHardDrive]] ==== Cоздать файловую систему ==== # mkfs -t ext4 /dev/sdb1 # file -s /dev/sdb1 ==== Смонтировать раздел ==== # mkdir /disk2 # mount /dev/sdb1 /disk2 # fuser -cu /disk2 # umount /disk2 ==== Добавить соответствующую запись в файл /etc/fstab ==== # blkid # cat /etc/fstab ... # UUID=4ba44a69-3bf8-4e3a-8b65-589fae005f80 /disk2 ext4 defaults 0 0 # /dev/sdb1 /disk2 ext4 defaults 0 0 ===== Использование шифрованных разделов в Linux ===== * [[http://en.wikipedia.org/wiki/Dm-crypt|dm-crypt]] * Linux Unified Key Setup (LUKS) ==== Подготовка к использованию ==== * [[Управление файловыми системами в Linux#Добавление дисков в Linux]] (до создания раздела включительно или использовать весь /dev/sdb) ==== Инициализация ==== # apt install cryptsetup # cryptsetup -y luksFormat /dev/sdb1 # cryptsetup luksDump /dev/sdb1 ==== Подключение ==== # cryptsetup luksOpen /dev/sdb1 disk2 # mkfs -t ext4 /dev/mapper/disk2 # mount /dev/mapper/disk2 /disk2 ==== Отключение ==== # umount /disk2 # cryptsetup luksClose disk2 ===== Размещение файловых систем в файлах linux ===== * [[http://tldp.org/HOWTO/Cryptoloop-HOWTO/loopdevice-setup.html|Setting up the loop device]] * [[Команда dd|Создание пустого файла]] # losetup /dev/loop0 /disk2/filedisk # losetup -a # mkfs.ext3 /dev/loop0 # mount -t ext3 /dev/loop0 /mnt # umount /mnt/ # losetup -d /dev/loop0 # cat /etc/fstab ... /disk2/filedisk /filesystem ext3 loop 0 0 ===== Использование LVM ===== * [[http://ru.wikipedia.org/wiki/LVM|LVM в Википедии]] * [[http://xgu.ru/wiki/LVM|Повесть о Linux и LVM]] debian# apt install lvm2 ==== Расширение существующего логического тома ==== === Список групп логических томов === # vgs ... ubuntu-vg ... === Список логических томов в группе логических томов === # lvs ubuntu-vg LV VG ... ubuntu-lv ubuntu-vg ... === Добавляем новый диск к группе томов === Превращаем его в физический том LVM # pvcreate /dev/sdb Добавляем физический том к группе томов # vgextend ubuntu-vg /dev/sdb # pvs === Увеличиваем размер логического тома root в группе томов === # lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv === Расширяем корневую файловую систему внутри логического тома === # df -h / # resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv или # xfs_growfs / # df -h / ==== Создание и использование новой логической группы томов ==== === Установка LVM в Debian/Ubuntu === root@gate:~# apt install lvm2 === Инициализация диска (можно раздела) для включения его в группу томов === root@gate:~# pvcreate /dev/sdb root@gate:~# pvs root@gate:~# pvdisplay === Создаем новую группу томов (volume group) и добавляем туда свободный диск/раздел === root@gate:~# vgcreate vg1 /dev/sdb root@gate:~# pvs root@gate:~# pvdisplay root@gate:~# vgdisplay vg1 === Создаем логический том (logical volume) занимающий пространство в группе томов vg1 === * [[Технология LXC]] * [[#Использование snapshot LVM]] root@gate:~# lvcreate -n lv1 -L 1000M vg1 root@gate:~# lvdisplay root@gate:~# lvdisplay /dev/vg1/lv1 === Создаем файловую систему на логическом томе === root@gate:~# mkfs.ext4 /dev/vg1/lv1 или root@gate:~# mkfs.ext4 /dev/mapper/vg1-lv1 root@gate:~# mount /dev/vg1/lv1 /disk2 или root@gate:~# mount /dev/mapper/vg1-lv1 /disk2 root@gate:~# blkid /dev/mapper/vg1-lv1 === Добавляем новый диск sdc к группе томов (volume group) === root@gate:~# pvcreate /dev/sdc root@gate:~# vgextend vg1 /dev/sdc root@gate:~# pvs root@gate:~# pvdisplay root@gate:~# vgdisplay vg1 === Расширяем логический том (logical volume) === root@gate:~# lvextend -l +100%FREE /dev/vg1/lv1 === Расширяем файловую систему === root@gate:~# resize2fs /dev/vg1/lv1 root@gate:~# xfs_growfs / root@gate:~# df -h === Освобождаем диск sdb из группы томов === root@gate:~# umount /disk2 === Уменьшаем размер файловой системы в томе (e2fsck обязательна) === root@gate:~# e2fsck -f /dev/vg1/lv1 root@gate:~# resize2fs /dev/vg1/lv1 990M === Уменьшаем размер логического тома === root@gate:~# lvreduce /dev/vg1/lv1 -L 1000M Rounding up size to full physical extent 1000.00 MiB WARNING: Reducing active logical volume to 1000.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv1? [y/n]: y Reducing logical volume lv1 to 1000.00 MiB Logical volume lv1 successfully resized === Монтируем логический том и продолжаем с ним работать === root@gate:~# mount /dev/vg1/lv1 /disk2 === Переносим в "горячем режиме" данные с освобождаемого диска === root@gate:~# pvmove /dev/sdb === Отключаем диск от группы томов === root@gate:~# vgreduce vg1 /dev/sdb Removed "/dev/sdb" from volume group "vg1" root@gate:~# pvremove sdb root@gate:~# pvs === Использование snapshot LVM === * [[https://serverfault.com/questions/184983/how-to-keep-or-drop-lvm-snapshot|How to keep or drop LVM snapshot?]] * [[https://jnotes.ru/create-lvm-snapshot-and-restore.html|Создание lvm snapshot и восстановление из него]] # lvcreate --size 1G --snapshot --name www_snap /dev/vg1/www # lvs Что-то ломаем в контейнере # systemctl stop lxc@www # lvconvert --merge /dev/vg1/www_snap ===== Использование квот (quota) ===== * [[http://www.howtoforge.com/how-to-set-up-journaled-quota-on-debian-lenny]] * [[https://www.digitalocean.com/community/tutorials/how-to-enable-user-and-group-quotas]] # apt install quota # cat /etc/fstab ... #/dev/sda1 / ext4 errors=remount-ro 0 1 /dev/sda1 / ext4 errors=remount-ro,usrquota 0 1 # mount -o remount / # quotacheck -cum / # quotaon / # edquota user1 # For 10Mb ... soft hard ... ... 10000 10240 ... # edquota -p user1 user2