LXF112:LVM
Yaleks (обсуждение | вклад) (Новая: == LVM: Виртуальные разделы == : ''Сражаетесь с созданием разделов при установке? Хотели бы файловую систе...) |
Yaleks (обсуждение | вклад) м |
||
Строка 32: | Строка 32: | ||
Важно, чтобы тип раздела был установлен в 8E (LVM). Будьте осторожны при экспериментах с разделами и томами, не то можно уничтожить | Важно, чтобы тип раздела был установлен в 8E (LVM). Будьте осторожны при экспериментах с разделами и томами, не то можно уничтожить | ||
ваши данные (все команды даются от имени суперпользователя-root). | ваши данные (все команды даются от имени суперпользователя-root). | ||
− | < | + | <source lang="bash">#fdisk /dev/sdb |
[… куча ненужных нам строк ...] | [… куча ненужных нам строк ...] | ||
Command (m for help): n | Command (m for help): n | ||
Строка 51: | Строка 51: | ||
The partition table has been altered! | The partition table has been altered! | ||
Calling ioctl() to re-read partition table. | Calling ioctl() to re-read partition table. | ||
− | Syncing disks.</ | + | Syncing disks.</source> |
Давайте создадим физический том LVM: | Давайте создадим физический том LVM: | ||
− | < | + | <source lang="bash">#pvcreate /dev/sdb1 |
− | Physical volume “/dev/sdb1” successfully created</ | + | Physical volume “/dev/sdb1” successfully created</source> |
Теперь можно создать группу томов и назначить ей физический том. | Теперь можно создать группу томов и назначить ей физический том. | ||
Вы можете дать группе томов любое содержательное имя, но хорошим | Вы можете дать группе томов любое содержательное имя, но хорошим | ||
решением будет использовать окончание ‘vg’. Это поможет легко идентифицировать файловые системы, находящиеся в ведении LVM. | решением будет использовать окончание ‘vg’. Это поможет легко идентифицировать файловые системы, находящиеся в ведении LVM. | ||
− | < | + | <source lang="bash">#vgcreate testvg /dev/sdb1 |
− | Volume group “testvg” successfully created</ | + | Volume group “testvg” successfully created</source> |
Чтобы иметь возможность создавать файловые системы, сперва | Чтобы иметь возможность создавать файловые системы, сперва | ||
нужно создать логический том. Снова, вы можете использовать любое | нужно создать логический том. Снова, вы можете использовать любое | ||
имя, но я рекомендую добавить ‘lv’ в его конец. | имя, но я рекомендую добавить ‘lv’ в его конец. | ||
− | < | + | <source lang="bash">#lvcreate -L 20M -n testlv testvg |
− | Logical volume “testlv” created</ | + | Logical volume “testlv” created</source> |
Теперь у вас есть логический том с именем testlv, занимающий | Теперь у вас есть логический том с именем testlv, занимающий | ||
20 МБ (параметр -L). Он доступен через /dev/testvg/testlv (поняли, | 20 МБ (параметр -L). Он доступен через /dev/testvg/testlv (поняли, | ||
Строка 70: | Строка 70: | ||
помните, что не все файловые системы поддерживают расширение | помните, что не все файловые системы поддерживают расширение | ||
или уменьшение, поэтому мы выберем ext3. | или уменьшение, поэтому мы выберем ext3. | ||
− | < | + | <source lang="bash">#mkfs.ext3 /dev/testvg/testlv |
− | [... куча удаленного ненужного текста …]</ | + | [... куча удаленного ненужного текста …]</source> |
Чтобы пользоваться файловой системой, смонтируем ее где-нибудь: например, в точке монтирования /mnt/test. | Чтобы пользоваться файловой системой, смонтируем ее где-нибудь: например, в точке монтирования /mnt/test. | ||
− | < | + | <source lang="bash">#mkdir /mnt/test |
− | #mount /dev/testvg/testlv /mnt/test</ | + | #mount /dev/testvg/testlv /mnt/test</source> |
Так файловая система смонтирована временно. После перезагрузки она исчезнет, и вам придется монтировать ее снова. Если вы хотите | Так файловая система смонтирована временно. После перезагрузки она исчезнет, и вам придется монтировать ее снова. Если вы хотите | ||
всегда иметь ее под рукой всегда, добавьте соответствующую строку | всегда иметь ее под рукой всегда, добавьте соответствующую строку | ||
Строка 91: | Строка 91: | ||
логического тома (LV size): его значение отражает размер файловой | логического тома (LV size): его значение отражает размер файловой | ||
системы. Можете попробовать эти команды друг за другом: | системы. Можете попробовать эти команды друг за другом: | ||
− | < | + | <source lang="bash">#pvdisplay /dev/sdb1 |
#vgdisplay testvg | #vgdisplay testvg | ||
− | #lvdisplay /dev/testvg/testlv</ | + | #lvdisplay /dev/testvg/testlv</source> |
А что у нас с файловой системой? | А что у нас с файловой системой? | ||
− | < | + | <source lang="bash">#df -h /mnt/test |
Filesystem | Filesystem | ||
Size Used Avail Use% Mounted on | Size Used Avail Use% Mounted on | ||
/dev/mapper/testvg-testlv | /dev/mapper/testvg-testlv | ||
− | 20M 1.2M 18M 7% /mnt/test</ | + | 20M 1.2M 18M 7% /mnt/test</source> |
Вы заметили, что тут неверно? Мы создали и смонтировали файловую систему с /dev/testvg/testlv, а обнаружили, что она смонтирована с /dev/mapper/testvg-testlv. Все так и должно быть. Это нормально | Вы заметили, что тут неверно? Мы создали и смонтировали файловую систему с /dev/testvg/testlv, а обнаружили, что она смонтирована с /dev/mapper/testvg-testlv. Все так и должно быть. Это нормально | ||
для LVM2, так как для обращения к ядру он использует device-mapper. | для LVM2, так как для обращения к ядру он использует device-mapper. | ||
Строка 110: | Строка 110: | ||
#cp /usr/bin/* /mnt/test/ | #cp /usr/bin/* /mnt/test/ | ||
Ой-ей!!! Если вы следуете этому учебнику слово в слово, вы должны увидеть следующее: | Ой-ей!!! Если вы следуете этому учебнику слово в слово, вы должны увидеть следующее: | ||
− | < | + | <source lang="bash">cp: cannot create regular file `/mnt/test/zjsdecode’: No space left on device |
− | cp: cannot create regular file `/mnt/test/zsoelim’: No space left on device</ | + | cp: cannot create regular file `/mnt/test/zsoelim’: No space left on device</source> |
Что же произошло? Проверим-ка свободное место в файловой | Что же произошло? Проверим-ка свободное место в файловой | ||
системе: | системе: | ||
− | < | + | <source lang="bash">#df -h /mnt/test |
Filesystem | Filesystem | ||
Size Used Avail Use% Mounted on | Size Used Avail Use% Mounted on | ||
/dev/mapper/testvg-testlv | /dev/mapper/testvg-testlv | ||
− | 20M 20M 0 100% /mnt/test</ | + | 20M 20M 0 100% /mnt/test</source> |
Как видите, мы использовали все свободное пространство. Если бы | Как видите, мы использовали все свободное пространство. Если бы | ||
эта файловая система была создана на дисковом разделе, единственным способом все исправить было бы удаление каких-нибудь данных | эта файловая система была создана на дисковом разделе, единственным способом все исправить было бы удаление каких-нибудь данных | ||
или переразбиение диска, но LVM способен расширить логический том | или переразбиение диска, но LVM способен расширить логический том | ||
и файловую систему. Начнем с логического тома: | и файловую систему. Начнем с логического тома: | ||
− | < | + | <source lang="bash">#lvdisplay /dev/testvg/testlv | grep Size |
LV Size | LV Size | ||
20.00 MB | 20.00 MB | ||
Строка 131: | Строка 131: | ||
#lvdisplay /dev/testvg/testlv | grep Size | #lvdisplay /dev/testvg/testlv | grep Size | ||
LV Size | LV Size | ||
− | 100.00 MB</ | + | 100.00 MB</source> |
Файловую систему ext3 вы можете расширить «на лету», без | Файловую систему ext3 вы можете расширить «на лету», без | ||
останова. | останова. | ||
− | < | + | <source lang="bash">#resize2fs /dev/testvg/testlv |
resize2fs 1.40.8 (13-Mar-2008) | resize2fs 1.40.8 (13-Mar-2008) | ||
Filesystem at /dev/testvg/testlv is mounted on /mnt/test; on-line | Filesystem at /dev/testvg/testlv is mounted on /mnt/test; on-line | ||
Строка 146: | Строка 146: | ||
Size Used Avail Use% Mounted on | Size Used Avail Use% Mounted on | ||
/dev/mapper/testvg-testlv | /dev/mapper/testvg-testlv | ||
− | 98M 20M 74M 22% /mnt/test</ | + | 98M 20M 74M 22% /mnt/test</source> |
Глядя на вывод df выше, я счел, что файловая система великовата, | Глядя на вывод df выше, я счел, что файловая система великовата, | ||
и решил ее чуть-чуть уменьшить. При этом следует знать, что LVM распределяет место в «экстентах»; размер экстента показывается в выводе vgdisplay как поле ‘PE size’, и по умолчанию он равен 4 МБ. Размер | и решил ее чуть-чуть уменьшить. При этом следует знать, что LVM распределяет место в «экстентах»; размер экстента показывается в выводе vgdisplay как поле ‘PE size’, и по умолчанию он равен 4 МБ. Размер | ||
Строка 152: | Строка 152: | ||
такого не умеет, поэтому придется сперва отмонтировать файловую | такого не умеет, поэтому придется сперва отмонтировать файловую | ||
систему и запустить проверку (fsck). | систему и запустить проверку (fsck). | ||
− | < | + | <source lang="bash">#umount /mnt/test |
#e2fsck -f /dev/testvg/testlv | #e2fsck -f /dev/testvg/testlv | ||
[... удаленные всякие ненужные строки ...] | [... удаленные всякие ненужные строки ...] | ||
− | /dev/testvg/testlv: 426/22256 files (1.2% non-contiguous), 22964/102400 blocks</ | + | /dev/testvg/testlv: 426/22256 files (1.2% non-contiguous), 22964/102400 blocks</source> |
Проверка убеждает, что файловая система в порядке, и дает возможность ее уменьшения с минимальным риском. | Проверка убеждает, что файловая система в порядке, и дает возможность ее уменьшения с минимальным риском. | ||
− | < | + | <source lang="bash">#resize2fs /dev/testvg/testlv 50M |
resize2fs 1.40.8 (13-Mar-2008) | resize2fs 1.40.8 (13-Mar-2008) | ||
Resizing the filesystem on /dev/testvg/testlv to 51200 (1k) blocks. | Resizing the filesystem on /dev/testvg/testlv to 51200 (1k) blocks. | ||
− | The filesystem on /dev/testvg/testlv is now 51200 blocks long.</ | + | The filesystem on /dev/testvg/testlv is now 51200 blocks long.</source> |
Немного математики. Пятьдесят не делится на четыре без остатка. | Немного математики. Пятьдесят не делится на четыре без остатка. | ||
Если мы попытаемся уменьшить размер логического тома до 50 МБ, | Если мы попытаемся уменьшить размер логического тома до 50 МБ, | ||
он станет 48 МБ или 52 МБ. К счастью, lvreduce хватает ума выбрать | он станет 48 МБ или 52 МБ. К счастью, lvreduce хватает ума выбрать | ||
большее значение. | большее значение. | ||
− | < | + | <source lang="bash">#lvreduce -L 50M /dev/testvg/testlv |
Rounding up size to full physical extent 52.00 MB | Rounding up size to full physical extent 52.00 MB | ||
WARNING: Reducing active logical volume to 52.00 MB | WARNING: Reducing active logical volume to 52.00 MB | ||
Строка 171: | Строка 171: | ||
Do you really want to reduce testlv? [y/n]: y | Do you really want to reduce testlv? [y/n]: y | ||
Reducing logical volume testlv to 52.00 MB | Reducing logical volume testlv to 52.00 MB | ||
− | Logical volume testlv successfully resized</ | + | Logical volume testlv successfully resized</source> |
Последним шагом будет еще одно изменение размера файловой | Последним шагом будет еще одно изменение размера файловой | ||
системы, для использования всего доступного пространства. | системы, для использования всего доступного пространства. | ||
− | < | + | <source lang="bash">#resize2fs /dev/testvg/testlv |
resize2fs 1.40.8 (13-Mar-2008) | resize2fs 1.40.8 (13-Mar-2008) | ||
Resizing the filesystem on /dev/testvg/testlv to 53248 (1k) blocks. | Resizing the filesystem on /dev/testvg/testlv to 53248 (1k) blocks. | ||
− | The filesystem on /dev/testvg/testlv is now 53248 blocks long.</ | + | The filesystem on /dev/testvg/testlv is now 53248 blocks long.</source> |
Теперь можно заново смонтировать файловую систему и проверить, что она имеет корректный размер. | Теперь можно заново смонтировать файловую систему и проверить, что она имеет корректный размер. | ||
− | < | + | <source lang="bash">#mount /dev/testvg/testlv /mnt/test/ |
#df -h /mnt/test | #df -h /mnt/test | ||
Filesystem | Filesystem | ||
Size Used Avail Use% Mounted on | Size Used Avail Use% Mounted on | ||
/dev/mapper/testvg-testlv | /dev/mapper/testvg-testlv | ||
− | 51M 20M 30M 40% /mnt/test</ | + | 51M 20M 30M 40% /mnt/test</source> |
Пожалуйста, помните про размер экстента при изменении размера | Пожалуйста, помните про размер экстента при изменении размера | ||
логических томов и проверяйте, что размер нового тома такой же или | логических томов и проверяйте, что размер нового тома такой же или | ||
Строка 232: | Строка 232: | ||
новый логический том с параметром -s (снимок) и смонтируем его, как | новый логический том с параметром -s (снимок) и смонтируем его, как | ||
если бы он был обычной файловой системой. | если бы он был обычной файловой системой. | ||
− | < | + | <source lang="bash">#lvcreate -s -L50M -n testlvsnap /dev/testvg/testlv |
Rounding up size to full physical extent 52.00 MB | Rounding up size to full physical extent 52.00 MB | ||
Logical volume “testlvsnap” created | Logical volume “testlvsnap” created | ||
Строка 242: | Строка 242: | ||
51M 20M 30M 40% /mnt/test | 51M 20M 30M 40% /mnt/test | ||
/dev/mapper/testvg-testlvsnap | /dev/mapper/testvg-testlvsnap | ||
− | 51M 20M 30M 40% /mnt/snap</ | + | 51M 20M 30M 40% /mnt/snap</source> |
Они оба выглядят одинаково. Вы можете перепроверить это, запустив следующие команды (их вывод мы удалили, так как он слишком | Они оба выглядят одинаково. Вы можете перепроверить это, запустив следующие команды (их вывод мы удалили, так как он слишком | ||
длинный): | длинный): | ||
− | < | + | <source lang="bash">#diff /mnt/test /mnt/snap/ |
#ls -l /mnt/test | #ls -l /mnt/test | ||
− | #ls -l /mnt/snap</ | + | #ls -l /mnt/snap</source> |
Теперь можно убедиться, что LVM и вправду умеет удалять и создавать любые файлы в нашем снимке. | Теперь можно убедиться, что LVM и вправду умеет удалять и создавать любые файлы в нашем снимке. | ||
− | < | + | <source lang="bash">#rm -rf /mnt/snap/* (БУДЬТЕ ОСТОРОЖНЫ С ЭТОЙ КОМАНДОЙ!) |
#touch /mnt/snap/SNAP_TEST | #touch /mnt/snap/SNAP_TEST | ||
#touch /mnt/test/ORIG_TEST | #touch /mnt/test/ORIG_TEST | ||
#ls -l /mnt/test | #ls -l /mnt/test | ||
− | #ls -l /mnt/snap</ | + | #ls -l /mnt/snap</source> |
Если снимок больше не нужен, его можно удалить тем же способом, что и логический раздел. | Если снимок больше не нужен, его можно удалить тем же способом, что и логический раздел. | ||
− | < | + | <source lang="bash">#umount /mnt/snap |
#lvremove /dev/testvg/testlvsnap | #lvremove /dev/testvg/testlvsnap | ||
Do you really want to remove active logical volume “testlvsnap”? | Do you really want to remove active logical volume “testlvsnap”? | ||
[y/n]: y | [y/n]: y | ||
− | Logical volume “testlvsnap” successfully removed</ | + | Logical volume “testlvsnap” successfully removed</source> |
==== Одним махом ==== | ==== Одним махом ==== | ||
Строка 278: | Строка 278: | ||
другом он диске или на том же самом). Создайте раздел и установите | другом он диске или на том же самом). Создайте раздел и установите | ||
его тип в 8E, как мы делали ранее. | его тип в 8E, как мы делали ранее. | ||
− | < | + | <source lang="bash">#pvcreate /dev/sdc1 |
Physical volume “/dev/sdc1” successfully created | Physical volume “/dev/sdc1” successfully created | ||
#vgextend testvg /dev/sdc1 | #vgextend testvg /dev/sdc1 | ||
− | Volume group “testvg” successfully extended</ | + | Volume group “testvg” successfully extended</source> |
Нашей группе томов теперь отведено два физических тома (sdb1 | Нашей группе томов теперь отведено два физических тома (sdb1 | ||
и sdc1). Так вы можете расширить существующую группу томов (и ее | и sdc1). Так вы можете расширить существующую группу томов (и ее | ||
Строка 287: | Строка 287: | ||
размер одного диска. Далее нам нужно переместить данные на новый | размер одного диска. Далее нам нужно переместить данные на новый | ||
том и удалить старый диск: | том и удалить старый диск: | ||
− | < | + | <source lang="bash">#pvmove /dev/sdb1 /dev/sdc1 |
/dev/sdb1: Moved: 100.0% | /dev/sdb1: Moved: 100.0% | ||
#vgreduce testvg /dev/sdb1 | #vgreduce testvg /dev/sdb1 | ||
− | Removed “/dev/sdb1” from volume group “testvg”</ | + | Removed “/dev/sdb1” from volume group “testvg”</source> |
Pvmove физически перемещает все данные с одного тома на другой. На нашей крошечной файловой системе это займет несколько | Pvmove физически перемещает все данные с одного тома на другой. На нашей крошечной файловой системе это займет несколько | ||
секунд, но на большой системе (особенно если она постоянно используется) может потребоваться несколько часов. | секунд, но на большой системе (особенно если она постоянно используется) может потребоваться несколько часов. |
Версия 10:36, 5 октября 2009
|
|
|
Содержание |
LVM: Виртуальные разделы
- Сражаетесь с созданием разделов при установке? Хотели бы файловую систему с гибко изменяемым размером или более чем на один диск? Спросите Роба Добози.
Представьте, что у вас есть волшебный нож, которым можно нарезать хлеб на ломтики и намазать их маслом. Вроде ничего магического, а? Теперь представьте, что этот нож позволяет снова слепить ломтики воедино или сделать их тоньше, не затрагивая масло на них. Примерно это и умеет делать технология LVM (Logical Volume Manager, Менеджер логических томов). Буханка хлеба – это ваш диск, ломтики – разделы на нем, масло – файловые системы с их содержимым, а LVM – тот самый волшебный нож.
LVM добавляет логический слой между физическим диском (им может быть реальный винчестер, RAID-массив или что-нибудь другое) и файловой системой. Этот логический слой (или том) затем может динамически изменять свой размер (если это поддерживается файловой системой), прозрачно перемещать файловую систему в другое физическое место, создавать снимки файловой системы, доступные для чтения-записи, или размазывать ваши данные между несколькими физическими накопителями.
Я работал в виртуальной машине, но вы можете взять реальную систему с несколькими неиспользуемыми разделами (не менее 100 МБ). Эквивалент дискового раздела LVM зовется логическим томом (volume), и файловая система обычно создается на нем. Логические тома объединяются в логические группы (volume group). Для создания группы тома нужен физический том (обычно созданный на дисковом разделе). Итак, это была теория, а теперь давайте взглянем, как создавать и использовать тома.
Часть 1 Базовые операции
Сперва надо идентифицировать и настроить существующие разделы. Важно, чтобы тип раздела был установлен в 8E (LVM). Будьте осторожны при экспериментах с разделами и томами, не то можно уничтожить ваши данные (все команды даются от имени суперпользователя-root).
#fdisk /dev/sdb [… куча ненужных нам строк ...] Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-65270, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-65270, default 65270): Using default value 65270 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Давайте создадим физический том LVM:
#pvcreate /dev/sdb1 Physical volume “/dev/sdb1” successfully created
Теперь можно создать группу томов и назначить ей физический том. Вы можете дать группе томов любое содержательное имя, но хорошим решением будет использовать окончание ‘vg’. Это поможет легко идентифицировать файловые системы, находящиеся в ведении LVM.
#vgcreate testvg /dev/sdb1
Volume group “testvg” successfully created
Чтобы иметь возможность создавать файловые системы, сперва нужно создать логический том. Снова, вы можете использовать любое имя, но я рекомендую добавить ‘lv’ в его конец.
#lvcreate -L 20M -n testlv testvg
Logical volume “testlv” created
Теперь у вас есть логический том с именем testlv, занимающий 20 МБ (параметр -L). Он доступен через /dev/testvg/testlv (поняли, зачем нужно было ‘vg’ в конце имени группы томов?). Наконец, создадим файловую систему – допускается любой ее тип, но, пожалуйста, помните, что не все файловые системы поддерживают расширение или уменьшение, поэтому мы выберем ext3.
#mkfs.ext3 /dev/testvg/testlv [... куча удаленного ненужного текста …]
Чтобы пользоваться файловой системой, смонтируем ее где-нибудь: например, в точке монтирования /mnt/test.
#mkdir /mnt/test #mount /dev/testvg/testlv /mnt/test
Так файловая система смонтирована временно. После перезагрузки она исчезнет, и вам придется монтировать ее снова. Если вы хотите всегда иметь ее под рукой всегда, добавьте соответствующую строку в /etc/fstab.
Ищем информацию
Перед тем как тестировать, что мы понаделали, припомним и опробуем пару команд, которые могут предоставить информацию об всех компонентах LVM. Сперва мы создавали разделы и физические тома; о них расскажет pvdisplay. Как и все команды LVM, вызванная без параметров, она выведет сведения обо всех физических томах системы. Второй шла группа томов – vgdisplay позволит увидеть атрибуты указанных групп томов (или всех групп, при запуске без параметров). Обычно самой интересной частью информации, выдаваемой vgdisplay, является размер группы томов, PE size (размер физического экстента [диапазоны (обычно несколько мегабайт) физического диска, подобные кластерам, – прим. пер.]), полное, занятое и свободное число экстентов или МБ (Total PE, Alloc PE и Free PE). Последним объектом LVM является логический том. Команда, выводящая данные о нем, называется lvdisplay. Также интереснейшей информацией может быть размер логического тома (LV size): его значение отражает размер файловой системы. Можете попробовать эти команды друг за другом:
#pvdisplay /dev/sdb1 #vgdisplay testvg #lvdisplay /dev/testvg/testlv
А что у нас с файловой системой?
#df -h /mnt/test Filesystem Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv 20M 1.2M 18M 7% /mnt/test
Вы заметили, что тут неверно? Мы создали и смонтировали файловую систему с /dev/testvg/testlv, а обнаружили, что она смонтирована с /dev/mapper/testvg-testlv. Все так и должно быть. Это нормально для LVM2, так как для обращения к ядру он использует device-mapper. Это второй способ узнать, что интересующее вас устройство, на самом деле, том LVM (первый способ заключается в соглашении об именовании, использованном при создании группы томов и самих томов).
Тестируем и изменяем размер
Ну вот, все создано; давайте проверим, работают ли тома, скопировав что-нибудь в файловую систему.
#cp /usr/bin/* /mnt/test/
Ой-ей!!! Если вы следуете этому учебнику слово в слово, вы должны увидеть следующее:
cp: cannot create regular file `/mnt/test/zjsdecode’: No space left on device cp: cannot create regular file `/mnt/test/zsoelim’: No space left on device
Что же произошло? Проверим-ка свободное место в файловой системе:
#df -h /mnt/test Filesystem Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv 20M 20M 0 100% /mnt/test
Как видите, мы использовали все свободное пространство. Если бы эта файловая система была создана на дисковом разделе, единственным способом все исправить было бы удаление каких-нибудь данных или переразбиение диска, но LVM способен расширить логический том и файловую систему. Начнем с логического тома:
#lvdisplay /dev/testvg/testlv | grep Size LV Size 20.00 MB #lvextend -L100M /dev/testvg/testlv Extending logical volume testlv to 100.00 MB Logical volume testlv successfully resized #lvdisplay /dev/testvg/testlv | grep Size LV Size 100.00 MB
Файловую систему ext3 вы можете расширить «на лету», без останова.
#resize2fs /dev/testvg/testlv resize2fs 1.40.8 (13-Mar-2008) Filesystem at /dev/testvg/testlv is mounted on /mnt/test; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/testvg/testlv to 102400 (1k) blocks. The filesystem on /dev/testvg/testlv is now 102400 blocks long. #df -h /mnt/test Filesystem Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv 98M 20M 74M 22% /mnt/test
Глядя на вывод df выше, я счел, что файловая система великовата, и решил ее чуть-чуть уменьшить. При этом следует знать, что LVM распределяет место в «экстентах»; размер экстента показывается в выводе vgdisplay как поле ‘PE size’, и по умолчанию он равен 4 МБ. Размер логического тома уменьшается кратно экстенту. Первый шаг – уменьшение размера файловой системы. Увы, в реальном времени ext3 такого не умеет, поэтому придется сперва отмонтировать файловую систему и запустить проверку (fsck).
#umount /mnt/test #e2fsck -f /dev/testvg/testlv [... удаленные всякие ненужные строки ...] /dev/testvg/testlv: 426/22256 files (1.2% non-contiguous), 22964/102400 blocks
Проверка убеждает, что файловая система в порядке, и дает возможность ее уменьшения с минимальным риском.
#resize2fs /dev/testvg/testlv 50M resize2fs 1.40.8 (13-Mar-2008) Resizing the filesystem on /dev/testvg/testlv to 51200 (1k) blocks. The filesystem on /dev/testvg/testlv is now 51200 blocks long.
Немного математики. Пятьдесят не делится на четыре без остатка. Если мы попытаемся уменьшить размер логического тома до 50 МБ, он станет 48 МБ или 52 МБ. К счастью, lvreduce хватает ума выбрать большее значение.
#lvreduce -L 50M /dev/testvg/testlv Rounding up size to full physical extent 52.00 MB WARNING: Reducing active logical volume to 52.00 MB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce testlv? [y/n]: y Reducing logical volume testlv to 52.00 MB Logical volume testlv successfully resized
Последним шагом будет еще одно изменение размера файловой системы, для использования всего доступного пространства.
#resize2fs /dev/testvg/testlv resize2fs 1.40.8 (13-Mar-2008) Resizing the filesystem on /dev/testvg/testlv to 53248 (1k) blocks. The filesystem on /dev/testvg/testlv is now 53248 blocks long.
Теперь можно заново смонтировать файловую систему и проверить, что она имеет корректный размер.
#mount /dev/testvg/testlv /mnt/test/ #df -h /mnt/test Filesystem Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv 51M 20M 30M 40% /mnt/test
Пожалуйста, помните про размер экстента при изменении размера логических томов и проверяйте, что размер нового тома такой же или больше, чем размер файловой системы.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Часть 2 Операции посложнее
LVM позволяет создать копию логического тома для определенного момента времени (ее называют снимком). Так и слышу ваш стон: «А это еще зачем?» Хорошо, представим, что у вас есть база данных (или другое приложение), и вы хотите сделать полноценную резервную копию. Для этого придется завершить работу или, как минимум, приостановить ее. Однако создание резервной копии требует времени – и система долго будет недоступна. А вот с LVM можно остановить вашу базу данных, сделать снимок ее файловой системы и запустить ее снова, что займет пару секунд. К состоянию, зафиксированному снимком, можно вернуться.
Другой пример касается виртуализации. Пусть вы хотите протестировать нечто на вашей виртуальной машине, но боитесь, что она от этого сломается. Решение очень простое: создайте снимок файловой системы, на которой расположен образ диска вашей виртуальной машины. Теперь можете запустить виртуальную машину из этого снимка, выполнить ваш тест, и если что-то пойдет не так, просто удалить снимок. Данные на момент создания снимка в вашей исходной файловой системе уцелеют. Хитро! [даже слишком: возможность делать снимки состояния гостевой ОС есть в большинстве виртуальных машин, например, VirtualBox, – прим. ред.] Итак, что надо сделать? Сперва убедимся, что в группе томов достаточно места (см. vgdisplay ранее). Если да, то просто создадим новый логический том с параметром -s (снимок) и смонтируем его, как если бы он был обычной файловой системой.
#lvcreate -s -L50M -n testlvsnap /dev/testvg/testlv Rounding up size to full physical extent 52.00 MB Logical volume “testlvsnap” created #mkdir /mnt/snap #mount /dev/testvg/testlvsnap /mnt/snap #df -h /mnt/test /mnt/snap Filesystem Size Used Avail Use% Mounted on /dev/mapper/testvg-testlv 51M 20M 30M 40% /mnt/test /dev/mapper/testvg-testlvsnap 51M 20M 30M 40% /mnt/snap
Они оба выглядят одинаково. Вы можете перепроверить это, запустив следующие команды (их вывод мы удалили, так как он слишком длинный):
#diff /mnt/test /mnt/snap/ #ls -l /mnt/test #ls -l /mnt/snap
Теперь можно убедиться, что LVM и вправду умеет удалять и создавать любые файлы в нашем снимке.
#rm -rf /mnt/snap/* (БУДЬТЕ ОСТОРОЖНЫ С ЭТОЙ КОМАНДОЙ!) #touch /mnt/snap/SNAP_TEST #touch /mnt/test/ORIG_TEST #ls -l /mnt/test #ls -l /mnt/snap
Если снимок больше не нужен, его можно удалить тем же способом, что и логический раздел.
#umount /mnt/snap #lvremove /dev/testvg/testlvsnap Do you really want to remove active logical volume “testlvsnap”? [y/n]: y Logical volume “testlvsnap” successfully removed
Одним махом
Если вы интересуетесь, как работает механизм снимков, то все несложно. При создании снимка LVM ничего не копирует: в группе томов просто отводится требуемое место и затем начинается отслеживание изменений. И оригинал, и снимок вначале указывают на те же блоки данных. Если какие-то из них модифицируются, LVM создаст копию измененных данных и сохранит их отдельно. Эта техника называется копированием-при-записи, так что снимки создаются моментально, вне зависимости от размера файловой системы.
Другая дополнительная возможность LVM – прозрачный перенос данных между физическими томами. Он экономит время при замене жесткого диска. Без LVM пришлось бы загружаться с CD и использовать его для копирования файловых систем – а с LVM можно просто добавить новый диск (или его раздел) в имеющуюся группу томов и велеть LVM переместить все на него. Чтобы проделать следующее упражнение, вы должны иметь доступ к другому разделу (неважно, на другом он диске или на том же самом). Создайте раздел и установите его тип в 8E, как мы делали ранее.
#pvcreate /dev/sdc1 Physical volume “/dev/sdc1” successfully created #vgextend testvg /dev/sdc1 Volume group “testvg” successfully extended
Нашей группе томов теперь отведено два физических тома (sdb1 и sdc1). Так вы можете расширить существующую группу томов (и ее тома). Это также и способ создания файловых систем, превышающих размер одного диска. Далее нам нужно переместить данные на новый том и удалить старый диск:
#pvmove /dev/sdb1 /dev/sdc1 /dev/sdb1: Moved: 100.0% #vgreduce testvg /dev/sdb1 Removed “/dev/sdb1” from volume group “testvg”
Pvmove физически перемещает все данные с одного тома на другой. На нашей крошечной файловой системе это займет несколько секунд, но на большой системе (особенно если она постоянно используется) может потребоваться несколько часов.
Часть 3 Установка или конвертирование в LVM
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Ну что, убедились, что, после нарезания хлеба, LVM – самая отличная штука? Захотелось перевести свою систему на управляемые тома LVM? Не бойтесь, это довольно просто. Fedora и CentOS практически идентичны, и обе будут использовать LVM, если вы выберете стандартную установку. OpenSUSE позволит выбрать между установкой на обычный раздел и установкой на основе LVM, Ubuntu Server также имеет снабженную описанием установку с использованием LVM. Единственным дистрибутивом, из мной протестированных, который не поддерживает установку на LVM, является Ubuntu Desktop. К счастью, есть обходной путь. Подробности ищите здесь: http://www.debuntu.org/how-to-install-ubuntuover-lvm-filesystem.
А что делать, если вы желаете использовать LVM на существующих файловых системах, но не хотите переустанавливать систему? К сожалению, нет магического инструмента, умеющего преобразовывать разделы в логические тома. Вы можете сделать это, но файловая система должна иметь по крайней мере 50% свободного места. (Альтернатива – использовать запасной диск или другой раздел, где места достаточно.) Прежде чем менять разделы и файловые системы, пожалуйста, позаботьтесь о резервных копиях ваших ценных данных.
Во-первых, создайте новый раздел, используя свободное место на диске. Наилучший инструмент для этого – GParted. Теперь установите тип раздела в LVM (с помощью fdisk или cfdisk), создайте физический том, группу томов и логический том, а затем и файловую систему. Используйте что-нибудь подходящее, типа dd, cpio, dump/restore или tar, для копирования данных в новую файловую систему. Сделав это, измените тип исходного раздела на LVM, создайте на нем физический том и добавьте его в группу томов. Теперь можете расширить логический том до требуемого размера.
Если вы намерены конвертировать в LVM вашу корневую файловую систему, загрузитесь с любого LiveCD/DVD и выполните все действия оттуда. Следует также знать, что на логическом томе нельзя размещать /boot, иначе вы вообще не сможете загрузить вашу систему. Причина здесь в том, что загрузчики (в частности, Grub) не понимают LVM и не могут найти ядро для загрузки.
И более того
Мы рассмотрели часть основных и чуть-чуть расширенных возможностей менеджера логических томов. LVM, однако, умеет больше, особенно если у вас не один диск. Например, если назначить два физических тома на группу томов, LVM употребит все доступное пространство на первом томе, а затем перейдет на второй. Хотя, возможно, было бы быстрее читать и писать на два диска параллельно – поэтому можно велеть LVM размещать порции данных на нескольких физических томов по принципу RAID0. LVM не предусматривает избыточности данных, как RAID1 или 5, но физические тома можно организовать на основе устройств Linux Software RAID (md): создать несколько md-устройств, а затем объединить их в один или более логических томов.
Я также обошел вниманием некоторые функции, типа поддержки кластеризации, и команды, такие как vgscan, vgchange и vgs. Если вы хотите узнать о них больше, взгляните на документ LVM HOWTO на http://www.tldp.org/HOWTO/LVM-HOWTO. Местами он немного устарел, но все еще является прекрасным источником информации.