无法创建文件系统以及无法创建PV时怎么办?
? ? 我們平常對磁盤分區格式化的時候有時無法格式化,報告的信息為:
| 1 | “/dev/sdb3?is?apparently?in?use?by?the?system;?will?not?make?a?filesystem?here!” |
意思是說:似乎系統正在使用該設備,無法創建文件系統。使用【mount】查看系統的所有掛載設備,也沒有:/dev/sdb3.但是,創建文件系統的時候。就是無法在該設備上創建文件系統。
? ? 有時候,我們新創建的分區,使用【kpartx -af DIRVE】或【partx -a DIRVE】通知內核重新識別設備的所有分區。使用【cat /proc/partitions】已經識別到新創建的新區,但是創建PV的時候就報錯:
| 1 | “Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem?” |
意思是:不能打開該設備,已經安裝過文件系統?
? ? 其實,這些都是由底層Device-Mapper的映射信息還存在導致。所以,格式化分區,創建邏輯卷的時候報錯。用戶空間通過【dmsetup】接口可以對內核空間的映射做一些管理。
| 1 2 3 | dmsetup???status??????????顯示系統上活動邏輯設備信息 dmsetup???remove??sdb1????移除邏輯設備 dmsetup???remove_all??????重置所有邏輯設備 |
? ? ?Device mapper 是 Linux 2.6 內核中提供的一種從邏輯設備到物理設備的映射框架機制,在該機制下,用戶可以很方便的根據自己的需要制定實現存儲資源的管理策略,如:鏡像,快照等. 當前比較流行的 Linux 下的邏輯卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(EnterpriseVolume Management System)、dmraid(Device Mapper RaidTool)等都是基于該機制實現的. 只要用戶在用戶空間制定好映射策略,按照自己的需要編寫處理具體IO請求的 target driver插件,就可以很方便的實現這些特性.Device Mapper主要包含內核空間的映射和用戶空間的device mapper庫及dmsetup工具.
當我們遇到格式化分區和創建PV的時候報錯是做如何處理的?
1、創建PV的時候報錯的處理過程:
查看設備/dev/sdb的分區情況,準備好了創建PV的分區:/dev/sdb2
| 1 2 3 4 5 6 7 8 9 10 11 | [root@Node1?~]#?fdisk?-l?/dev/sdb Disk?/dev/sdb:?21.5?GB,?21474836480?bytes 255?heads,?63?sectors/track,?2610?cylinders Units?=?cylinders?of?16065?*?512?=?8225280?bytes Sector?size?(logical/physical):?512?bytes?/?512?bytes I/O?size?(minimum/optimal):?512?bytes?/?512?bytes Disk?identifier:?0x2c06c001 ???Device?Boot??????Start?????????End??????Blocks???Id??System /dev/sdb1???????????????1??????????34??????273073+??83??Linux /dev/sdb2??????????????35?????????296?????2104515???8e??Linux?LVM |
內核要識別到新創建的分區(只有內核可以直接訪問硬件),才可以創建PV。
| 1 2 3 4 5 6 | [root@Node1?~]#?cat?/proc/partitions?|?grep?"sdb[1-9]?" major?minor??#blocks??name ???8???????16???20971520?sdb ???8???????17?????273073?sdb1 ???8???????18????2104515?sdb2 |
內核已經識別了,創建pv
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem? |
說明:
? ? 創建PV失敗。
那么如何,解決設備/dev/sdb2不能創建PV的問題呢?
(1)先:使用【dmsetup】查看系統上邏輯設備的信息。
| 1 2 3 4 5 6 7 | [root@Node1?~]#?dmsetup?status sdb2:?0?4209030?linear??--------->?sdb2?在線 sdb1:?0?546147?linear???--------->?sdb1?在線 vg0-swap:?0?4194304?linear vg0-root:?0?41943040?linear vg0-usr:?0?20971520?linear vg0-var:?0?41943040?linear |
(2)、移除磁盤/dev/sdb 上的所有邏輯設備
移除邏輯設備:sdb2
| 1 | [root@Node1?~]#?dmsetup?remove?sdb2 |
再次創建PV
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem? |
說明:
? ? 創建失敗。
再把邏輯設備:/dev/sdb1移除,再創建PV。就創建成功
| 1 | [root@Node1?~]#?dmsetup?remove?sdb1 |
(3),當移除成功之后,就可以把/dev/sdb2創建成PV了。
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Physical?volume?"/dev/sdb2"?successfully?created |
2、格式化磁盤出現錯誤的處理過程:
查看設備/dev/sdb的分區情況
| 1 2 3 4 5 6 7 8 9 10 11 12 | [root@Node1?~]#?fdisk?-l?/dev/sdb Disk?/dev/sdb:?21.5?GB,?21474836480?bytes 255?heads,?63?sectors/track,?2610?cylinders Units?=?cylinders?of?16065?*?512?=?8225280?bytes Sector?size?(logical/physical):?512?bytes?/?512?bytes I/O?size?(minimum/optimal):?512?bytes?/?512?bytes Disk?identifier:?0x2c06c001 ???Device?Boot??????Start?????????End??????Blocks???Id??System /dev/sdb1???????????????1??????????34??????273073+??83??Linux /dev/sdb2??????????????35????????1340????10490445???8e??Linux?LVM |
把 /dev/sdb2刪除,重新創建分區/dev/sdb2.
| 1 2 3 4 5 6 7 8 9 10 11 12 | [root@Node1?~]#?fdisk??-l?/dev/sdb Disk?/dev/sdb:?21.5?GB,?21474836480?bytes 255?heads,?63?sectors/track,?2610?cylinders Units?=?cylinders?of?16065?*?512?=?8225280?bytes Sector?size?(logical/physical):?512?bytes?/?512?bytes I/O?size?(minimum/optimal):?512?bytes?/?512?bytes Disk?identifier:?0x2c06c001 ???Device?Boot??????Start?????????End??????Blocks???Id??System /dev/sdb1???????????????1??????????34??????273073+??83??Linux /dev/sdb2??????????????35????????1079?????8393962+??83??Linux |
通知內核識別新設備,也就是重新讀取指定設備的分區表。
| 1 2 3 | [root@Node1?~]#?kpartx?-af?/dev/sdb device-mapper:?reload?ioctl?on?sdb1?failed:?Invalid?argument create/reload?failed?on?sdb1 |
查看內核是否識別了,剛才創建的分區/dev/sdb2?
| 1 2 3 4 5 6 7 8 9 10 | [root@Node1?~]#?cat?/proc/partitions? major?minor??#blocks??name ???8????????0???83886080?sda ???8????????1?????204800?sda1 ???8????????2???62914560?sda2 ???8????????3????2103516?sda3 ???8???????16???20971520?sdb ???8???????17?????273073?sdb1 ???8???????18???10490445?sdb2 |
說明:從上顯示結果可以看出。內核還是沒有識別新創建的/dev/sdb2 。還是原來的LVM。PV /dev/sdb2
如何解決,通知內核重讀,也無法在新的邏輯設備創建文件系統?
(1)、查看邏輯設備的狀態
| 1 2 3 4 5 6 | [root@Node1?~]#?dmsetup?status myvg-root:?0?8388608?linear???---->?卷組?myvg?下的邏輯卷root在線。 vg0-swap:?0?4194304?linear vg0-root:?0?41943040?linear vg0-usr:?0?20971520?linear vg0-var:?0?41943040?linear |
(2)、使用【dmsetup】移除邏輯卷 /dev/myvg/root
| 1 2 | [root@Node1?~]#?dmsetup?remove?/dev/myvg/root 查看系統中的邏輯卷的狀態,myvg-root?邏輯設備移除成功 |
| 1 2 3 4 5 | [root@Node1?~]#?dmsetup?status vg0-swap:?0?4194304?linear vg0-root:?0?41943040?linear vg0-usr:?0?20971520?linear vg0-var:?0?41943040?linear |
(3)、重新通知內核識別剛才的磁盤分區
| 1 2 3 | [root@Node1?~]#?kpartx?-af?/dev/sdb [root@Node1?~]#?$? 0 |
說明:
? ? 內核已經識別成功。
(4)、嘗試在新建分區/dev/sdb2 創建文件系統
| 1 2 3 | [root@Node1?~]#?mke2fs?-t?ext4?/dev/sdb2 mke2fs?1.41.12?(17-May-2010) /dev/sdb2?is?apparently?in?use?by?the?system;?will?not?make?a?filesystem?here! |
說明:
? ? /dev/sdb2 設備系統正在使用,沒法創建文件系統
(5)、查看系統中所有邏輯設備的狀態
| 1 2 3 4 5 6 7 | [root@Node1?~]#?dmsetup?status sdb2:?0?16787925?linear sdb1:?0?546147?linear vg0-swap:?0?4194304?linear vg0-root:?0?41943040?linear vg0-usr:?0?20971520?linear vg0-var:?0?41943040?linear |
(6)移除在線邏輯設備:sdb1、sdb2
| 1 2 | [root@Node1?~]#?dmsetup?remove??sdb1 [root@Node1?~]#?dmsetup?remove??sdb2 |
(7)、再查看邏輯設備的狀態
| 1 2 3 4 5 | [root@Node1?~]#?dmsetup?status vg0-swap:?0?4194304?linear vg0-root:?0?41943040?linear vg0-usr:?0?20971520?linear vg0-var:?0?41943040?linear |
(8)、再格式化磁盤/dev/sdb2
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@Node1?~]#?mke2fs?-t?ext4?/dev/sdb2 mke2fs?1.41.12?(17-May-2010) Filesystem?label= OS?type:?Linux Block?size=4096?(log=2) Fragment?size=4096?(log=2) Stride=0?blocks,?Stripe?width=0?blocks 655776?inodes,?2622611?blocks 131130?blocks?(5.00%)?reserved?for?the?super?user First?data?block=0 Maximum?filesystem?blocks=2688548864 81?block?groups 32768?blocks?per?group,?32768?fragments?per?group 8096?inodes?per?group Superblock?backups?stored?on?blocks: ????????32768,?98304,?163840,?229376,?294912,?819200,?884736,?1605632 Writing?inode?tables:?done Creating?journal?(32768?blocks):?done Writing?superblocks?and?filesystem?accounting?information:?done This?filesystem?will?be?automatically?checked?every?32?mounts?or 180?days,?whichever?comes?first.??Use?tune2fs?-c?or?-i?to?override. |
(9)、格式化/dev/sdb2設備成功。
| 1 2 | [root@Node1?~]#?echo?$? 0 |
總結:
? ?如果分區格式磁盤和創建PV等操作邏輯設備的時候,如果失敗的話。設備沒有掛載使用的情況下。先使用【dmsetup status】查看邏輯設備的狀態。如果有被操作的邏輯設備在線的話,就使用【dmsetup remove DEVICE】移除掉。再操作邏輯設備,一般不是有問題了。
? ? ?本文轉自成長的小蟲 51CTO博客,原文鏈接:http://blog.51cto.com/9528du/1444987,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的无法创建文件系统以及无法创建PV时怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 备份与恢复学习笔记(6_1
- 下一篇: 使用Docker搭建WordPress博