1. 程式人生 > >磁盤掛載與卸載 mount

磁盤掛載與卸載 mount

mount umount

磁盤掛載與卸載

磁盤分區完之後需要格式化,格式化之後需要掛載磁盤。

格式化後的磁盤恰是是一個塊設備文件,類型為b。

(擴展:LINUX中的七種文件類型

d. 目錄文件。

l. 符號鏈接(指向另一個文件,類似於瘟下的快捷方式)。

s. 套接字文件。

b . 塊設備文件,二進制文件

c. 字符設備文件。

p. 命名管道文件。

- . 普通文件,或更準確地說,不屬於以上幾種類型的文件

在掛載某個分區前需要先建立一個掛載點,這個掛載點是以目錄的形式出現的。一旦把某個分區掛載到了這個掛載點(目錄)下,那麽再往這個目錄寫數據時,則會寫到該分區中。需要註意!

在掛載該分區前,掛載點(目錄)下必須是個空目錄。其實目錄不為空並不影響所掛載分區的使用。但是一旦掛載上了,那麽該目錄下以前的東西就看不到了。只有卸載掉該分區後才能看到。

命令mount

  • 單一文件系統不應該被重復掛載在不同的掛載點中

  • 單一目錄不應該重復掛載多個文件系統

  • 作為掛載點的目錄理論上應該都是空目錄

語法:mount [-t vfstype] [-o options] device dir

1.-t vfstype 指定文件系統的類型,通常不必指定。

2.-o options 主要用來描述設備或檔案的掛接方式。

3.device 要掛接(mount)的設備。

4.dir設備在系統上的掛接點(mount point)。

選項:

-a:依照配置文件/etc/fstab 的數據將所有未掛載的磁盤都掛載上來

-l:單純輸入mount會顯示目前掛在信息,加上-l 可增列LABEL名稱

-t:可加上文件系統種類來指定欲掛載的類型

-n:在默認情況下,系統會將實際掛載的情況實時寫人/etc/mtab中,以利其他系統運行,但在某些情況下欲避免問題,會刻意不寫入,此時就要加-n選項。

-L:系統除了可以利用設備文件名之外,還可以利用文件系統的卷標名稱來進行掛載

-o:後面可以接一些掛載時額外加上的參數:

常用的選項有:-a-t-o.

如果不加任何選項,直接運行mount命令,會顯示如下信息:

[[email protected] ~]# mount

/dev/sda3 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

mount命令可以查看當前系統已經掛載的所有分區,以及分區文件系統的類型,掛載點和一些選項等信息。所以如果想知道某個分區的文件系統類型直接用該命令查看即可。

例:

建一個空目錄,然後在目錄裏建一個空白文檔。

[[email protected] ~]# mkdir /newdir

[[email protected] ~]# touch /newdir/newfile.txt

[[email protected] ~]# ls /newdir/newfile.txt

/newdir/newfile.txt

然後把格式化的 /dev/sdb5掛載到 /newdir上。

mount: wrong fs type, bad option, bad superblock on /dev/sdb5,

missing codepage or helper program, or other error

In some cases useful info is found in syslog - try

dmesg | tail or so

不能完成掛載,根據以上掛載錯誤的提示:

[[email protected] ~]# dmesg |tail

Adding 2097144k swap on /dev/sda2. Priority:-1 extents:1 across:2097144k

NET: Registered protocol family 10

lo: Disabled Privacy Extensions

ip6_tables: (C) 2000-2006 Netfilter Core Team

nf_conntrack version 0.5.0 (16100 buckets, 64400 max)

ip_tables: (C) 2000-2006 Netfilter Core Team

eth0: link up

eth0: no IPv6 routers present

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): bad block size 8192

可以看到,我的/dev/sdb5指定的塊值8192不合法,所以只能重新格式化磁盤。

[[email protected] ~]# mke2fs -t ext4 -L TEST /dev/sdb5

使用默認塊值即可。繼續掛載sdb5。

[[email protected] ~]# mount /dev/sdb5 /newdir/

[[email protected] ~]# ls /newdir/

lost+found

[[email protected] ~]# df -h

文件系統 容量 已用 可用 已用% 掛載點

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 7.8G 2.0G 5.5G 27% /

tmpfs 504M 0 504M 0% /dev/shm

