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

繁華似錦Fighting發表於2021-11-12

提示:關於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目錄又迴歸原始位置,就又可以讀取出原來檔案中的資料了。

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

相關文章