Как уменьшить корневой раздел xfs на lvm
Содержание:
常见问题
LVM 命令不起作用
加载以下模块:
# modprobe dm_mod
正常情况下,模块应当被自动加载。假如该模块无法被自动加载,你可以试着修改:
本文或本节需要。要贡献翻译,请访问简体中文翻译团队。
/etc/mkinitcpio.conf:
MODULES="dm_mod ..."
你需要来提交你对的更改。
测试以lvm开头的命令是否可以被正确执行,例如:
# lvm pvdisplay
如果你在挂载某个已创建好的逻辑卷时,发现它没有出现在命令的结果列表里,那么你可以用以下命令去激活它:
# vgscan # vgchange -ay
在可移除设备上的LVM问题
症状:
# vgscan Reading all physical volumes. This may take a while... /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error Found volume group "backupdrive1" using metadata type lvm2 Found volume group "networkdrive" using metadata type lvm2
产生原因:
- 在停用卷组(VG)之前就移除掉外部的LVM设备。在你断开连接之前,请确保以下命令被执行:
# vgchange -an volume group name
解决方案:如果你已经用命令来激活卷组,但仍有Input/output error的错误信息。执行以下命令:
# vgchange -an volume group name
移除外部设备,稍候几分钟后再执行以下命令:
# vgscan # vgchange -ay volume group name
在尝试扩大一个逻辑卷时出现以下错误:
" Insufficient suitable contiguous allocatable extents for logical volume "
请确保在生成grub.cfg前移除了快照卷。
本文或本节需要。要贡献翻译,请访问简体中文翻译团队。
/etc/lvm/lvm.conf
thin_check_options =
Загрузка с временного раздела
Подготовим временный раздел для корневого тома:
pvcreate /dev/sdb
vgcreate vg_tmp_root /dev/sdb
lvcreate -n lv_tmp_root -l +100%FREE /dev/vg_tmp_root
* данными командами мы создали группу томов vg_tmp_root и сделали из нее один логический раздел lv_tmp_root.
Создадим файловую систему XFS и смонтируем ее в каталог /mnt:
mkfs.xfs /dev/vg_tmp_root/lv_tmp_root
mount /dev/vg_tmp_root/lv_tmp_root /mnt
Смотрим расположение корневого раздела командой:
lvdisplay
…
— Logical volume —
LV Path /dev/vg/root
LV Name root
VG Name vg
…
Находим среди результатов корневой раздел — нам нужен параметр LV Path.
Сдампим содержимое текущего корневого раздела в наш временный:
xfsdump -J — /dev/vg/root | xfsrestore -J — /mnt
* где /dev/vg/root — то, что мы получили в параметре LV Path командой lvdisplay; /mnt — каталог, в который мы смонтировали наш временный раздел.
Заходим в окружение chroot нашего временного корня:
for i in /proc/ /sys/ /dev/ /run/ /boot/; do mount —bind $i /mnt/$i; done
chroot /mnt/
Запишем новый загрузчик:
grub2-mkconfig -o /boot/grub2/grub.cfg
Обновляем образы загрузки:
cd /boot ; for i in `ls initramfs-*img`; do dracut -v $i `echo $i|sed «s/initramfs-//g; s/.img//g»` —force; done
Открываем конфигурационный файл grub:
vi /boot/grub2/grub.cfg
Меняем все значения, которые задействуют старый том lvm — в моем случае, все совпадения:
…
… lv=vg/root …
…
… менялись на:
…
… lv=vg_tmp_root/lv_tmp_root …
…
* так как у меня корневой раздел был в группе vg и имел название root (команда lvdisplay), то под замену попадает vg/root. В вашем случае это будет другое значение.
Этот момент крайне важен. Неправильное редактирование приведет к невозможности загрузки.
Выходим из окружения chroot и перезагружаем компьютер:
exit
shutdown -r now
… мы должны загрузиться с временного раздела:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 9G 0 part
vg-swap 253:1 0 1G 0 lvm
vg-root 253:2 0 8G 0 lvm
sdb 8:16 0 8G 0 disk
vg_tmp_root-lv_tmp_root 253:0 0 8G 0 lvm /
* как видим, теперь корневой раздел на sdb.
Известные ошибки[править]
Persistent log is not supported on segment-by-segment mirroringправить
LVM до версии 2.02.111 выдаёт ошибку при попытке удалить из группы томов сломавшийся диск, если на нём располагались части зеркального тома RAID1.
Выглядит это так:
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb3 DATA lvm2 a-- 7,27t 5,31t
/dev/sdc3 DATA lvm2 a-- 7,27t 6,27t
/dev/sdd3 DATA lvm2 a-- 7,27t 2,19t
# vgreduce --removemissing DATA
Couldn't find device with uuid 1kelDC-lGQY-VzCf-mZtc-Xmkd-uPbB-WFxSP3.
WARNING: Partial LV SRV needs to be repaired or removed.
WARNING: Partial LV SRV_rmeta_1 needs to be repaired or removed.
WARNING: Partial LV SRV_rimage_1 needs to be repaired or removed.
There are still partial LVs in VG DATA.
To remove them unconditionally use: vgreduce --removemissing --force.
# vgreduce --removemissing --force DATA
Couldn't find device with uuid 1kelDC-lGQY-VzCf-mZtc-Xmkd-uPbB-WFxSP3.
Persistent log is not supported on segment-by-segment mirroring
В результате с группой томов невозможно ничего сделать.
Исправление этого следующее:
- Сохраняем данные из оставшихся частей зеркальных томов. Все части зеркального тома видны в системе как /dev/ГРУППА/ТОМ_rimage_?, в выводе vgreduce —removemissing видно, какие из них утеряны. Берём оставшуеся часть зеркала и копируем командой dd в новый файл или в раздел того же размера.
- Ставим новый диск на замену неисправного. желательно, чтобы имя устройства было тем же самым.
- В таблице разделов создаём раздел с тем же номером того же размера, что и прежний. Обязательное условие — размер, расположение может отличаться, хотя лучше соблюсти и это условие.
- Форматируем раздел в физический том LVM командой pvcreate —u UUID_старого_тома —restorefile /etc/lvm/archive/дата_до_сбоя_диска.vg РАЗДЕЛ. Если получим ошибку, используем команду pvcreate —u UUID_старого_тома —norestorefile РАЗДЕЛ.
- Добавляем физический том в группу томов командой vgextend —restoremissing ГРУППА РАЗДЕЛ
- Из логических томов удаляем зеркала, расположенные на поддельном физическом томе
- Из группы томов удаляем поддельный физический том.
- Теперь с группой томов можно работать обычным образом.
Vantaggi
Qui sono elencate alcune cose che è possibile realizzare con LVM che non possono (oppure non sono facilmente realizzabili) con il semplice uso di mdadm, partizioni MBR, partizioni GPT, parted/gparted e strumenti a livello file come rsync.
- Ridimensionamento online/live.
- Non sono più necessarie partizioni estese (non lo sono nemmeno per i partizionamenti GPT)
- Ridimensionare le partizioni senza il problema del loro ordine sul disco (non è necessario preoccuparsi dello spazio contiguo disponibile)
- Migrazione online/live delle partizioni usate da servizi senza dover riavviare i servizi.
Questo può essere molto utile su di un server, senza interfaccia grafica quindi, ma sarà necessario decidere se le sue caratteristiche valgono l’astrazione.
Зачем нужен LVM[править]
Установка системы прямо на разделы диска зачастую приводит к следующей проблеме. Нужно каким-то образом «правильно» разбить жесткий диск. Слово «правильно» стоит в кавычках, потому что «правильного» разбиения диска для всех возможных ситуаций и применений не существует. В сети есть много советов по данному поводу, но они не учитывают потребностей конкретного пользователя (в случае настольной системы) или конкретного администратора (в случае сервера). Обычно рекомендуют разделы /home, /var, /usr, какие-то еще выносить на отдельные разделы диска. Но если разбивающий ошибется в размерах этих разделов, возникает очень нехорошая ситуация — на одних разделах место подходит к концу, в то время как на остальных места еще много. Приехали! Дисковое пространство нужно переразмечать. Для этого есть много способов:
1. Тотальный backup, затем переустановка системы с переразбиением диска.
2. Переразметка с помощью parted с риском потерять данные.
3. Изначальная установка системы на LVM, который позволяет изменять размеры своих разделов прямо на работающей системе.
Troubleshooting
Boot/Shutdown-problems because of disabled lvmetad
The factual accuracy of this article or section is disputed.
The must be set in . This is the default now — if you have a file, you must merge this change.
Tip: Run the command to list all your configuration settings.
LVM commands do not work
Load proper module:
# modprobe dm_mod
The module should be automatically loaded. In case it does not, you can try:
The factual accuracy of this article or section is disputed.
/etc/mkinitcpio.conf
MODULES=(dm_mod ...)
You will need to regenerate the initramfs to commit any changes you made.
Try preceding commands with lvm like this:
# lvm pvdisplay
Logical Volumes do not show up
If you are trying to mount existing logical volumes, but they do not show up in , you can use the following commands to activate them:
# vgscan # vgchange -ay
LVM on removable media
Symptoms:
# vgscan
Reading all physical volumes. This may take a while... /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error Found volume group "backupdrive1" using metadata type lvm2 Found volume group "networkdrive" using metadata type lvm2
Cause: removing an external LVM drive without deactivating the volume group(s) first. Before you disconnect, make sure to:
# vgchange -an volume group name
Fix: assuming you already tried to activate the volume group with , and are receiving the Input/output errors:
# vgchange -an volume group name
Unplug the external drive and wait a few minutes:
# vgscan # vgchange -ay volume group name
Suspend/resume with LVM and removable media
The factual accuracy of this article or section is disputed.
In order for LVM to work properly with removable media – like an external USB drive – the volume group of the external drive needs to be deactivated before suspend. If this is not done, you may get ‘buffer I/O errors on the dm device (after resume). For this reason, it is not recommended to mix external and internal drives in the same volume group.
To automatically deactivate the volume groups with external USB drives, tag each volume group with the tag in this way:
# vgchange --addtag sleep_umount vg_external
Once the tag is set, use the following unit file for systemd to properly deactivate the volumes before suspend. On resume, they will be automatically activated by LVM.
/etc/systemd/system/ext_usb_vg_deactivate.service
Description=Deactivate external USB volume groups on suspend Before=sleep.target Type=oneshot ExecStart=-/etc/systemd/system/deactivate_sleep_vgs.sh WantedBy=sleep.target
and this script:
/etc/systemd/system/deactivate_sleep_vgs.sh
#!/bin/sh
TAG=@sleep_umount
vgs=$(vgs --noheadings -o vg_name $TAG)
echo "Deactivating volume groups with $TAG tag: $vgs"
# Unmount logical volumes belonging to all the volume groups with tag $TAG
for vg in $vgs; do
for lv_dev_path in $(lvs --noheadings -o lv_path -S lv_active=active,vg_name=$vg); do
echo "Unmounting logical volume $lv_dev_path"
umount $lv_dev_path
done
done
# Deactivate volume groups tagged with sleep_umount
for vg in $vgs; do
echo "Deactivating volume group $vg"
vgchange -an $vg
done
Finally, enable the unit.
Resizing a contiguous logical volume fails
If trying to extend a logical volume errors with:
" Insufficient suitable contiguous allocatable extents for logical volume "
/etc/lvm/lvm.conf
thin_check_options =
See .
LVM の構成要素
LVM の基本的な構成要素は以下の通りです:
- 物理ボリューム (PV, Physical volume): ハードディスク上のパーティション (もしくはハードディスクそれ自体、ループバックファイル) です。これをまとめてボリュームグループを作ることができます。特別なヘッダーがあり物理エクステントに分割されます。物理ボリュームについてはハードドライブを構成するための大きなブロックとして考えて下さい。
- ボリュームグループ (VG, Volume group): ストレージボリューム(つまり一つのディスク)として使われる物理ボリュームの集まりです。ボリュームグループには論理ボリュームが含められます。ボリュームグループはハードドライブとして考えて下さい。
- 論理ボリューム (LV, Logical volume): ボリュームグループの中にある»仮想/論理パーティション»であり、物理エクステントで構成されます。論理ボリュームのことは通常のパーティションみたいなものと考えて下さい。
- 物理エクステント (PE, Physical extent): 論理ボリュームに割り当てるごとができるディスクの欠片 (通常 4MiB) です。物理エクステントはどのパーティションにも割り当てることが出来るディスクのパーツと考えて下さい。
例:
Physical disks
Disk1 (/dev/sda):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 50GB (Physical volume) |Partition2 80GB (Physical volume) |
|/dev/sda1 |/dev/sda2 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
Disk2 (/dev/sdb):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 120GB (Physical volume) |
|/dev/sdb1 |
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
LVM logical volumes
Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Logical volume1 15GB |Logical volume2 35GB |Logical volume3 200GB |
|/dev/MyStorage/rootvol|/dev/MyStorage/homevol |/dev/MyStorage/mediavol |
|_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
Терминология[править]
LVM предусматривает три логических уровня работы с дисковым пространством:
1. Самый нижний — физические тома (physical volumes). Это собственно физические диски. Это могут быть диски целиком (/dev/sda, /dev/sdb и т.д.) или отдельные разделы (/dev/sda1, /dev/sdb5 и т.п.).
2. Группы томов — volume groups. В группы томов объединяются физические тома. Таким образом группы томов представляют собой пул дискового пространства, необходимый для следующего уровня. Группы томов могут иметь человеческие названия, говорящие администратору системы об их предназначении: system, sales, database и т.д.
3. Логические тома (logical volumes) — это аналог разделов физического диска и то, ради чего вообще существуют диски — именно на них хранятся данные. Пользователи (и процессы) системы работают только с логическими томами. Таким образом LVM создает для них всех слой абстракции, скрывая, с какими именно физическими дисками они в данный момент работают. Администратор системы может добавлять физические тома в LVM и удалять их из него (см. ниже), но процессы (и пользователи) об этом знать не будут.
在LVM上安装Arch Linux
你应该在中的的分区和这一步中创建LVM卷。不要直接格式化一个分区作为你的根文件系统(/),而应将其创建在一个逻辑卷(LV)中。
快速导览:
- 创建物理卷(PV)所在的分区。
- 创建物理卷(PV)。如果你只有一个硬盘,那么你最好只创建一个分区一个物理卷;如果你有多个硬盘,你可以创建多个分区,在每个分区上分别创建一个物理卷。
- 创建卷组(VG),并把所有物理卷加进卷组。
- 在卷组(VG)上创建逻辑卷(LV)。
- 继续中的格式化分区步骤。
- 当你做到安装指南中的“Initramfs”步骤时,把 加入到 文件中(请参考下文)。
警告: 若你使用不支持LVM的引导程序,不能置于LVM中。你必须创建一个独立的分区并直接格式化它。已知支持LVM的引导程序只有GRUB。
在继续配置LVM前,必须对设备进行分区。
创建分区:
- 若使用MBR,设置 分区类型为 (在»fdisk»中为).
- 若使用GPT, 设置为 (在»fdisk»中为;在»gdisk»中为).
创建物理卷(PV)
可通过以下命令列出可被用作物理卷的设备:
# lvmdiskscan
警告: 请确认你对正确的设备进行操作,否则会导致文件丢失!
在列出的设备上创建物理卷:
# pvcreate DEVICE
该命令在各个设备上创建LVM头。如所示, DEVICE可以是磁盘(如),分区(如)或环回设备。例如:
# pvcreate /dev/sda2
你可以用以下命令查看已创建好的物理卷:
# pvdisplay
创建卷组(VG)
创建完成物理卷(PV)之后,下一步就是在该物理卷创建卷组(VG)了。
首先必须先在其中一个物理卷(PV)创建一个卷组:
# vgcreate <volume_group> <physical_volume>
可用作字符卷组的名称可在中查到。
例如:
# vgcreate VolGroup00 /dev/sda2
然后让该卷组扩大到其他所有的物理卷:
# vgextend <卷组名> <物理卷> # vgextend <卷组名> <其它物理卷> # ...
例如:
# vgextend VolGroup00 /dev/sdb1 # vgextend VolGroup00 /dev/sdc
其中,“VolGroup00”名字换成你自己起的名字即可。
接下来可以用以下命令查看卷组:
# vgdisplay
注意: 你可以创建多个的卷组,但这将使你的硬盘空间分布在不同(逻辑)磁盘上。
一步创建卷组
LVM支持将卷组与物理卷的创建聚合在一个命令中。例如,为了在前文提到的三个设备中创建名为VolGroup00的卷组,可以执行如下命令:
# vgcreate VolGroup00 /dev/sda2 /dev/sdb1 /dev/sdc
该命令首先会在分区上创建物理卷(如果之前没有创建过),再创建一个包含三个物理卷的卷组。如果设备上已经存在文件系统,命令会提出警告。
创建逻辑卷(LV)
提示: 若想在LVM上使用快照, 逻辑卷缓存(logical volume caching), thin provisioned logical volumes 或 RAID,请参见 .
创建完卷组(VG)之后,就可以开始创建逻辑卷(LV)了。输入下面命令以指定新逻辑卷的名字、大小及其所在的卷组:
# lvcreate -L <卷大小> <"卷组名> -n <卷名>
例如:
# lvcreate -L 10G VolGroup00 -n lvolhome
该逻辑卷创建完后,你就可以通过或来访问它。与卷组命名类似,你可以按你的需要将逻辑卷命名。
你可以指定一个或多个物理卷来限制LVM分配数据空间的位置。比如你希望在较小的SSD硬盘上创建根文件系统,并在较慢的机械硬盘上创建家目录卷,仅需把物理卷设备加入到命令中,例如:
# lvcreate -L 10G VolGroup00 -n lvolhome /dev/sdc1
如果你想让要创建的逻辑卷拥有卷组(VG)的所有未使用空间,请使用以下命令:
# lvcreate -l +100%FREE <volume_group> -n <logical_volume>
可以通过以下命令来查看逻辑卷:
# lvdisplay
注意: 为了使上述命令能正常运行,你可能需要加载device-mapper内核模块(请使用命令modprobe dm-mod)。
提示: 一开始可以创建小一点的逻辑卷,在卷组里留下一部分未使用空间,以后就可以根据需要再作扩展了。
建立文件系统与挂载逻辑卷
现在你的逻辑卷应该已经在和中了。如果你无法在以上位置找到它,请使用以下命令来加载模块、并扫描与激活卷组:
# modprobe dm-mod # vgscan # vgchange -ay
现在你可以在逻辑卷上创建文件系统并像普通分区一样挂载它了(如果你正在安装Arch linux,需要更详细的信息,请参考):
# mkfs.<类型> /dev/mapper/<卷组名>-<卷名> # mount /dev/mapper/<卷组名>-<卷名> <挂载点>
例如:
# mkfs.ext4 /dev/mapper/VolGroup00-lvolhome # mount /dev/mapper/VolGroup00-lvolhome /home
警告: 挂载点请选择你所新建的逻辑卷(例如:),不要使用逻辑卷所在的实际分区设备(即不要使用:)。
配置mkinitcpio
如果你的根文件系统基于LVM,你需要启用适当的mkinitcpio钩子,否则你的系统可能无法启动。
- 若使用基于busybox的initramfs,请启用和。
- 若使用基于systemd的initramfs,请启用和。
默认已经预设好,不必手动启用了。你只需要编辑文件,在与这两项中间插入:
基于busybox的initramfs
/etc/mkinitcpio.conf
HOOKS="base udev ... block lvm2 filesystems"
基于systemd的initramfs:
/etc/mkinitcpio.conf
HOOKS=(base systemd ... block sd-lvm2 filesystems)
之后你就可以继续下一步的操作了。
提示:
- 和钩子被安装,而不是。如果你在»arch-chroot»中新安装的Arch Linux中运行»mkinitcpio»,必须在环境中安装以使mkinitcpio找到或钩子。如果未安装, mkinitcpio将报错:.
- 若根文件系统在LVM + RAID上,请参见.
利点
LVM には通常のハードドライブのパーティションを使うよりも幅広い柔軟性があります:
- 多数のディスクを一つの大きなディスクとして使えます。
- 複数のディスクにまたがる論理ボリュームを作れます。
- 小さな論理ボリュームを作成し、満杯になったら»動的に»リサイズできます。
- ディスクの順番と関係なく論理ボリュームをリサイズできます。VG における LV の位置に依存しないので、周辺に空き容量を取る必要がありません。
- オンラインで論理・物理ボリュームをリサイズ・作成・削除できます。ボリューム上のファイルシステムもリサイズする必要がありますが、オンラインリサイズをサポートしているファイルシステムもあります (ext4 など)。
- サービスによって使われている LV を、サービスを再起動する必要なく他のディスクへオンラインで移行することができます。
- スナップショットを使うことでファイルシステムのフローズンコピーをバックアップすることができます。サービスを落とす時間を最小限にできます。
- 透過的なファイルシステム暗号化や頻繁に使用されるデータのキャッシュなど、様々な device-mapper ターゲットをサポート。(LUKS によって暗号化された) 物理ディスクと からなる環境を構築することで , /home,/backup などの容量を簡単に変更したりできるようになります。起動時に何度もキーを入力する必要はありません。
Руководство по быстрой установке Ganeti
Требование к программному обеспечению
Перед установкой убедитесь что у вас установлены следующие программы:
- Xen Hypervisor, версия 3.0 или выше , если работает на Xen.
- KVM Hypervisor, версия 72 или выше если работает на KVM. Для того чтобы использовать расширенные возможности, такие как Живая_миграция_(Операционные_Системы), virtio, и так далее.
- DRBD, режим ядра и пользовательские утилиты , версия 8.0.7 или выше.
- LVM2
- OpenSSL
- OpenSSH
- Bridge Utilities
- Iproute2
- arping(Часть iputils)
- Python, версии 2.4 или выше ,но не выше 3.0
- Python OpenSSL bindings
- simplejson Python module
- pyparsing Python module
- pyinotify Python module
- ctypes Python module
- socat
Эти программы поставляются в составе большинства дистрибутивов Linux, поэтому они могут быть установлены через стандартный менеджер пакетов. Также многие из них уже должны быть установлены на стандартную машину. На Debian/Ubuntu , вы можете использовать следующие командную строку для установки всех необходимых пакетов , за исключением DRBD и Xen.
$ apt-get install lvm2 ssh bridge-utils iproute iputils-arping \
python python-pyopenssl openssl python-pyparsing \
python-simplejson python-pyinotify scout
Установка программного обеспечения
Чтобы установить, просто запустите следующую команду:
./configure --localstatedir=/var --sysconfdir=/etc && \
make && \
make install
Это позволит установить программное обеспечение в соотвествии с. Затем необходимо скопировать в и интегрировать его в загрузку.
Установка кластера
Прежде чем устанавливать кластер, на каждом узле необходимо создать следующие каталоги:
- /etc/ganeti
- /var/lib/ganeti
- /var/log/ganeti
- /srv/ganeti
- /srv/ganeti/os
- /srv/ganeti/export
После этого, использовать.
Замена сбойного диска в RAID[править]
При сбое жесткого диска:
# lvs -a -o +devices
Couldn't find device with uuid X0Rlv9-DOJT-3KFg-ejN3-6Rcq-vVD8-gZehkn.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
root_sys vg00 rwi-aor-p- 10,00g 100,00 root_sys_rimage_0(0),root_sys_rimage_1(0)
vg00 iwi-a-r-p- 10,00g (0)
vg00 iwi-aor--- 10,00g /dev/sda2(2562)
vg00 ewi-a-r-p- 4,00m (5121)
vg00 ewi-aor--- 4,00m
Один из способов, в замену сбойного диска, добавить в группу томов ещё одно устройство, по объёму не уступающему размеру зеркала:
#vgextend vg00 /dev/sdb2
И выполнить восстановление:
lvconvert --repair /dev/vg00/root_sys
После вывести сбойное устройство из группы томов:
# vgreduce vg00 --removemissing
逻辑卷类型
本文或本节需要。要贡献翻译,请访问简体中文翻译团队。
除了普通的逻辑卷, LVM还支持:快照, logical volume caching, thin provisioned逻辑卷,以及RAID.
快照功能
介绍
LVM可以给系统创建一个快照,由于使用了写入时复制(copy-on-write) 策略,相比传统的备份更有效率。 初始的快照只有关联到实际数据的inode的实体链接(hark-link)而已。只要实际的数据没有改变,快照就只会包含指向数据的inode的指针,而非数据本身。一旦你更改了快照对应的文件或目录,LVM就会自动拷贝相应的数据,包括快照所对应的旧数据的拷贝和你当前系统所对应的新数据的拷贝。这样的话,只要你修改的数据(包括原始的和快照的)不超过2G,你就可以只使用2G的空间对一个有35G数据的系统创建快照。要创建快照,在卷组中必须有未被分配的空间。和其他逻辑卷一样,快照也会占用卷组中的空间。所以,如果你计划使用快照来备份你的根(root)分区,不要将整个卷组的空间都分配给根(root)逻辑卷。
配置
你可以像创建普通逻辑卷一样创建快照逻辑卷。
# lvcreate --size 100M --snapshot --name snap01 /dev/vg0/lv
你可以修改少于100M的数据,直到该快照逻辑卷空间不足为止。
要将逻辑卷卷’lv’ 恢复到创建快照’snap01’时的状态,请使用:
# lvconvert --merge /dev/vg0/snap01
如果逻辑卷处于活动状态,则在下次重新启动时将进行合并(merging)(合并(merging)甚至可在LiveCD中进行)。
注意: 合并后快照将被删除。
也以拍摄多个快照,每个快照都可以任意与对应的逻辑卷合并。
快照也可以被挂载,并可用dd或者tar备份。使用dd备份的快照的大小为拍摄快照后对应逻辑卷中变更过文件的大小。
要使用备份,只需创建并挂载一个快照,并将备份写入或解压到其中。再将快照合并到对应逻辑卷即可。
本文或本节需要。要贡献翻译,请访问简体中文翻译团队。
快照主要用于提供一个文件系统的拷贝,以用来备份; 比起直接备份分区,使用快照备份可以提供一个更符合原文件系统的镜像。
LVM 缓存
来自:
- Cache逻辑卷将使用一个较小而快速的逻辑卷,来提高较大但慢速的逻辑卷的性能。它将大型逻辑卷中经常使用的块存储到较快的缓存卷中。 LVM将这个小而快速的逻辑卷称为缓冲池逻辑卷(cache pool LV)。 大而慢的逻辑卷则被称为源逻辑卷(origin LV)。由于dm-cache(内核驱动)的要求,LVM进一步将缓存池逻辑卷分为两个设备 — 缓存数据逻辑卷和缓存元数据逻辑卷。缓存数据逻辑卷存放源逻辑卷中常用块的拷贝,以提升源逻辑卷的速度。 缓存元数据逻辑卷则存储记录信息,这些信息指定了源逻辑卷中的数据被存放到缓存逻辑卷中的位置。 (即,确定源逻辑卷中的一个块是存储到自身空间还是缓存逻辑卷中?)。要想创建最好、最稳定的缓存逻辑卷,你必须熟悉这些信息。所有这些被提到的逻辑卷都必须存放在一个卷组中。
创建缓存
最快速的方法是直接在快速的设备上创建一个物理卷,并把它添加到一个卷组中:
# vgextend dataVG /dev/sdx
只需一步,即可在sdb上创建一个缓存池,自动生成元数据,将逻辑卷dataLV缓存到sdb上:
# lvcreate --type cache --cachemode writethrough -L 20G -n dataLV_cachepool dataVG/dataLV /dev/sdx
显然,如果你想让缓存变得更大,可更改 参数。
注意: Cachemode有两个可能的参数:
- 确保任何数据写入都会被同时存储到缓存池逻辑卷和源逻辑卷中。 在这种情况下,丢失与缓存池逻辑卷关联的设备不会丢失任何数据;
- 可提供更好的性能, 如果用于缓存的设备发生故障,数据丢失的风险会更高。
如果未指定,将会自动选择。
删除缓存
如果需要撤消上面的创建操作:
# lvconvert --uncache dataVG/dataLV
这会将缓存中挂起的写入操作提交到源逻辑卷, 然后删除缓存逻辑卷。 其它可用的参数和介绍,请参见:.
RAID
来自:
- RAID是一种创建逻辑卷的方法,它使用多个物理设备来提高性能或容错能力。在LVM中,这些物理设备是单个卷组中的物理卷。
LVM RAID支持RAID 0,RAID 1,RAID 4,RAID 5,RAID 6和RAID 10。每个RAID等级的细节请见:Wikipedia:Standard RAID levels
配置RAID
创建物理卷:
# pvcreate /dev/sda2 /dev/sdb2
创建卷组:
# vgcreate VolGroup00 /dev/sda2 /dev/sdb2
使用参数创建逻辑卷。更多选项,请参见和。
# lvcreate --type RaidLevel -n Name -L Size VG
例如:
# lvcreate --type raid1 --mirrors 1 -L 20G -n myraid1vol VolGroup00 /dev/sda2 /dev/sdb2
这将会在设备、上和»VolGroup00″卷组中创建一个20GiB的镜像(mirrored)逻辑卷»myraid1vol»。
为RAID配置mkinitcpio
如果你的根文件系统在LVM RAID上,除了或钩子,你还需添加以及恰当的RAID模块(例如,,或)到中的MODULES数组中。
对于基于busybox的initramfs:
/etc/mkinitcpio.conf
MODULES=(dm-raid raid0 raid1 raid10 raid456) HOOKS=(base udev ... block lvm2 filesystems)
对于基于systemd的initramfs:
/etc/mkinitcpio.conf
MODULES=(dm-raid raid0 raid1 raid10 raid456) HOOKS=(base systemd ... block sd-lvm2 filesystems)