/dev/sda1 97M 26M 67M 29% boot

/dev/sdb5 989M 18M 921M 2% /newdir

把/dev/sdb5掛載到/newdir後,原來在/neddir下的newfile.txt被覆蓋了,通過df -h可以看到剛才掛載的分區,我們也可以使用LABEL的方式掛載分區:

[[email protected] ~]# umount /newdir/

[[email protected] ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 7.8G 2.0G 5.5G 27% /

tmpfs 504M 0 504M 0% /dev/shm

/dev/sda1 97M 26M 67M 29% /boot

[[email protected] ~]# mount LABEL=TEST /newdir

[[email protected] ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 7.8G 2.0G 5.5G 27% /

tmpfs 504M 0 504M 0% /dev/shm

/dev/sda1 97M 26M 67M 29% /boot

/dev/sdb5 989M 18M 921M 2% /newdir

日常運維工作中會遇到這樣的情況,一臺服務器上新裝了兩塊磁盤,磁盤a(在服務器上顯示為sdc)和磁盤b(在服務器上顯示為sdd)。又一次把這兩塊磁盤都拔掉了,然後再重新插上,重啟機器,結果磁盤編號調換了。a變成了sdd,b變化才能了sdc(這是應為把磁盤差錯了卡槽)。

通過上面的學習,掛載磁盤是通過/dev/hdb1這樣的分區名字來掛載的,如果先前加入到了/etc/fstab中,結果系統啟動後則會掛載錯分區。

如何避免這種情況發生?這就要用到UUID,可以通過blkid命令獲取各分區的UUID

blkid命令 獲取文件系統類型UUID

在Linux下可以使用blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢

[[email protected] ~]# blkid

/dev/sda1: UUID="37d8fe31-1cd8-4179-9aaa-1ee58284891d" TYPE="ext4"

/dev/sda2: UUID="1ac357d6-a735-468f-ba6c-1eabad6aa0f2" TYPE="swap"

/dev/sda3: UUID="51a8587e-7445-4ea8-85ef-bad6a1336748" TYPE="ext4"

/dev/sdb5: LABEL="TEST" UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" TYPE="ext4"

這樣可以獲得全部磁盤分區的UUID,如果格式化的時候指定了LABLE則該命令也會顯示LABEL值,甚至連文件系統類型也會顯示。當然這個命令後面也可以指定哪個分區:

[[email protected] ~]# blkid /dev/sdb5

/dev/sdb5: LABEL="TEST" UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" TYPE="ext4"

獲得UUID之後的使用方法:

[[email protected] ~]# umount /newdir

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 7.8G 2.0G 5.5G 27% /

tmpfs 504M 0 504M 0% /dev/shm

/dev/sda1 97M 26M 67M 29% /boot

/dev/sdb5 989M 18M 921M 2% /newdir

也可以把下面這行寫到/etc/fstab中

UUID=b45f5443-75e4-4994-8743-4ba7fb25311e /newdir ext4 defa ults 00

如果想讓某個分區開機後就自動掛載,有兩個辦法可以實現:在/etc/fstab中添加一行。如上例中那行;把掛載命令寫到/etc/re.d/rc.local文件中去,我會經常把想要開機啟動的命令加到這個文件中。系統啟動後會執行這個文件中的命令,所以只要想開機後運行什麽命令統統寫入到這個文件下面,直接放到最後面即可,把掛載的命令放在文件最後一行:

[[email protected] ~]# cat /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don‘t

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

[[email protected] ~]# vi /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don‘t

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

~

按esc退出,輸入:wq,保存退出即可

以上兩種方法任選其一。

建議掛載磁盤分區的時候盡量使用UUID或者LABEL這兩種方法。

命令:umount

選項-l,(非常有用,遇到不能卸載的情況用-l)

在上面的例子中,多次用到這個命令。

umount後面可以跟掛載點,也可以跟分區名(/dev/hdb1).

但是不可以跟LABEL和UUID

[[email protected] ~]# umount /dev/sdb5

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# umount /newdir

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 7.8G 2.0G 5.5G 27% /

tmpfs 504M 0 504M 0% /dev/shm

/dev/sda1 97M 26M 67M 29% /boot


本文出自 “12350027” 博客,謝絕轉載!

磁盤掛載與卸載 mount