1. 程式人生 > >鳥哥的Linux私房菜讀書筆記--磁碟的分割槽、掛載、格式化與檢驗

鳥哥的Linux私房菜讀書筆記--磁碟的分割槽、掛載、格式化與檢驗

1、觀察磁碟分割槽狀態

命令 :  $  lsblk     ##列出系統上的所有磁碟列表 lsblk 可以看成『 list block device 』的縮寫,就是列出所有儲存裝置的意思!這個工具軟體真的很好 用喔!來瞧一瞧! 命令 :  $   lsblk [-dfimpt] [device] 選項與引數:       -d :僅列出磁碟本身,並不會列出該磁碟的分割槽資料       -f :同時列出該磁碟內的檔案系統名稱       -i :使用 ASCII 的線段輸出,不要使用複雜的編碼 (再某些環境下很有用)       -m :同時輸出該裝置在 /dev 底下的許可權資料 (rwx 的資料)       -p :列出該裝置的完整檔名!而不是僅列出最後的名字而已。       -t :列出該磁碟裝置的詳細資料,包括磁碟佇列機制、預讀寫的資料量大小等

    · NAME:就是裝置的檔名囉!會省略 /dev 等前導目錄!     · MAJ:MIN:其實核心認識的裝置都是透過這兩個程式碼來熟悉的!分別是主要:次要裝置程式碼!     · RM:是否為可卸除裝置 (removable device),如光碟、USB 磁碟等等     · SIZE:當然就是容量囉!     · RO:是否為只讀裝置的意思     · TYPE:是磁碟 (disk)、分割槽槽 (partition) 還是隻讀儲存器 (rom) 等輸出     · MOUTPOINT:就是前一章談到的掛載點!

命令 : $   blkid                        ##列出裝置的 UUID 等引數 雖然 lsblk 已經可以使用 -f 來列出檔案系統與裝置的 UUID 資料,UUID 是全域性單一識別符號 (universally unique identifier),Linux 會將系統內所有的裝置都給予一個獨一無二的識別符號, 這個識別符號就可以拿來作為掛載或者是使用這個裝置/檔案系統之用了。 命令 : $  blkid /dev/vda2: UUID="94ac5f77-cb8a-495e-a65b-2ef7442b837c" TYPE="xfs" /dev/vda3: UUID="WStYq1-P93d-oShM-JNe3-KeDl-bBf6-RSmfae" TYPE="LVM2_member"

命令:$ parted  磁碟位置  print    ##列出磁碟的分割槽表型別與分割槽資訊

2、磁碟分割槽

注意:MBR分割槽表使用fdisk分割槽,GPT分割槽表情使用gdisk分割槽

命令:$  gdisk 裝置名稱 範例:由前一小節的 lsblk 輸出,我們知道系統有個 /dev/vda,請觀察該磁碟的分割槽與相關資料 命令:$  gdisk /dev/vda <==仔細看,不要加上數字喔! GPT fdisk (gdisk) version 0.8.6 Partition table scan:  MBR: protective  BSD: not present  APM: not present  GPT: present Found valid GPT with protective MBR; using GPT. <==找到了 GPT 的分割槽表! Command (? for help): <==這裡可以讓你輸入指令動作,可以按問號 (?) 來檢視可用指令 Command (? for help): ?               你應該要透過 lsblk 或 blkid 先找到磁碟,再用 parted /dev/xxx print 來找出內部的分割槽表型別,之後才用 gdisk 或 fdisk 來作業系統。 上表中可以發現 gdisk 會掃描 MBR 與 GPT 分割槽表。 不管你進行了什麼動作,只要離開 gdisk 時按下『q』,那麼所有的動作『都不會生效!』相反的, 按下『w』就是動作生效的意思。所以,你可以隨便玩 gdisk ,只要離開時按下的是『q』即可。

