提示:關於Linux系統中光盤的掛載,我們了解一下即可,現在已經很少用到了。但是我們可以通過在Linux系統中掛載光盤,來加深對Linux系統中掛載操作的學習。
光盤掛載的前提依然是指定光盤的設備文件名,不同版本的Linux,設備文件名並不相同:
CentOS5.x
以前的系統,光盤設備文件名是/dev/hdc
。CentOS6.x
以后的系統,光盤設備文件名是/dev/sr0
。
不論哪個系統都有軟連接/dev/cdrom
,與可以作為光盤的設備文件名。
如下圖所示:
可以看到/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
,因為很早以前的系統,硬盤和光盤系統是統一命名的,在很早以前認為系統有兩塊硬盤就夠了hda
,hdb
,然后光盤默認識別就是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
文件,放入光驅中。
如下圖:
再次輸入光盤掛載命令。
[root@localhost /]# mount /dev/sr0 /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
還有一行報錯,說/dev/sr0
想要讀寫權限,但是現在被賦予了只讀權限。因為光盤的使用就是一次性寫入,之后就只讀就可以了。所以這行報錯,可以認為是光盤正確掛載的標記。
最后執行mount
命令在確認一下。
步驟四:訪問關盤中的數據
需要去掛載點中訪問光盤的數據,在/mnt/cdrom/
目錄中。
這里邊都是光盤中的內容。
步驟五:卸載掛載點
無論是掛載的光盤還是U盤,用完后就需要卸載掉。如果你沒有卸載就換cd
的話,就會出現問題。這是有一定幾率的,如果你不卸載,多換幾次cd
的話,你會發現你無論放入任何光盤,你讀出來的數據都不是你放入的cd
中的數據。而是虛擬機自帶的工具vmtools
中的內容。之后你即使卸載的光盤,也不在好使了。
這個時候的解決方法是,在虛擬機中把現有的光驅移除,在添加一個新的光驅。
如下圖:
卸載掛載點
# 因為設備文件名和掛載點已經連接到一起,卸載哪一個都可以
[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
目錄又回歸原始位置,就又可以讀取出原來文件中的數據了。
這就是為什么說一定要用空目錄做掛載點,因為有數據的目錄,一旦作為掛載點,原來目錄中的數據是不能查看也不能刪除,占用系統資源,不合理。