无法创建文件系统以及无法创建PV时怎么办?
? ? 我們平常對磁盤分區(qū)格式化的時候有時無法格式化,報告的信息為:
| 1 | “/dev/sdb3?is?apparently?in?use?by?the?system;?will?not?make?a?filesystem?here!” |
意思是說:似乎系統(tǒng)正在使用該設(shè)備,無法創(chuàng)建文件系統(tǒng)。使用【mount】查看系統(tǒng)的所有掛載設(shè)備,也沒有:/dev/sdb3.但是,創(chuàng)建文件系統(tǒng)的時候。就是無法在該設(shè)備上創(chuàng)建文件系統(tǒng)。
? ? 有時候,我們新創(chuàng)建的分區(qū),使用【kpartx -af DIRVE】或【partx -a DIRVE】通知內(nèi)核重新識別設(shè)備的所有分區(qū)。使用【cat /proc/partitions】已經(jīng)識別到新創(chuàng)建的新區(qū),但是創(chuàng)建PV的時候就報錯:
| 1 | “Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem?” |
意思是:不能打開該設(shè)備,已經(jīng)安裝過文件系統(tǒng)?
? ? 其實,這些都是由底層Device-Mapper的映射信息還存在導(dǎo)致。所以,格式化分區(qū),創(chuàng)建邏輯卷的時候報錯。用戶空間通過【dmsetup】接口可以對內(nèi)核空間的映射做一些管理。
| 1 2 3 | dmsetup???status??????????顯示系統(tǒng)上活動邏輯設(shè)備信息 dmsetup???remove??sdb1????移除邏輯設(shè)備 dmsetup???remove_all??????重置所有邏輯設(shè)備 |
? ? ?Device mapper 是 Linux 2.6 內(nèi)核中提供的一種從邏輯設(shè)備到物理設(shè)備的映射框架機制,在該機制下,用戶可以很方便的根據(jù)自己的需要制定實現(xiàn)存儲資源的管理策略,如:鏡像,快照等. 當前比較流行的 Linux 下的邏輯卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(EnterpriseVolume Management System)、dmraid(Device Mapper RaidTool)等都是基于該機制實現(xiàn)的. 只要用戶在用戶空間制定好映射策略,按照自己的需要編寫處理具體IO請求的 target driver插件,就可以很方便的實現(xiàn)這些特性.Device Mapper主要包含內(nèi)核空間的映射和用戶空間的device mapper庫及dmsetup工具.
當我們遇到格式化分區(qū)和創(chuàng)建PV的時候報錯是做如何處理的?
1、創(chuàng)建PV的時候報錯的處理過程:
查看設(shè)備/dev/sdb的分區(qū)情況,準備好了創(chuàng)建PV的分區(qū):/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 |
內(nèi)核要識別到新創(chuàng)建的分區(qū)(只有內(nèi)核可以直接訪問硬件),才可以創(chuàng)建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 |
內(nèi)核已經(jīng)識別了,創(chuàng)建pv
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem? |
說明:
? ? 創(chuàng)建PV失敗。
那么如何,解決設(shè)備/dev/sdb2不能創(chuàng)建PV的問題呢?
(1)先:使用【dmsetup】查看系統(tǒng)上邏輯設(shè)備的信息。
| 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 上的所有邏輯設(shè)備
移除邏輯設(shè)備:sdb2
| 1 | [root@Node1?~]#?dmsetup?remove?sdb2 |
再次創(chuàng)建PV
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Can't?open?/dev/sdb2?exclusively.??Mounted?filesystem? |
說明:
? ? 創(chuàng)建失敗。
再把邏輯設(shè)備:/dev/sdb1移除,再創(chuàng)建PV。就創(chuàng)建成功
| 1 | [root@Node1?~]#?dmsetup?remove?sdb1 |
(3),當移除成功之后,就可以把/dev/sdb2創(chuàng)建成PV了。
| 1 2 | [root@Node1?~]#?pvcreate?/dev/sdb2 ??Physical?volume?"/dev/sdb2"?successfully?created |
2、格式化磁盤出現(xiàn)錯誤的處理過程:
查看設(shè)備/dev/sdb的分區(qū)情況
| 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刪除,重新創(chuàng)建分區(qū)/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 |
通知內(nèi)核識別新設(shè)備,也就是重新讀取指定設(shè)備的分區(qū)表。
| 1 2 3 | [root@Node1?~]#?kpartx?-af?/dev/sdb device-mapper:?reload?ioctl?on?sdb1?failed:?Invalid?argument create/reload?failed?on?sdb1 |
查看內(nèi)核是否識別了,剛才創(chuàng)建的分區(qū)/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 |
說明:從上顯示結(jié)果可以看出。內(nèi)核還是沒有識別新創(chuàng)建的/dev/sdb2 。還是原來的LVM。PV /dev/sdb2
如何解決,通知內(nèi)核重讀,也無法在新的邏輯設(shè)備創(chuàng)建文件系統(tǒng)?
(1)、查看邏輯設(shè)備的狀態(tài)
| 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 查看系統(tǒng)中的邏輯卷的狀態(tài),myvg-root?邏輯設(shè)備移除成功 |
| 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)、重新通知內(nèi)核識別剛才的磁盤分區(qū)
| 1 2 3 | [root@Node1?~]#?kpartx?-af?/dev/sdb [root@Node1?~]#?$? 0 |
說明:
? ? 內(nèi)核已經(jīng)識別成功。
(4)、嘗試在新建分區(qū)/dev/sdb2 創(chuàng)建文件系統(tǒng)
| 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 設(shè)備系統(tǒng)正在使用,沒法創(chuàng)建文件系統(tǒng)
(5)、查看系統(tǒng)中所有邏輯設(shè)備的狀態(tài)
| 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)移除在線邏輯設(shè)備:sdb1、sdb2
| 1 2 | [root@Node1?~]#?dmsetup?remove??sdb1 [root@Node1?~]#?dmsetup?remove??sdb2 |
(7)、再查看邏輯設(shè)備的狀態(tài)
| 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設(shè)備成功。
| 1 2 | [root@Node1?~]#?echo?$? 0 |
總結(jié):
? ?如果分區(qū)格式磁盤和創(chuàng)建PV等操作邏輯設(shè)備的時候,如果失敗的話。設(shè)備沒有掛載使用的情況下。先使用【dmsetup status】查看邏輯設(shè)備的狀態(tài)。如果有被操作的邏輯設(shè)備在線的話,就使用【dmsetup remove DEVICE】移除掉。再操作邏輯設(shè)備,一般不是有問題了。
? ? ?本文轉(zhuǎn)自成長的小蟲 51CTO博客,原文鏈接:http://blog.51cto.com/9528du/1444987,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的无法创建文件系统以及无法创建PV时怎么办?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 备份与恢复学习笔记(6_1
- 下一篇: Windows Server 2012正