有1 500GB SSD和1 1TB HD,SSD已经是逻辑卷的一部分,HD使用fstab挂载。一切正常。
但是,出于好奇,如果我决定将第二个驱动器 (/dev/sda1) 扩展到逻辑卷,我是否仍然能够决定哪个驱动器中包含哪些内容以及如何进行?
我已经练习了一些,所以我熟悉pvcreate和vgextend(虚拟机),所以那部分还可以。但我无法将数据从一个特定驱动器移动到另一个驱动器,因为两者都位于同一卷组中。
感谢您的输入
有1 500GB SSD和1 1TB HD,SSD已经是逻辑卷的一部分,HD使用fstab挂载。一切正常。
但是,出于好奇,如果我决定将第二个驱动器 (/dev/sda1) 扩展到逻辑卷,我是否仍然能够决定哪个驱动器中包含哪些内容以及如何进行?
我已经练习了一些,所以我熟悉pvcreate和vgextend(虚拟机),所以那部分还可以。但我无法将数据从一个特定驱动器移动到另一个驱动器,因为两者都位于同一卷组中。
感谢您的输入
我有一个现有的 LVM 卷组,其中有一个 10 TB 逻辑卷安装为 ext4 系统,并且正在使用中。
lvconvert --type cache --cachepool storage/lvmcache-data storage/data
当 ext4 文件系统已安装时运行该命令是否安全storage/data
?(storage/lvmcache-data
之前已经配置过,lvconvert --type cache-pool --cachemode writeback --poolmetadata storage/lvmcache-metadata storage/lvmcache-data
以防产生影响。)
我认为是的,将缓存动态添加到已安装文件系统的在线卷是安全的,但我无法找到任何文档。
谁能帮我解决向 vg 添加更多 GB 的问题吗?
lsblk 输出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 128G 0 disk
|-sda1 8:1 0 500M 0 part /boot/efi
|-sda2 8:2 0 500M 0 part /boot
|-sda3 8:3 0 2M 0 part
`-sda4 8:4 0 127G 0 part
|-rootvg-tmplv 253:0 0 2G 0 lvm /tmp
|-rootvg-usrlv 253:1 0 10G 0 lvm /usr
|-rootvg-optlv 253:2 0 2G 0 lvm /opt
|-rootvg-homelv 253:3 0 1G 0 lvm /home
|-rootvg-varlv 253:4 0 35G 0 lvm /var
`-rootvg-rootlv 253:5 0 12G 0 lvm /
# vgs
VG #PV #LV #SN Attr VSize VFree
rootvg 1 6 0 wz--n- <63.02g <1.02g
#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
homelv rootvg -wi-ao---- 1.00g
optlv rootvg -wi-ao---- 2.00g
rootlv rootvg -wi-ao---- 12.00g
tmplv rootvg -wi-ao---- 2.00g
usrlv rootvg -wi-ao---- 10.00g
varlv rootvg -wi-ao---- 35.00g
我需要使用 sda4 中未使用的 GB 并扩展 rootvg-varlv 的大小,有人可以建议我执行此操作的步骤吗?
您可以通过拍摄 LVM 快照,然后对快照进行扫描,对在线文件系统(例如 root)进行值得信赖的 EXT4 文件系统扫描,如下所示:
制作快照:
lvcreate --snapshot --size 1G --name lv_root_SS --chunksize 4k /dev/VG1/lv_root
EXT4 扫描:(
e2fsck -f /dev/dm-3
新快照的设备名称为 dm-3)
删除快照:
lvremove --yes VG1/lv_root_SS
那行得通吗?
e2fsck
没有抱怨并且似乎扫描得很好。
我是 LVM 新手,但仍然不知道删除故障磁盘/PV 的最佳实践是什么?例如:我有一个精简池my_volume_group/my_lv
。我从 raid 控制器中删除了一个磁盘 (/dev/sde),lvm 给出了以下警告:
WARNING: Couldn't find device with uuid QHOWyk-Ofjr-jnqU-iF7i-YqSJ-BeI4-UpqeI7.
WARNING: VG my_volume_group is missing PV QHOWyk-Ofjr-jnqU-iF7i-YqSJ-BeI4-UpqeI7 (last written to [unknown]).
我试过:
vgreduce --removemissing --force my_volume_group
Logical volume my_volume_group/res0_00000 is used by another device.
然后我删除该节点中的资源 res0,然后重试:
vgreduce --removemissing --force my_volume_group
Cannot activate my_volume_group/my_lv_tdata: pool incomplete.
Failed to suspend my_volume_group/my_lv with queued messages.
Failed to update pool my_volume_group/my_lv.
现在我不知道如何摆脱这种情况。
我需要格式化(空硬盘)RAID 0 硬盘,如下所示:
sdb 8:16 0 3.7T 0 disk
└─md126 9:126 0 3.7T 0 raid0
└─md126p3 259:2 0 3.7T 0 part
├─rootvg01-swap 253:0 0 4G 0 lvm
├─rootvg01-lv05 253:1 0 3.6T 0 lvm
├─rootvg01-lv04 253:2 0 29.3G 0 lvm
├─rootvg01-lv03 253:3 0 19.5G 0 lvm
├─rootvg01-lv02 253:4 0 19.5G 0 lvm
└─rootvg01-lv01 253:5 0 19.5G 0 lvm
我尝试删除 Ubuntu 磁盘中的那些分区,但无法删除。
如何在 Ubuntu 20 中格式化它?
我正在构建一个家庭服务器来在 docker (Ubuntu LTS) 中托管一些自托管应用程序。我想将应用程序的所有文件放在用户主文件夹中,以便将它们保存在一个位置并轻松备份。我正在考虑 2 个主文件夹: /home/user/docker – 用于 docker compose 和所有 docker 卷以及 /home/user/data – 用于我的所有文件:
/home/user/
docker/
container1
container2
…
data/
entertainment/
movies
series
music
downloads/
documents/
photos/
personal files/
backups/
laptop_backups/
phone_backups/
我会将 data/ 文件夹分配给 Nextcloud,以便从家庭笔记本电脑和手机进行访问。
我有一个 500GB SSD、1TB HDD + 几个不同的较小尺寸 HDD + 将来可能会添加更多 HDD。也许还多了一个SSD。
我打算将存储划分为LVM:
SSD – 2 个分区:100GB 和 400GB HDD – 1 个分区:1TB
我将创建 3 个卷组:100GB –“系统”,400GB –“SSD”,1TB –“HDD”。
我正在考虑以下设置:
VG 100GB“系统” – LV“系统”用于/
VG“HDD” – LV“慢速数据”用于:
/home/user/data/entertainment
/home/user/data/backups
/home/user/data/downloads
VG“SSD” – LV“快速数据”用于:
/home/user/data/documents
/home/user/user/docker
我的问题是:如何最好地在卷组和逻辑卷之间划分存储?我希望有一个灵活的设置,以便将来可以调整磁盘存储的大小和更改磁盘存储,同时以最佳方式使用 SSD 空间。
我将 Debian Xen 服务器从 10 更新到 11,然后在不重新启动的情况下更新到 Debian 12,然后重新启动服务器,现在只有一些虚拟机启动。
vm06 运行良好,而 vm04 则运行不佳(还有更多,但为了便于阅读,我从这个问题中删除了它们)
在文件夹 /dev/vg0 中现在只有一些链接的 vlumes:
# ll /dev/vg0/
total 0
lrwxrwxrwx 1 root root 7 Aug 20 17:04 backup -> ../dm-2
lrwxrwxrwx 1 root root 7 Aug 20 17:04 root -> ../dm-0
lrwxrwxrwx 1 root root 8 Aug 20 17:04 vm06.docker-disk -> ../dm-10
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
backup vg0 -wi-ao---- 2,01t
root vg0 -wi-ao---- 10,00g
vm04.matrix-disk vg0 owi-i-s--- 130,00g
vm06.docker-disk vg0 owi-a-s--- 610,00g
如果我使用lvdisplay
,丢失的卷 vm04-matrix 仍然包含在内,如下所示:
# lvdisplay|grep Path|grep -v swap
LV Path /dev/vg0/root
LV Path /dev/vg0/backup
LV Path /dev/vg0/vm06.docker-disk
LV Path /dev/vg0/vm04.matrix-disk
lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
表明,矩阵盘存在于/dev/dm-25
# cat /etc/lvm/backup/vg0
...
vg0 {
id = "Cfe7Ii-rZBl-mEnH-tk5Z-q9WW-UyTk-3WstVn"
seqno = 29269
format = "lvm2" # informational
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 8192 # 4 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "KlmZUe-3FiK-VbBZ-R962-219A-GGAU-I3a5Nl"
device = "/dev/md1" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 15626736256 # 7,27677 Terabytes
pe_start = 2048
pe_count = 1907560 # 7,27676 Terabytes
}
}
logical_volumes {
...
vm06.docker-disk {
id = "y3CSuy-z4gU-72Bd-678E-sYTi-Lkmi-dwAkgT"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_time = 1584654364 # 2020-03-19 22:46:04 +0100
creation_host = "dom0-eclabs"
segment_count = 3
segment1 {
start_extent = 0
extent_count = 97280 # 380 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 263936
]
}
segment2 {
start_extent = 97280
extent_count = 7680 # 30 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 422912
]
}
segment3 {
start_extent = 104960
extent_count = 51200 # 200 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 1050889
]
}
}
...
vm04.matrix-disk {
id = "Tak3Zq-3dUU-SAJl-Hd5h-weTM-cHMR-qgWXeI"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_time = 1584774051 # 2020-03-21 08:00:51 +0100
creation_host = "dom0-eclabs"
segment_count = 2
segment1 {
start_extent = 0
extent_count = 25600 # 100 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 531968
]
}
segment2 {
start_extent = 25600
extent_count = 7680 # 30 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 1002249
]
}
}
}
}
dmsetup 仍然列出磁盘:
# dmsetup info|grep matrix
Name: vg0-vm04.matrix--disk
但它似乎没有链接到/dev/dm-X:
# for i in /dev/dm-*; do echo $i; dmsetup info $i; done|grep matrix
(这没有显示任何内容)。
我已经pvcreate –restorefile lvm_backup_datei –uuid <uuid> <partition>
在恢复模式下进行了操作,如此处所述并重新启动,但仍然存在同样的问题。
我注意到,在恢复系统中,所有 lvm 分区都在withlsblk
和 under 下/dev/mapper/...
(救援系统使用内核 6.4.7),但在重新启动系统后,再次只有那几个分区可见:
├─sdb2 8:18 0 7,3T 0 part
│ └─md1 9:1 0 7,3T 0 raid1
│ ├─vg0-root 253:0 0 10G 0 lvm /
│ ├─vg0-swap 253:1 0 4G 0 lvm [SWAP]
│ ├─vg0-backup 253:2 0 2T 0 lvm /backup
│ ├─vg0-vm06.docker--swap 253:8 0 8G 0 lvm
│ ├─vg0-vm06.docker--disk-real 253:9 0 610G 0 lvm
│ │ ├─vg0-vm06.docker--disk 253:10 0 610G 0 lvm
│ │ └─vg0-snap--tmp--vm06.docker--disk 253:12 0 610G 0 lvm
│ ├─vg0-snap--tmp--vm06.docker--disk-cow 253:11 0 16G 0 lvm
│ │ └─vg0-snap--tmp--vm06.docker--disk 253:12 0 610G 0 lvm
我设法在救援模式下将丢失的卷安装到备份分区并备份所有需要的数据,这样我就可以创建一个新卷,重新安装并输入备份的数据库
我有 QNAP TS-451。NAS 出现故障,但我很确定驱动器仍然完好。我有一个新的 QNAP TS-462 试图更换它,我想确保我的数据在新系统中完好无损。
无法组RAID时如何访问LVM的内容?
(下面问题的更多细节)
TS -451系统已死,不再启动。它是这样配置的:
TS -462是一个新系统,我想将驱动器 A/B/C/D 迁移到其中。
分离Linux 系统以(理想情况下)非破坏性地从驱动器 A/B/C/D 读取数据:
我尝试将其中一个不重要的驱动器(驱动器 C)移动到新的 TS-462,但 TS-462 似乎无法读取它。据我所知,它似乎对分区表感到困惑(fdisk 报告一件事而 blkid/lsblk 报告不同。
在单独的 Linux 计算机 (Fedora 38) 上,我能够读取 LVM 并将分区挂载到驱动器 C 和 D 上,并确认文件完好无损。
所以我尝试做同样的事情来读取驱动器 B。驱动器 A/B 是 RAID1 镜像的一部分,所以我认为只在其中一个驱动器上进行实验(谨慎)并将另一个作为备份应该没问题。
不幸的是,我似乎无法激活 LVM。以下是我在 Linux 系统上尝试过的一些事情:
# fdisk -l /dev/sdc
Disk /dev/sdc: 18.19 TiB, 20000588955648 bytes, 39063650304 sectors
Disk model: WDC WD201KFGX-68
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: DFC9F3CE-9CFA-4251-8DD1-48BF99476C04
Device Start End Sectors Size Type
/dev/sdc1 40 1060289 1060250 517.7M Microsoft basic data
/dev/sdc2 1060296 2120579 1060284 517.7M Microsoft basic data
/dev/sdc3 2120584 39045853979 39043733396 18.2T Microsoft basic data
/dev/sdc4 39045853984 39046914269 1060286 517.7M Microsoft basic data
/dev/sdc5 39046914272 39063621869 16707598 8G Microsoft basic data
从我从http://www.rodsbooks.com/linux-fs-code/收集的信息来看,这些分区显示为的事实Microsoft basic data
不是问题,只是证明这是在非常旧版本的 Linux/ 上设置的磁盘。(我从 2015 年左右就开始使用 TS-451)。
# gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.9
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sdc: 39063650304 sectors, 18.2 TiB
Model: WDC WD201KFGX-68
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): DFC9F3CE-9CFA-4251-8DD1-48BF99476C04
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 39063650270
Partitions will be aligned on 8-sector boundaries
Total free space is 28423 sectors (13.9 MiB)
Number Start (sector) End (sector) Size Code Name
1 40 1060289 517.7 MiB 0700 primary
2 1060296 2120579 517.7 MiB 0700 primary
3 2120584 39045853979 18.2 TiB 0700 primary
4 39045853984 39046914269 517.7 MiB 0700 primary
5 39046914272 39063621869 8.0 GiB 0700 primary
# cat /proc/mdstat
Personalities :
md123 : inactive sdc5[1](S)
8353780 blocks super 1.0
md124 : inactive sdc4[25](S)
530124 blocks super 1.0
md125 : inactive sdc1[26](S)
530108 blocks super 1.0
md126 : inactive sdc2[1](S)
530124 blocks super 1.0
md127 : inactive sdc3[2](S)
19521865728 blocks super 1.0
unused devices: <none>
# mdadm --assemble --readonly /dev/sdc3
mdadm: device /dev/sdc3 exists but is not an md array.
为什么???:-(
pvdisplay
并且各种 LVM 工具最初并没有发现 LVM。当明确指定分区时:
# pvdisplay /dev/sdc3
Cannot use /dev/sdc3: device is an md component
什么?但是 mdadm 说不是。:-(
# mdadm --examine /dev/sdc3
/dev/sdc3:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x0
Array UUID : 5a6e38ee:eb6bf302:79856803:58887046
Name : 1
Creation Time : Wed Nov 25 03:18:54 2015
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 39043731456 sectors (18.18 TiB 19.99 TB)
Array Size : 19521865728 KiB (18.18 TiB 19.99 TB)
Super Offset : 39043733376 sectors
Unused Space : before=0 sectors, after=1920 sectors
State : active
Device UUID : f2a96ebc:996e4231:1576a39a:8606a71c
Update Time : Sun Mar 26 00:56:13 2023
Checksum : 893841dd - correct
Events : 436627
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
校验和很好。那么这不应该意味着这是一个有效的 RAID 分区吗?(虽然其他分区(甚至交换分区)显示有效的 raid 信息和校验和,所以我不知道那是什么意思。)
让我们尝试不同的路线...
但是,通过设置md_component_detection=0
并/etc/lvm/lvm.conf
执行pvscan --cache --devices /dev/sdc
,我能够获取 LVM 数据...
# pvdisplay /dev/sdc3
--- Physical volume ---
PV Name /dev/sdc3
VG Name vg1
PV Size 18.18 TiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4766080
Free PE 0
Allocated PE 4766080
PV UUID Xt2uVv-PMCy-oHuK-0UAc-43ZI-z7TH-hHAK7A
# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 131
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 18.18 TiB
PE Size 4.00 MiB
Total PE 4766080
Alloc PE / Size 4766080 / 18.18 TiB
Free PE / Size 0 / 0
VG UUID oNdjeV-lPuv-PgPR-J11o-zbHQ-X7az-93sr9J
# lvdisplay vg1
--- Logical volume ---
LV Path /dev/vg1/lv544
LV Name lv544
VG Name vg1
LV UUID z1gyiX-FhGG-cTaM-shPx-wZg4-G1xN-b9fS37
LV Write Access read/write
LV Creation host, time NASEFF3AE, 2015-11-25 03:18:56 -0800
LV Status NOT available
LV Size 144.00 GiB
Current LE 36864
Segments 2
Allocation inherit
Read ahead sectors 8192
--- Segments ---
Logical extents 0 to 5119:
Type linear
Physical volume /dev/sdc3
Physical extents 0 to 5119
Logical extents 5120 to 36863:
Type linear
Physical volume /dev/sdc3
Physical extents 1428360 to 1460103
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID 4lsaNW-E4Bg-g93F-ko0a-Ep1m-wHD0-3Hc3Cb
LV Write Access read/write
LV Creation host, time NASEFF3AE, 2015-11-25 03:19:03 -0800
LV Status NOT available
LV Size 18.04 TiB
Current LE 4729216
Segments 2
Allocation inherit
Read ahead sectors 8192
--- Segments ---
Logical extents 0 to 1423239:
Type linear
Physical volume /dev/sdc3
Physical extents 5120 to 1428359
Logical extents 1423240 to 4729215:
Type linear
Physical volume /dev/sdc3
Physical extents 1460104 to 4766079
是的,所以我应该能够安装驱动器,对吗?
# vgchange -ay vg1
WARNING: PV /dev/sdc3 in VG vg1 is using an old PV header, modify the VG to update.
device-mapper: reload ioctl on (253:3) failed: Device or resource busy
device-mapper: reload ioctl on (253:3) failed: Device or resource busy
0 logical volume(s) in volume group "vg1" now active
嗯...所以也许md_component_detection=0
不是正确的方法?
为了彻底,我测试了最重要的、手术刀和测试盘。这些都是很好的工具,但我觉得对于目前的情况来说有点笨重。磁盘应该非常好且可读......分区和文件系统完好无损。我假设某处只是某种版本不兼容?
我的目标主要是以一种或另一种方式访问我的旧数据(来自驱动器 A/B)。我不介意重新格式化其中一个驱动器并从另一个系统迁移。或者如果我有任何合理的期望能够访问数据,就把它放在 TS-462 中。
在我目前的道路上(沿着实验 2),我被困的地方是弄清楚如何让 Linux 识别 RAID?我想我将尝试frostschutz在从 Linux Raid1 成员磁盘恢复文件中共享的关于写时复制覆盖的出色建议- 尽其所能。
但我愿意接受建议!