** 用 gdisk 新增分割槽槽 命令 :$  gdisk /dev/vda Command (? for help): p Number   Start (sector)   End (sector)   Size             Code     Name  1                  2048                6143         2.0 MiB        EF02  2                  6144              2103295    1024.0 MiB    0700  3                  2103296        65026047   30.0 GiB       8E00 # 找出最後一個 sector 的號碼是很重要的! Command (? for help): ?      # 查一下增加分割槽的指令為何 Command (? for help): n      # 就是這個!所以開始新增的行為! Partition number (4-128, default 4): 4      # 預設就是 4 號,所以也能 enter 即可! First sector (34-83886046, default = 65026048) or {+-}size{KMGTP}: 65026048           # 也能 enter Last sector (65026048-83886046, default = 83886046) or {+-}size{KMGTP}: +1G        # 決不要 enter,絕對不要使用預設值!                                                                                                                                          因為預設值會將所有的容量用光!因此                                                                                                                                       它預設選擇最大的扇區號碼! 因為我們                                                                                                                                       僅要 1GB 而已,所以你得要加上 +1G                                                                                                                                           這樣即可! # 這個地方可有趣了!我們不需要自己去計算扇區號碼,透過 +容量 的這個方式, # 就可以讓 gdisk 主動去幫你算出最接近你需要的容量的扇區號碼喔! Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300):       # 使用預設值即可~直接 enter 下去! # 這裡在讓你選擇未來這個分割槽槽預計使用的檔案系統!預設都是 Linux 檔案系統的 8300 囉! 命令: $  partprobe -s   ##更新Linux核心的分割槽表資訊

命令:$  gdisk  裝置名   ##刪除分割槽槽

3、磁碟格式化

格式化==建置檔案系統

XFS檔案系統格式化

命令:$  mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \  [-r parms] 裝置名稱 選項與引數: 關於單位:底下只要談到『數值』時,沒有加單位則為 bytes 值,可以用 k,m,g,t,p (小寫)等來解釋比較特殊的是 s 這個單位,它指的是 sector 的『個數』       -b :後面接的是 block 容量,可由 512 到 64k,不過最大容量限制為 Linux 的 4k 喔!       -d :後面接的是重要的 data section 的相關引數值,主要的值有:  agcount=數值 :設定需要幾個儲存群組的意思(AG),通常與 CPU 有關  agsize=數值 :每個 AG 設定為多少容量的意思,通常 agcount/agsize 只選一個設定即可  file :指的是『格式化的裝置是個檔案而不是個裝置』的意思!(例如虛擬磁碟)  size=數值 :data section 的容量,亦即你可以不將全部的裝置容量用完的意思  su=數值 :當有 RAID 時,那個 stripe 數值的意思,與底下的 sw 搭配使用  sw=數值 :當有 RAID 時,用於儲存資料的磁碟數量(須扣除備份碟與備用碟)  sunit=數值 :與 su 相當,不過單位使用的是『幾個 sector(512bytes 大小)』的意思  swidth=數值 :就是 su*sw 的數值,但是以『幾個 sector(512bytes 大小)』來設定       -f :如果裝置內已經有檔案系統,則需要使用這個 -f 來強制格式化才行!       -i :與 inode 有較相關的設定,主要的設定值有:  size=數值 :最小是 256bytes 最大是 2k,一般保留 256 就足夠使用了!  internal=[0|1]:log 裝置是否為內建?預設為 1 內建,如果要用外部裝置,使用底下設定  logdev=device :log 裝置為後面接的那個裝置上頭的意思,需設定 internal=0 才可!  size=數值 :指定這塊登入區的容量,通常最小得要有 512 個 block,大約 2M 以上才行!      -L :後面接這個檔案系統的標頭名稱 Label name 的意思!      -r :指定 realtime section 的相關設定值,常見的有:  extsize=數值 :就是那個重要的 extent 數值,一般不須設定,但有 RAID 時,  最好設定與 swidth 的數值相同較佳!最小為 4K 最大為 1G 。

EXT4檔案系統格式化

命令:$  mkfs.ext4 [-b size] [-L label] 裝置名稱 選項與引數:      -b :設定 block 的大小,有 1K, 2K, 4K 的容量,      -L :後面接這個裝置的標頭名稱。

其他檔案系統格式化

mkfs是個綜合指令,當我們使用 mkfs -t xfs 時,它就會跑去找 mkfs.xfs 相關的引數給我們使用! 如果想要知道系統還支援哪種檔案系統的格式化功能,直接按 [tabl] 就很清楚了!

4、檔案系統檢驗

