Linux 操作不求人系列 - 參章之參 - 系統管理(III) - 新增各式磁碟機

@ Driving External Hard Disk or Flash Disk
      一般來說,我們時常會在 Linux 工作站,用到外接硬碟、隨身碟的拔插,來交換資料使用,以及為了保持 24 小時的不關機,通常會裝設 UPS 來防止斷電並監控之,故筆者就先來說明這些常用的磁碟掛載與卸載方式。首先,要掛載外接硬碟或是隨身碟,要先考慮要使用著檔案系統格式,一般在CentOS6_x64下,核心預設只支援 ext ,vfat (fat系列,https://en.wikipedia.org/wiki/File_Allocation_Table),btrfs,xfs 等檔案系統,若我們要使用 Microsoft 的 NTFS 格式,與現今隨身碟與記憶卡所普遍使用的 exfat 格式,則需先下載套件(RPM,https://en.wikipedia.org/wiki/RPM_Package_Manager)來擴充,至於 CentOS_x64 可以用來擴充的套件庫,可以從CentOS網站得知 https://wiki.centos.org/AdditionalResources/Repositories。如常用的 EPEL (https://fedoraproject.org/wiki/EPEL),而套件下載的方式,分為直接利用指令 yum 下載 ,或是從筆者常用的網站 RPM search(http://rpm.pbone.net/)或 RPM find(http://www.rpmfind.net)下載,再利用指令 rpm -ivh 來安裝。
     首先我們先來說明,下載可讀寫 Microsoft 的 NTFS 格式的套件,ntfs-3g。我們先轉為 root 帳號,並執行指令 yum repolist 來看預設的 Repository 資料庫有哪些(圖3-25)。


































(圖3-25)

    圖3-25第1個指令為利用指令 yum repolist,來列出現有的套件庫,與其中包含的套件數目,如黃框處。第2個指令為利用指令 yum install epel-release-6  /* install 後方接上要安裝套件的關鍵字或全名,來安裝 CentOS6 版的套件庫 */ ,指令 yum 的詳細參數,讀者可參考 man yum。再來看到它搜尋到相關的套件後,若確認要安裝,則按下鍵盤 y 鍵再按鍵盤 Enter 鍵,接著會有 Importing GPG Key 的訊息(https://www.centos.org/keys/,GPG設計目的為何,可參考https://en.wikipedia.org/wiki/GNU_Privacy_Guard ),一樣按下 y 鍵再 Enter鍵 ( 就頭都抹洗髮精了,可以不沖水嗎?若讀者懶得確認,往後可在 yum 後面加上 -y 參數即可 )(圖3-26),即可開始下載並安裝。安裝完後,使用指令 yum repolist 查詢會出現如圖3-27畫面,可看到黃框處,顯示已經裝上了 epel repository。
     使用 yum 的好處,就是它會檢查有相依性的套件(Dependency),而幫您找齊,再安裝入系統內,但也並非每次都很完整,有時候不同 Repository 套件間的相依性,也會有互相不相容的情形發生,故有些高手高手高高手,就覺得 Debian Linux 系列的 apt 是比較優良的套件安裝模組。但筆者自身認為,習慣就好,User eXperience (UX) 很重要,畢竟智慧就是經驗的累積。除此之外,若我們要移除套件,則使用 yum remove ,更新套件則換成  yum update。還可以利用指令 yum --disablerepo=* --enablerepo=epel install ,來暫時僅安裝使用 epel 套件資料庫的套件。還有其他參數與用法,有興趣的讀者請自行 man yum




















(圖3-26)




















(圖3-27)

    緊接著要安裝 ntfs-3g 模組,我們使用指令 yum install ntfs-3g ntfsprogs,來下載所有相關檔案,如圖3-28,接著按下鍵盤 y 鍵,與再一次的GPG安裝確認,再按下鍵盤 y 鍵,及安裝完成(圖3-29)。
































(圖3-28)

















(圖3-29)

    一般來說 ntfs-3g.x86_64 套件,為包含磁碟格式的讀寫驅動程式與說明文件,ntfsprogs.x86_64為搭配ntfs檔案格式的工具程式,可能用來掃描磁碟狀況或是簡易的修復磁碟與檔案結構,如同 MS Windows 下的 chkdsk 程式。這時,我們可以利用指令 which ntfs-3g,可知 ntfs-3g 指令置於 /bin/ntfs-3g,再利用 ls -l /bin/ntfs* (圖3-30),來看看有那些跟 ntfs 有關的工具程式。除此之外,讀者亦可以利用指令 updatedb 先建立系統內所有檔案的搜尋索引(執行會花一些時間),再利用 locate ntfs,來搜尋出系統內,所有檔名有關於 ntfs 字串的檔案。

















(圖3-30)

     接下來,我們遇到新的指令,先利用 man ntfs-3g 大致看一下使用重點,並學習所指示的方式來 mount 我們的外接 NTFS 格式之磁碟。一般來說,安裝好後,插入 NTFS 格式的外接隨身碟,GNOME就會彈出磁碟內容的視窗,並在桌面出現 icon ,但我們還是要說明在文字介面下的操作,Terminal 操作的優點已在前幾章敘述,首先在 Terminal 輸入如以下指令:
$  fdisk  -l    /* 圖3-31,因容量2T以下之磁碟,通常設為 MBR 配置方式(https://en.wikipedia.org/wiki/Master_boot_record) 並相對於超過容量 2T之硬碟,便要設定成 GPT(https://en.wikipedia.org/wiki/GUID_Partition_Table) 配置方式,其工具為 parted(此環境下利用指令 mklabel  gpt )圖形化工具 gparted(可透過yum安裝),亦可用指令 yum install gdisk 安裝 gdisk 工具程式,來相對處理  GPT 配置的磁碟。 */
























(圖3-31)
    從圖3-31黃框處,可以看到筆者接上第二顆磁碟,系統認定為 /dev/sdb,容量為1000.2 GB,約 1TB,因磁碟內已經有分割,且總共僅有一個磁碟分割,故黃框下方顯示 /dev/sdb1。黃框下右,則顯示磁碟分割格式為 HPFS / NTFS (既然是 Microsoft 發展的,我們就來參考 Microsoft 的說明網頁https://support.microsoft.com/en-us/kb/100108)。
接下來,在手動掛內外接磁碟前,我們必須指定一個欲掛載的資料夾,一般外接磁碟皆掛載到 /media 或 /mnt 路徑下,使用者自取名稱的資料夾,但筆者認為,老話一句 (您送丟後,修妹掛對丟掛對),習慣才是王道。為了說明,筆者先利用指令如以下,來掛載上外接1TB的硬碟:
$ mkdir  /media/usbdisk1T                        #  先創造一個資料夾在 /media/usbdisk1T
$ ntfs-3g  /dev/sdb1  /media/usbdisk1T    /*  將 /dev/sdb1 掛在  /media/usbdisk1T ,成為其內容。或可使用指令 mount -t  ntfs-3g  /dev/sdb1  /media/usbdisk1T */
$ df -h                  /*  利用指令 df 來列出是否掛載有成功與磁碟可使用空間,參數-h為空間大小以人看得懂的方式表示,前面篇章有說明,亦可加上參數 -T 來順便列出檔案系統格式。 */
-------------------------------------------------------------
$ umount /media/usbdisk1T             /*  不想使用需卸載,使用指令umount,路徑不想打太多字或忘記全名,記得可用鍵盤 Tab鍵來補齊阿  */
------------------------------------------------------------

     那近年最流行的記憶卡,隨身碟的 exfat 格式呢?我們亦可透過類似方式,下載 exfat 驅動與工具,但此次筆者要介紹從網站下載驅動並安裝。首先,我們先進入RPM Search網站 http://rpm.pbone.net/,我們在Search的條件,分次打上我們要下載的工具程式 fuse-exfat exfat-utils ,如圖3-32至圖3-35。下載 fuse-exfat-1.0.1-2.el6.x86_64.rpmexfat-utils-1.0.1-2.el6.x86_64

















(圖3-32)

















(圖3-33)















(圖3-34)




















(圖3-35)


     我們利用 firefox 瀏覽器下載  fuse-exfat-1.0.1-2.el6.x86_64.rpm 與 exfat-utils-1.0.1-2.el6.x86_64 rpm套件檔至 ~/Download 內後,便利用指令 rpm -ivh  後面接上要安裝的 rpm 套件檔案(https://en.wikipedia.org/wiki/RPM_Package_Manager),參數 -i 為 install,-v 為 verbose info. 會將安裝訊息印出,-h 為 hash marks,通常搭配參數 -v 使用最佳。如圖3-36第3個指令,便可安裝,若有發現其它套件相依性問題,利用指令 rpm 安裝,亦會出現相依問題的何種錯誤來指引安裝使用。











(圖3-36)

     接下來,掛載亦如NTFS,在GNOME環境下,會自動彈出exfat格式的磁碟。Terminal 掛載步驟,就如同 NTFS的操作,僅把 mount 的參數 -t 後方的格式,改為 exfat,如下:
$  mkdir  /media/usb64G                                 #   先創造一個要掛載的資料夾
$  mount -t exfat /dev/sdb1 /media/usb64G   #   假設硬碟抓取到 /dev/sdb1
--------------------------------------
$  umount  /media/usb64G                              #  卸載亦利用 umount
---------------------------------------------------------------------------
除上述方法外,亦可以透過 rpmfusion 套件資料庫(http://rpmfusion.org/)來下載 rpmfusion套件庫當成 yum repository,如下:
$ wget  http://download1.rpmfusion.org/free/el/updates/6/x86_64/rpmfusion-free-release-6-1.noarch.rpm
/* 指令 wget 為 CentOS6_x64 下一個超強的檔案下載工作,筆者有機會會於後面篇章深入介紹,其與網頁下載工具 Curl 齊名。 */

$ wget http://download1.rpmfusion.org/nonfree/el/updates/6/x86_64/rpmfusion-nonfree-\ release-6-1.noarch.rpm
/* \ 為表示兩行字串要接在一起,兩次wget下載後,如圖 3-37 */

$ rpm -ivh fusion-free-release-6-1.noarch.rpm fusion-nonfree-release-6-1.noarch.rpm

$ yum install fuse-exfat exfat-utils    # 有安裝 rpmfusion套件庫後,就找的到 exfat 需要的套件



















(圖3-37)

----------------------------------------------------------------------------------------------------
以上磁碟格式為在 MS Windows的環境下支援較完整,故筆者建議格式化需在 MS Windows 環境下製作千千萬萬不要利用 Linux下的磁碟格式化指令 mkfs -t,來製作 NTFS exfat 格式,以防止資料發生不明的錯誤,來造成遺失。

     緊接著我們就要來分割與建立 Linux 下專用的格式 ext,Linux下亦原生支援使用 SGI 提供的 xfs 格式(http://oss.sgi.com/projects/xfs/),xfs 此格式在 CentOS7_x64,已經設定為檔案系統格式預設值了。因筆者現在手邊沒有容量超過2TB的外接硬碟式在閒置中,故以外接隨身碟先介紹容量小於 2TB 的格式化與掛載方式,假設有一外接磁碟,且尚未做磁碟分割與格式化,要注意插入時,是否已被系統自動掛載,若以掛載,要先用指令 umount 卸載磁碟後,再使用 fdisk做分割設定。系統抓取裝置位置為 /dev/sdb,則我們利用指令 fdisk /dev/sdb,如圖3-38
































(圖3-38)

     圖3-38在 fdisk 的環境下,利用鍵盤 m鍵,可以列出操作功能。接著利用鍵盤 n鍵,來新增一個磁碟分割區(文章往後簡稱 partition),在此例,筆者僅需要一個partition,且單純存放資料,並無開機等需求,故,建議直接選 p (primary partition)(圖3-39),如圖3-39綠框的位置,按下鍵盤鍵,接著 Partition number 指定為 1,再來 First cylinder 與 Last Cylinder 便使用預設值,如此便是該唯一之磁碟分割容量,使用到硬碟最大量。最後再按下 鍵盤 w 鍵儲存設定,並按下鍵盤 q 鍵離開位置(圖3-40)

































(圖3-39)













(圖3-40)

     設定完磁碟分割後,我們要將此唯一分割做格式化(format),在Linux下可使用指定 mkfs -t (type),如以下(圖3-41):

$ mkfs -t ext4 /dev/sdb1   # 指定格式化為 ext4 格式(https://en.wikipedia.org/wiki/Ext4)

     上述的 ext4 檔案系統,僅允許在MAC OSX 與 Linux 下來能讀寫,若僅要在 MS Windows下唯讀,則需另安裝套件 DiskInternal Linux Reader ( http://www.diskinternals.com/linux-reader/),若想試著讀寫 ext 檔案系統,可另外安裝 Ext2Fsd( http://www.ext2fsd.com/ ),但筆者強烈建議,盡量不要在  MS Windows 做寫入 ext 檔案系統的動作,以免發生不明的錯誤,造成資料遺失。如若要使用MS Windows 與 MAC OSX 與 Linux 下皆可讀寫的格式,建議可使用 vfat 格式。如以下指令:

$ mkfs -t  vfat  /dev/sdb1   # 參數 -t (type) ,換為 vfat,若是想用 xfs 格式,請換成 xfs

-----------------------------------------------------------------------------------------------------
格式化完成後,再記得要用 mount 掛載至您喜歡的資料夾路徑即可,如本節前例。
























(圖3-41)

     接著我們假設磁碟 /dev/sdb 容量超過 2TB(但筆者現僅有16G的外接磁碟可供說明),我們便需利用指令 parted /dev/sdb,來將磁碟換成 GPT 的 Label 設置,如下:


































(圖3-42)

     圖3-42利用 parted /dev/sdb 進入 parted 的環境,先輸入 help 來印出有哪些 parted 指令可運用。首先在 parted 環境下,先利用 print ,印出磁碟的最大最小可使用空間,我們必須利用 mklabel gpt 來將磁碟轉成 GPT 設置。接著,再利用 mkpart 來逐一設定所要分割的磁碟,如圖3-43內,Partition name 為自取名稱,也可打上 primary 以示辨別。 File system type 為使用預設 ext2 ( 指定為 Linux 預設ext 檔案系統格式),直接按鍵盤 Enter鍵即可。Start為設定起頭的位置,一般從頭分割,則設定 1。End 為設定最後分割的大小,因我們僅需一個分割,故設定到磁碟最大容量,用 print 所列印出的磁碟最大容量為 15.8G( 因筆者尚未有容量 2TB 硬碟可供試驗,故先用小磁碟試驗給讀者了解),設定完後,在使用 quit q 離開 parted 環境,此時磁碟的分割與標籤狀態已經變更,如圖3-43。接下來,在利用指令 mkfs -t ext4 /dev/sdb1 ,來格式化剛剛切割出的磁碟空間即可,要使用此空間,也如前段所述,要用 mount 掛載至一個資料夾下,筆者不在贅述。




























(圖3-43)

     格式化成 ext4 檔案系統的磁碟,之後便可使用 e2progs 工具程式,如指令 e2fsck /dev/sdb1,可對磁碟 /dev/sdb1 做底層掃描,並自我修復。 格式化成 xfs 檔案系統的磁碟,則需搭配的 xfsprogs工具程式,但通常要先利用 yum install xfsprogs 下載安裝。安裝後,便可利用指令 xfs_check /dev/sdb1 ,為假設對 xfs 格式的 /dev/sdb1 做掃描錯誤,再利用指令 xfs_repair /dev/sdb1,來做對 xfs 格式的 /dev/sdb1 的修復。詳細操作說明,筆者會在後面篇章討論,在此先給各位讀者建立一個概念。
    最後,在很快的介紹掛載幾個常用的網路硬碟格式,如現在最夯的NAS(Network Attached Storage),若有開放 MS Window 常用的晚路翻林(網路芳鄰)方式分享磁碟,或 Linux 常用的 NFS( https://en.wikipedia.org/wiki/Network_File_System ) 方式分享,那在 CentOS6_x64下要如何掛載並掛好掛滿?掛載網路芳鄰硬碟可利用以下指令:

$ mount -t cifs -o username=diskuser,password=diskpass   //192.168.100.10/sharesmbdisk  \ /mnt/smbdisk 
/*  因指令太長,故利用 \ 表示為接續在同一個指令,在此先說明。指令 mount 加參數 -t 為格式,住要此格式為 CIFS (https://en.wikipedia.org/wiki/Server_Message_Block)或稱 SMB,參數
-o 為其他選項,因此網路磁碟格式通常會設定帳號密碼分享,故在此參數選項內加入username與password。接著給 //192.168.100.10/sharesmbdisk 為欲分享主機(來源)給的 IP位址與分享的資料夾名稱,後面在接上要掛載的目標資料夾,筆者將其掛載到 /mnt/smbdisk,若無此資料夾路徑,要先新增資料夾  */
若要掛載 NFS 硬碟,則可利用以下指令:

$ mount -t nfs   //192.168.100.10/sharenfsdisk   /mnt/nfsdisk 
/* 如同前面的 cifs 格式,此處格式成為 nfs ,若為 nfs 4.0個版本,則改為 nfs4 。接著 //192.168.100.10/sharenfsdisk, 一樣為來源主機的IP位址與分享的資料夾,再接著後面的目標資料夾 /mnt/nfsdisk ,相同的若無此路徑,要先新增 */

    下一節,筆者繼續來介紹,為了讓電腦主機可以一週七天,每天24小時的運作,一定會常用到的不斷電系統(UPS),以及其它硬體裝置,如印表機、網路硬碟 NAS 的掛載。

這個網誌中的熱門文章

Linux操作不求人 - 伍章之伍 - make 巨集式編譯器

Linux 操作不求人系列 - 貳章之壹 - Shell Script 程式設計(I) - BASH

Linux操作不求人 - 肆章之貳 - 伺服器架設(II) - 郵件伺服器 - postfix 與 dovecot