今天在做環境中一台機器磁盤擴容過程中出現此報錯,第一次遇到,說一下情況:
1、我的機器中原本有一個LV 500G,作為nova節點的存儲空間,空間不夠,想擴容1T,浪潮服務器,加入兩塊1T磁盤,跟之前兩個600G盤一樣,做RAID1;(注:此動作需要重啟服務器,要做追加,把新加的盤做raid,否則會對之前數據產生不利影響)
2、加入之后開機,發現sdb,執行fdisk,保存退出:
3、此時 fdisk -l 或lsblk 發現sdb1,執行partprobe,重新發現分區表;
4、做pv:執行pvcreate,然后報錯Device /dev/sdb not found (or ignored by filtering)。
百度此報錯,說法一:“這是由於掛了盤卻沒有格式化”,
親測掛一塊裸盤分區后不格式化,依舊能夠執行pvcreate /dev/sdb1命令,可見這種說法並不能解決,在格式化之前執行pvcreate 命令並不會有問題(Centos7)。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# fdisk /dev/sdb 分區轉換8e之后
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
└─sdb1 8:17 0 30G 0 part
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
百度報錯說法二:執行以下步驟可以解決。
實驗后發現,這個也無法解決。
先執行:
1 # dd if=/dev/urandom of=/dev/sdb bs=512 count=64
后再次執行
1 # pvcreate /dev/sdb
dd if=/dev/urandom是提供永不為空的隨機字節數據流,以上命令是把/dev/sdb覆蓋分區塊,也就是擦除分區,然並卵。
[root@localhost ~]# dd if=/dev/urandom of=/dev/sdb bs=512 count=64
記錄了64+0 的讀入
記錄了64+0 的寫出
32768字節(33 kB)已復制,0.015772 秒,2.1 MB/秒
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
sr0 11:0 1 1024M 0 rom
百度說法三:按照錯誤說法,既然已經找到了/dev/sdb1,那肯定就是括號中的原因: ignored by filtering,實驗發現確實如此。
解決方案:
(1)找到lvm配置文件:vim /etc/lvm/lvm.conf,搜索找到devices字段中filter
devices {
# Configuration option devices/dir.
# Directory in which to create volume group device nodes.
# Commands also accept this as a prefix on volume group names.
# This configuration option is advanced.
dir = "/dev"
# Configuration option devices/scan.
# Directories containing device nodes to use with LVM.
# This configuration option is advanced.
scan = [ "/dev" ]
。。。。。。。。。。。。。。。。。。。。。。。
# Accept every block device:
# filter = [ "a|.*/|" ]
# Reject the cdrom drive:
# filter = [ "r|/dev/cdrom|" ]
# Work with just loopback devices, e.g. for testing:
# filter = [ "a|loop|", "r|.*|" ]
# Accept all loop devices and ide drives except hdc:
# filter = [ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
# Use anchors to be very specific:
# filter = [ "a|^/dev/hda8$|", "r|.*/|" ]
#
# This configuration option has an automatic default value.
# filter = [ "a|.*/|" ]
# Configuration option devices/global_filter.
# Limit the block devices that are used by LVM system components.
# Because devices/filter may be overridden from the command line, it is
# not suitable for system-wide device filtering, e.g. udev and lvmetad.
# Use global_filter to hide devices from these LVM system components.
# The syntax is the same as devices/filter. Devices rejected by
# global_filter are not opened by LVM.
# This configuration option has an automatic default value.
global_filter = [ "a|/dev/sda7|", "r|.*/|" ]
找到global_filter一行發現,此filter允許(a)/dev/sda7,拒絕(r)其他所有此目錄下名稱(如上,此目錄為dir=/dev下),
bingo,問題就出在這里,/dev/sdb/在這里被過濾掉了,因此不搜索。
解決之道就出來了,在此行【】中添加:“a|sdb1|”,注意不能用/dev/sdb1,因為/dev/已經有了,就是上面說的dir=/dev/。
之后再執行pvcreate命令,通過,問題解決。
---------------------
版權聲明:本文為CSDN博主「sdu_king」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/sdu_king/article/details/74933121