xfs_repair 處理 XFS 檔案系統 當有 xfs 檔案系統錯亂才需要使用這個指令!所以,這個指令最好是不要用到啦!但有問題發生時, 這個指令卻又很重要... 命令:$  xfs_repair [-fnd] 裝置名稱 選項與引數:     -f :後面的裝置其實是個檔案而不是實體裝置     -n :單純檢查並不修改檔案系統的任何資料 (檢查而已)     -d :通常用在單人維護模式底下,針對根目錄 (/) 進行檢查與修復的動作!很危險!不要隨便使用

fsck.ext4 處理 EXT4 檔案系統 fsck 是個綜合指令,如果是針對 ext4 的話,建議直接使用 fsck.ext4 來檢測比較妥當!那 fsck.ext4 的選項有底下幾個常見的專案: 命令:$   fsck.ext4 [-pf] [-b superblock] 裝置名稱 選項與引數:     -p :當檔案系統在修復時,若有需要回復 y 的動作時,自動回覆 y 來繼續進行修復動作。     -f :強制檢查!一般來說,如果 fsck 沒有發現任何 unclean 的旗標,不會主動進入 細部檢查的,如果您想要強制 fsck 進               入細部檢查,就得加上 -f 旗標囉!    -D :針對檔案系統下的目錄進行優化配置。    -b :後面接 superblock 的位置!一般來說這個選項用不到。但是如果你的 superblock 因故損毀時,透過這個引數即可利               用檔案系統內備份的 superblock 來嘗試救援。一般來說,superblock 備份在:1K block 放在 8193, 2K block 放                       在 16384, 4K block 放在 32768

5、檔案系統的掛載與卸除

注意   · 單一檔案系統不應該被重複掛載在不同的掛載點(目錄)中;           · 單一目錄不應該重複掛載多個檔案系統;           · 要作為掛載點的目錄,理論上應該都是空目錄才是。如果你要用來掛載的目錄裡面並不是空的,那麼掛載了檔案系統              之後,原目錄下的東西就會暫時的消失。 命令: $  mount -a 命令: $  mount [-l] 命令: $  mount [-t 檔案系統] LABEL='' 掛載點 命令: $  mount [-t 檔案系統] UUID='' 掛載點 # 鳥哥近期建議用這種方式喔! 命令: $  mount [-t 檔案系統] 裝置檔名 掛載點 選項與引數:       -a :依照配置檔案 /etc/fstab 的資料將所有未掛載的磁碟都掛載上來       -l :單純的輸入 mount 會顯示目前掛載的資訊。加上 -l 可增列 Label 名稱!       -t :可以加上檔案系統種類來指定欲掛載的型別。常見的 Linux 支援型別有:xfs, ext3, ext4,  reiserfs, vfat, iso9660(光碟               格式), nfs, cifs, smbfs (後三種為網路檔案系統型別)       -n :在預設的情況下,系統會將實際掛載的情況實時寫入 /etc/mtab 中,以利其他程式的運作。  但在某些情況下(例如單                 人維護模式)為了避免問題會刻意不寫入。此時就得要使用 -n 選項。       -o :後面可以接一些掛載時額外加上的引數!比方說賬號、密碼、讀寫許可權等:async, sync: 此檔案系統是否使用同步寫               入 (sync) 或非同步 (async) 的 記憶體機制,請參考檔案系統運作方式。預設為 async。               atime,noatime: 是否修訂檔案的讀取時間(atime)。為了效能,某些時刻可使用 noatime               ro, rw: 掛載檔案系統成為只讀(ro) 或可擦寫(rw)               auto, noauto: 允許此 filesystem 被以 mount -a 自動掛載(auto)               dev, nodev: 是否允許此 filesystem 上,可建立裝置檔案? dev 為可允許               suid, nosuid: 是否允許此 filesystem 含有 suid/sgid 的檔案格式?               exec, noexec: 是否允許此 filesystem 上擁有可執行 binary 檔案?               user, nouser: 是否允許此 filesystem 讓任何使用者執行 mount ?一般來說,mount 僅有 root 可以進行,但下                                                 達 user 引數,則可讓 一般 user 也能夠對此 partition 進行 mount 。               defaults: 預設值為:rw, suid, dev, exec, auto, nouser, and a

              remount: 重新掛載,這在系統出錯,或重新更新引數時,很有用!