По многочисленным ( а именно 3 штуки) просьбам моих друзей и знакомых я подготовил скринкаст с практической демонстрацией вопросов администрирования MDADM, LVM и их связки в Linux, на примере Centos. Собственно изначально краткий скринкаст в итоге превратился в полуторачасовую лекцию.
Я рассмотрел не все возможные вопросы — например я не рассматриваю иных вариантов кроме RAID-1, равно как и не рассказываю про их преимущества и недостатки. Иначе скринкаст бы растянулся часа на 3 минимум.
Как я и обещаю в видео, выкладываю ссылки на справочные источники а так же полный лог скринкаста:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
1. mdadm: ====================================================== # для centos: yum install mdadm fdisk -l | grep /dev/sd ------------------ создаем на каждом диске раздел fdisk /dev/sd* - n - p - 1 - p -w fdisk -l | grep /dev/sd меняем тип раздела на RAID автодетект fdisk /dev/sd* - t - fd - w создаем raid1 из двух дисков (без резерва) mdadm --create --verbose /dev/md/mdtest --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 ждем пока засихронизируется cat /proc/mdstat создаем файловую систему mkfs.ext4 /dev/md/mdtest монтируем mkdir /raid mount /dev/md/mdtest /raid df -h| grep raid показываем как на постоянку сделать umount /dev/md/mdtest добавляем в /etc/fstab запись: /dev/md/mdtest /raid ext4 defaults 1 2 mount -a df -h| grep raid эмулируем сбой и удаляем диск cat /proc/mdstat mdadm /dev/md/mdtest --fail /dev/sdb1 cat /proc/mdstat mdadm /dev/md/mdtest --remove /dev/sdb1 лечим массив: mdadm /dev/md/mdtest --add /dev/sdc1 удалим массив: umount /dev/md/mdtest mdadm -S /dev/md/mdtest mdadm --zero-superblock /dev/sda1 mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdc1 создадим диск с горячим резервом (hotspare) - мы добавим третий диск руками mdadm --create --verbose /dev/md/mdtest --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 mdadm --add /dev/md/mdtest /dev/sdс1 cat /proc/mdstat сразу засбоим диск mdadm /dev/md/mdtest --fail /dev/sdb1 cat /proc/mdstat смотрим что массив автоматом пересобирается разберем массив mdadm -S /dev/md/mdtest mdadm --zero-superblock /dev/sd* ====================================================== 2. lvm: если ошибка pvcreate: Device /dev/md* not found (or ignored by filtering) dd if=/dev/zero of=/dev/md127 bs=1M count=32 ====================================================== инициализируем два устройства как pv - програмный рейд и отдельный диск mdadm --create --verbose /dev/md/mdtest --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 pvcreate /dev/md/mdtest pvcreate /dev/sdd1 pvdisplay создаем vg vgcreate vg_storage /dev/md/mdtest /dev/sdd1 vgdisplay создаем lv, фс на нем и монтируем lvcreate -L5G --name testlv vg_storage lvdisplay mkfs.ext4 /dev/vg_storage/testlv mkdir /lvm mount /dev/vg_storage/testlv /lvm df -h | grep lvm увеличиваем на ходу lv df -h | grep lvm lvextend -L+2G /dev/vg_storage/testlv resize2fs /dev/vg_storage/testlv df -h | grep lvm уменьшаем на ходу lv umount /dev/vg_storage/testlv e2fsck -f /dev/vg_storage/testlv resize2fs /dev/vg_storage/testlv 5G lvreduce -L-2G /dev/vg_storage/testlv mount /dev/vg_storage/testlv /lvm df -h | grep lvm удаляем lv lvdisplay umount /dev/vg_storage/testlv lvremove /dev/vg_storage/testlv lvdisplay создаем снапшот, удаляем снапшот сначала вновь создадим lvи запшем туда данные lvcreate -L 2G --name testlv vg_storage mkfs.ext4 /dev/vg_storage/testlv mkdir /lvm mount /dev/vg_storage/testlv /lvm df -h | grep lvm echo 'Hello world!' > /lvm/test.txt cat /lvm/test.txt делаем снапшот lvcreate -L 1G -s --name snap01 /dev/vg_storage/testlv lvdisplay mkdir /backup mount /dev/vg_storage/snap01 /backup cd /backup ls -l cat test.txt echo 'Hello world-2!' >> /lvm/test.txt cat /lvm/test.txt cat /backup/test.txt удаляем снапшот umount /dev/vg_storage/snap01 lvremove /dev/vg_storage/snap01 удаление диска из vg проверяем экстенты pvdisplay pvmove /dev/sdd1 vgreduce vg_storage /dev/sdd1 |
Источники:
П.С. Для демонстрации я использую vagrant, просто потому что так удобней) Ну если это кому нибудь интересно)