『學了就忘』Linux基礎命令 — 38、Linux中光盤的掛載

提示:關於Linux系統中光盤的掛載,我們了解一下即可,現在已經很少用到了。但是我們可以通過在Linux系統中掛載光盤,來加深對Linux系統中掛載操作的學習。

光盤掛載的前提依然是指定光盤的設備文件名,不同版本的Linux,設備文件名並不相同:

  • CentOS5.x以前的系統,光盤設備文件名是/dev/hdc
  • CentOS6.x以後的系統,光盤設備文件名是/dev/sr0

不論哪個系統都有軟連接/dev/cdrom,與可以作為光盤的設備文件名。

如下圖所示:

image

可以看到/dev/cdrom就是/dev/sr0的軟鏈接(相當於Windows系統的快捷方式)。推薦使用源文件dev/sr0

Linux系統下在根目錄中默認給我們提供了三個空文件夾:

  • media(推薦掛光盤)
  • misc(推薦掛網絡存儲盤)
  • mnt(推薦掛U盤或者移動硬盤)

我習慣在mnt文件夾中創建空目錄來進行掛載外部設備。下面總結一下掛載光盤的步驟。

步驟一:創建一個空目錄

mnt文件夾中創建一個名稱為cdrom空目錄

[root@localhost /]# mkdir /mnt/cdrom

不建議在根目錄創建過多的一級目錄,不方便管理。

步驟二:找到光盤的設備文件名稱

CentOS6.x以後的系統,光盤設備文件名是/dev/sr0,這是固定的,記住就可以。

CentOS5.x以前的系統,光盤設備文件名是/dev/hdc,因為很早以前的系統,硬盤和光盤系統是統一命名的,在很早以前認為系統有兩塊硬盤就夠了hdahdb,然後光盤默認識別就是hdc。但是對存儲空間的需求越來越大,導致兩塊盤不能滿足需求了,就需要繼續添加新的硬盤,這個時候光盤的設備文件名的識別會自動向後便變動,如有三塊硬盤,光盤的設備文件名hdd

這個時候就會導致,光盤的設備文件就不是固定的了,會導致我在一台電腦上掛載光盤,就先要查詢光盤的設備文件名是什麼,然後在進行掛載。所以在CentOS6.x以後的系統,光盤的設備文件名就固定了為sr0,第一台光驅的設備文件名為sr0,第二台光驅的設備文件名為sr1,以此類推。這樣做的好處是和硬盤的設備文件名就不相干了。

步驟三:掛載光盤

[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/

# 注意:
# -t文件系統:加入文件系統類型來指定掛載的類型,
# 可以ext3、ext4、iso9660等文件系統。
# 掛載光盤就用iso9660類型的文件系統類型。
# 也可以直接省略-t iso9660,
# 掛載光盤時候系統自動添加。

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/

執行上邊命令會報錯,說你必須指定文件系統。如下:

[root@localhost /]# mount /dev/sr0 /mnt/cdrom/
mount: you must specify the filesystem type

我們添加上文件系統,再次執行。如下:

[root@localhost /]# mount -t iso9660  /dev/sr0 /mnt/cdrom/
mount: no medium found on /dev/sr0

這回的報錯信息就準確了,告訴我們說在/dev/sr0中沒有發現光盤。

需要在虛擬機軟件中添加cd文件,放入光驅中。

如下圖:

image

再次輸入光盤掛載命令。

[root@localhost /]# mount /dev/sr0 /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only

還有一行報錯,說/dev/sr0想要讀寫權限,但是現在被賦予了只讀權限。因為光盤的使用就是一次性寫入,之後就只讀就可以了。所以這行報錯,可以認為是光盤正確掛載的標記。

最後執行mount命令在確認一下。

image

步驟四:訪問關盤中的數據

需要去掛載點中訪問光盤的數據,在/mnt/cdrom/目錄中。

image

這裡邊都是光盤中的內容。

步驟五:卸載掛載點

無論是掛載的光盤還是U盤,用完後就需要卸載掉。如果你沒有卸載就換cd的話,就會出現問題。這是有一定幾率的,如果你不卸載,多換幾次cd的話,你會發現你無論放入任何光盤,你讀出來的數據都不是你放入的cd中的數據。而是虛擬機自帶的工具vmtools中的內容。之後你即使卸載的光盤,也不在好使了。

這個時候的解決方法是,在虛擬機中把現有的光驅移除,在添加一個新的光驅。

如下圖:

image

卸載掛載點

# 因為設備文件名和掛載點已經連接到一起,卸載哪一個都可以
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# umount /mnt/cdrom
# 卸載
[root@localhost cdrom]# umount /dev/sr0
umount:/mnt/cdrom: device is busy.
(In some cases useful info about processes that use the device is found by 1sof(8) or fuser(1))

# 上邊報錯說設備正忙,以為此時位置正在光盤裡邊cdrom目錄中,要退出在進行卸載。
# 注意:卸載的時候需要退出光盤目錄,才能正常卸載。

問題:掛載點為什麼要使用空目錄

# 在/mnt/cdrom目錄中創建兩個文件abc,bcd
[root@localhost cdrom]# ls
abc  bcd

# 在/mnt/cdrom目錄上掛載光盤
[root@localhost cdrom] # mount /dev/sr0 /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
# 可以看到看到光盤是可以掛載到有文件的目錄上。

# 查看/mnt/cdrom目錄中的文件
[root@localhost cdrom]# ls /mnt/cdrom/
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
# 文件夾中並沒有之前的abc,bcd文件了。而只有光盤中的數據。

# 把光盤掛載點卸載了
[root@localhost cdrom]# umount /dev/sr0 

# 再次查看/mnt/cdrom目錄中的文件
[root@localhost cdrom]# ls /mnt/cdrom/
abc  bcd
# 發現abc,bcd文件又出現了。

是因為/mnt/cdrom作為目錄的時候,裡邊是一個一個的block來存儲數據。當我把/mnt/cdrom作為一個掛載點的時候,是把這個目錄作為進入另一個分區的介入點(光盤也是一個存儲空間,是一個獨立的空間),所以/mnt/cdrom作為目錄的訪問點就不在了,但是裡邊的數據並沒有刪除,所以/mnt/cdrom掛載點一旦卸載,/mnt/cdrom目錄又回歸原始位置,就又可以讀取出原來文件中的數據了。

這就是為什麼說一定要用空目錄做掛載點,因為有數據的目錄,一旦作為掛載點,原來目錄中的數據是不能查看也不能刪除,佔用系統資源,不合理。