zoukankan      html  css  js  c++  java
  • Cen0S下挂载设备

    在CentOS中,如果我们要查看光驱,U盘或者要把安装包挂载到某个文件夹,我写下我的一些理解。

    所谓的挂载,就是把物理设备或者文件(包含安装文件,压缩包等等),与系统中的某个目录建立一个快捷方式,然后通过这个快捷方式我们对挂载后的对象进行操作

    一 挂载光驱 U盘
    [sifan@localhost 桌面]$ ls -l /dev|grep cdrom
    lrwxrwxrwx. 1 root root           3 Jan  6 04:34 cdrom -> sr0  ---->光驱的名字叫:cdrom
    crw-rw----. 1 root cdrom    21,   1 Jan  6 04:34 sg1
    brw-rw----+ 1 root cdrom    11,   0 Jan  6 04:34 sr0

    脑补一下:

    因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。 如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。

    有鑑於上述的說明,因此FHS定義出根目錄(/)底下應該要有底下這些次目錄的存在才好,即使沒有實體目錄,FHS也希望至少有連結檔存在才好:

    目錄 應放置檔案內容
    第一部份:FHS 要求必須要存在的目錄
    /bin 系統有很多放置執行檔的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin底下的指令可以被root與一般帳號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
    /boot 這個目錄主要在放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機所需設定檔等等。 Linux kernel常用的檔名為:vmlinuz,如果使用的是grub2這個開機管理程式, 則還會存在/boot/grub2/這個目錄喔!
    /dev 在Linux系統上,任何裝置與周邊設備都是以檔案的型態存在於這個目錄當中的。 你只要透過存取這個目錄底下的某個檔案,就等於存取某個裝置囉~ 比要重要的檔案有/dev/null, /dev/zero, /dev/tty, /dev/loop*, /dev/sd*等等
    /etc 系統主要的設定檔幾乎都放置在這個目錄內,例如人員的帳號密碼檔、 各種服務的啟始檔等等。一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。FHS建議不要放置可執行檔(binary)在這個目錄中喔。比較重要的檔案有: /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue 等等。另外 FHS 還規範幾個重要的目錄最好要存在 /etc/ 目錄下喔:
    • /etc/opt(必要):這個目錄在放置第三方協力軟體 /opt 的相關設定檔
    • /etc/X11/(建議):與 X Window 有關的各種設定檔都在這裡,尤其是 xorg.conf 這個 X Server 的設定檔。
    • /etc/sgml/(建議):與 SGML 格式有關的各項設定檔
    • /etc/xml/(建議):與 XML 格式有關的各項設定檔
    /lib 系統的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫而已。 什麼是函式庫呢?妳可以將他想成是『外掛』,某些指令必須要有這些『外掛』才能夠順利完成程式的執行之意。 另外 FHS 還要求底下的目錄必須要存在:
    • /lib/modules/:這個目錄主要放置可抽換式的核心相關模組(驅動程式)喔!
    /media media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦! 包括軟碟、光碟、DVD等等裝置都暫時掛載於此。常見的檔名有:/media/floppy, /media/cdrom等等。
    /mnt 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之後,這個目錄就用來暫時掛載用了。
    /opt 這個是給第三方協力軟體放置的目錄。什麼是第三方協力軟體啊? 舉例來說,KDE這個桌面管理系統是一個獨立的計畫,不過他可以安裝到Linux系統中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裡來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下呢!
    /run 早期的 FHS 規定系統開機後所產生的各項資訊應該要放置到 /var/run 目錄下,新版的 FHS 則規範到 /run 底下。 由於 /run 可以使用記憶體來模擬,因此效能上會好很多!
    /sbin Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多只能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。 至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, mkfs等等。
    /srv srv可以視為『service』的縮寫,是一些網路服務啟動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裡面。 不過,系統的服務資料如果尚未要提供給網際網路任何人瀏覽的話,預設還是建議放置到 /var/lib 底下即可。
    /tmp 這是讓一般使用者或者是正在執行的程序暫時放置檔案的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄啊! 因為FHS甚至建議在開機時,應該要將/tmp下的資料都刪除唷!
    /usr 第二層 FHS 設定,後續介紹
    /var 第二曾 FHS 設定,主要為放置變動性的資料,後續介紹
    第二部份:FHS 建議可以存在的目錄
    /home 這是系統預設的使用者家目錄(home directory)。在你新增一個一般使用者帳號時, 預設的使用者家目錄都會規範到這裡來。比較重要的是,家目錄有兩種代號喔:
    • ~:代表目前這個使用者的家目錄
    • ~dmtsai :則代表 dmtsai 的家目錄!
    /lib<qual> 用來存放與 /lib 不同的格式的二進位函式庫,例如支援 64 位元的 /lib64 函式庫等
    /root 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。

    事實上FHS針對根目錄所定義的標準就僅有上面的咚咚,不過我們的Linux底下還有許多目錄你也需要瞭解一下的。 底下是幾個在Linux當中也是非常重要的目錄喔:

    目錄 應放置檔案內容
    /lost+found 這個目錄是使用標準的ext2/ext3/ext4檔案系統格式才會產生的一個目錄,目的在於當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 檔案系統的話,就不會存在這個目錄了!
    /proc 這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』喔!他放置的資料都是在記憶體當中, 例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態等等。因為這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
    /sys 這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄核心與系統硬體資訊較相關的資訊。 包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。這個目錄同樣不佔硬碟容量喔!

    早期 Linux 在設計的時候,若發生問題時,救援模式通常僅掛載根目錄而已,因此有五個重要的目錄被要求一定要與根目錄放置在一起, 那就是 /etc, /bin, /dev, /lib, /sbin 這五個重要目錄。現在許多的 Linux distributions 由於已經將許多非必要的檔案移出 /usr 之外了, 所以 /usr 也是越來越精簡,同時因為 /usr 被建議為『即使掛載成為唯讀,系統還是可以正常運作』的模樣,所以救援模式也能同時掛載 /usr 喔! 例如我們的這個 CentOS 7.x 版本在救援模式的情況下就是這樣。因此那個五大目錄的限制已經被打破了呦!例如 CentOS 7.x 就已經將 /sbin, /bin, /lib 通通移動到 /usr 底下了哩!

    好了,談完了根目錄,接下來我們就來談談/usr以及/var囉!先看/usr裡面有些什麼東西:

    • /usr 的意義與內容:

    依據FHS的基本定義,/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static), 如果你知道如何透過網路進行分割槽的掛載(例如在伺服器篇會談到的NFS伺服器),那麼/usr確實可以分享給區域網路內的其他主機來使用喔!

    很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦!這點要注意。 FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。

    因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:Windows (當中的一部份) + C:Program files』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。一般來說,/usr的次目錄建議有底下這些:

    目錄 應放置檔案內容
    第一部份:FHS 要求必須要存在的目錄
    /usr/bin/ 所有一般用戶能夠使用的指令都放在這裡!目前新的 CentOS 7 已經將全部的使用者指令放置於此,而使用連結檔的方式將 /bin 連結至此! 也就是說, /usr/bin 與 /bin 是一模一樣了!另外,FHS 要求在此目錄下不應該有子目錄!
    /usr/lib/ 基本上,與 /lib 功能相同,所以 /lib 就是連結到此目錄中的!
    /usr/local/ 系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄, 這樣會比較便於管理。舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔!
    /usr/sbin/ 非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉!不過基本功能與 /sbin 也差不多, 因此目前 /sbin 就是連結到此目錄中的。
    /usr/share/ 主要放置唯讀架構的資料檔案,當然也包括共享文件。在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文字檔案嘛!在此目錄下常見的還有這些次目錄:
    • /usr/share/man:線上說明文件
    • /usr/share/doc:軟體雜項的文件說明
    • /usr/share/zoneinfo:與時區有關的時區檔案
    第二部份:FHS 建議可以存在的目錄
    /usr/games/ 與遊戲比較相關的資料放置處
    /usr/include/ c/c++等程式語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔喔!
    /usr/libexec/ 某些不被一般使用者慣用的執行檔或腳本(script)等等,都會放置在此目錄中。例如大部分的 X 視窗底下的操作指令, 很多都是放在此目錄下的。
    /usr/lib<qual>/ 與 /lib<qual>/功能相同,因此目前 /lib<qual> 就是連結到此目錄中
    /usr/src/ 一般原始碼建議放置到這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。
    • /var 的意義與內容:

    如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。 因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有:

    目錄 應放置檔案內容
    第一部份:FHS 要求必須要存在的目錄
    /var/cache/ 應用程式本身運作過程中會產生的一些暫存檔;
    /var/lib/ 程式本身執行的過程中,需要使用到的資料檔案放置的目錄。在此目錄下各自的軟體應該要有各自的目錄。 舉例來說,MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm去!
    /var/lock/ 某些裝置或者是檔案資源一次只能被一個應用程式所使用,如果同時有兩個程式使用該裝置時, 就可能產生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟體所使用。 舉例來說,燒錄機正在燒錄一塊光碟,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的資料?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用囉。目前此目錄也已經挪到 /run/lock 中!
    /var/log/ 重要到不行!這是登錄檔放置的目錄!裡面比較重要的檔案如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。
    /var/mail/ 放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為連結檔啦!
    /var/run/ 某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下喔!至於PID的意義我們會在後續章節提到的。 與 /run 相同,這個目錄連結到 /run 去了!
    /var/spool/ 這個目錄通常放置一些佇列資料,所謂的『佇列』就是排隊等待其他程式使用的資料啦! 這些資料被使用後通常都會被刪除。舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中!

    建議在你讀完整個基礎篇之後,可以挑戰FHS官方英文文件(參考本章參考資料),相信會讓你對於Linux作業系統的目錄有更深入的瞭解喔!

    • 針對FHS,各家distributions的異同,與 CentOS7 的變化

    由於FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案或目錄資料, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-scripts/ 目錄下,但是SuSE則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦!

    此外,CentOS 7 在目錄的編排上與過去的版本不同喔!本節稍早之前已經有介紹過,這裡做個彙整。 比較大的差異在於將許多原本應該要在根目錄 (/) 裡面的目錄,將他內部資料全部挪到 /usr 裡面去,然後進行連結設定!包括底下這些:

    • /bin --> /usr/bin
    • /sbin --> /usr/sbin
    • /lib --> /usr/lib
    • /lib64 --> /usr/lib64
    • /var/lock --> /run/lock
    • /var/run --> /run
    • 檔案的類型與權限之內容

    第一個字元代表這個檔案是『目錄、檔案或連結檔等等』:

      • 當為[ d ]則是目錄,例如上表檔名為『.config』的那一行;
      • 當為[ - ]則是檔案,例如上表檔名為『initial-setup-ks.cfg』那一行;
      • 若是[ l ]則表示為連結檔(link file);
      • 若是[ b ]則表示為裝置檔裡面的可供儲存的周邊設備(可隨機存取裝置);
      • 若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠(一次性讀取裝置)。

    注:这段是Cp自鸟哥的私房菜 

    [sifan@localhost 桌面]$ ls -l /dev|grep cdrom
    lrwxrwxrwx. 1 root root           3 Jan  6 04:34 cdrom -> sr0
    crw-rw----. 1 root cdrom    21,   1 Jan  6 04:34 sg1
    brw-rw----+ 1 root cdrom    11,   0 Jan  6 04:34 sr0
    再来看,这个命令后显示的内容:好了,我们明白了,cdrom是一个对sr0的联接档名

    [root@localhost dev]# mount /dev/sr0 /mnt/sr0
    mount: mount point /mnt/sr0 does not exist
    [root@localhost dev]# mount /dev/sr0 /mnt/
    mount: block device /dev/sr0 is write-protected, mounting read-only
    [root@localhost dev]# mount -t ext3  /dev/sr0 /mnt/
    mount: block device /dev/sr0 is write-protected, mounting read-only
    mount: /dev/sr0 already mounted or /mnt/ busy
    mount: according to mtab, /dev/sr0 is already mounted on /mnt
    我一定要试一试,确实如此啊同学,sr0才是真正的光驱,为了证实我的理解。我们这次先移除挂载,再来一次挂载看是否成功。

    [root@localhost mnt]# umount /mnt  ---》这句执行的时候,我发现我的/mnt目录没有哦,悲剧。。。
    umount: /mnt: device is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    [root@localhost mnt]# eject
    ^[[A^[[A[root@localho

    [root@localhost /]# mkdir mnt
    [root@localhost /]# cd mnt
    [root@localhost mnt]# mkdir cdrom
    [root@localhost mnt]# cd /
    [root@localhost /]# mount -t ext3 /dev/sr0 /mnt/cdrom
    mount: block device /dev/sr0 is write-protected, mounting read-only
    mount: wrong fs type, bad option, bad superblock on /dev/sr0,
           missing codepage or helper program, or other error
           In some cases useful info is found in syslog - try
           dmesg | tail  or so
    成功了,感谢度娘的同时,也要知道所以然。

  • 相关阅读:
    优先队列
    Problem W UVA 662 二十三 Fast Food
    UVA 607 二十二 Scheduling Lectures
    UVA 590 二十一 Always on the run
    UVA 442 二十 Matrix Chain Multiplication
    UVA 437 十九 The Tower of Babylon
    UVA 10254 十八 The Priest Mathematician
    UVA 10453 十七 Make Palindrome
    UVA 10163 十六 Storage Keepers
    UVA 1252 十五 Twenty Questions
  • 原文地址:https://www.cnblogs.com/freewsf/p/6254485.html
Copyright © 2011-2022 走看看