日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux】Linux 磁盘与文件系统管理命令

發布時間:2024/1/8 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux】Linux 磁盘与文件系统管理命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來自《鳥哥的 Linux 私房菜》,重復只是加深自己的印象。

本篇結構:

  • 文件系統的簡單操作
  • 磁盤的分區、格式化、檢驗與掛載
  • 設置開機掛載
  • 內存交換空間(swap)之創建
  • 補充

一、文件系統的簡單操作

1.1、磁盤與目錄的容量

磁盤的整體數據是在 superblock 區塊中,但是每個各別文件的容量則在 inode
當中記載的。在命令行下面該如何叫出這幾個數據呢?

  • df:列出文件系統的整體磁盤使用量;
  • du:評估文件系統的磁盤使用量(常用在推估目錄所占容量)

1.1.1、 df

df [-ahikHTm] [目錄或文件名]

選項與參數:

  • -a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;
  • -k :以 KBytes 的容量顯示各文件系統;
  • -m :以 MBytes 的容量顯示各文件系統;
  • -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
  • -H :以 M=1000K 取代 M=1024K 的進位方式;
  • -T :連同該 partition 的 filesystem 名稱 (例如 xfs) 也列出;
  • -i :不用磁盤容量,而以 inode 的數量來顯示

    在 Linux 下面如果 df 沒有加任何選項,那么默認會將系統內所有的,(不含特殊內存內的文件系統與 swap) 都以 1 KBytes 的容量來列出來!

所輸出的結果信息:

  • Filesystem:代表該文件系統是在哪個 partition ,所以列出設備名稱;
  • 1k-blocks:說明下面的數字單位是 1KB!可利用 -h 或 -m 來改變容量;
  • Used:顧名思義,就是使用掉的磁盤空間;
  • Available:也就是剩下的磁盤空間大小;
  • Use%:就是磁盤的使用率啦!如果使用率高達 90% 以上時, 最好需要注意一下了,免得容量不足造成系統問題;
  • Mounted on:就是磁盤掛載的目錄所在。

范例一:將系統內的所有特殊文件格式及名稱都列出來

范例二:將 /etc 下面的可用的磁盤容量以易讀的容量格式顯示

root@master:~# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-root 476G 148G 304G 33% /

范例三:將目前各個 partition 當中可用的 inode 數量列出

root@master:~# df -ih Filesystem Inodes IUsed IFree IUse% Mounted on udev 7.9M 419 7.9M 1% /dev tmpfs 7.9M 861 7.9M 1% /run /dev/mapper/ubuntu--vg-root 31M 402K 30M 2% / tmpfs 7.9M 4 7.9M 1% /dev/shm tmpfs 7.9M 4 7.9M 1% /run/lock tmpfs 7.9M 16 7.9M 1% /sys/fs/cgroup /dev/sda1 122K 310 122K 1% /boot tmpfs 7.9M 4 7.9M 1% /run/user/0 tmpfs 7.9M 4 7.9M 1% /run/user/1000

由于 df 主要讀取的數據幾乎都是針對一整個文件系統,因此讀取的范圍主要是在 Superblock 內的信息, 所以這個指令顯示結果的速度非常的快速!在顯示的結果中需要特別留意的是根目錄的剩余容量! 因為所有的數據都是由根目錄衍生出來的,因此當根目錄的剩余容量剩下 0 時,那 Linux 可能就問題很大了。

需要注意的是,如果使用 -a 這個參數時,系統會出現 /proc 這個掛載點,但是里面的東西都是 0 ,不要緊張! /proc 的東西都是 Linux 系統所需要載入的系統數據,而且是掛載在“內存當中”的, 所以當然沒有占任何的磁盤空間。

/dev/shm/ 目錄,其實是利用內存虛擬出來的磁盤空間,通常是總實體內存的一半!由于是通過內存仿真出來的磁盤,因此你在這個目錄下面創建任何數據文件時,存取速度是非常快速的!(在內存內工作) 不過,也由于他是內存仿真出來的,因此這個文件系統的大小在每部主機上都不一樣,而且創建的東西在下次開機時就消失了! 因為是在內存中!

1.1.2、du

du [-ahskm] 文件或目錄名稱

選項與參數:

  • -a :列出所有的文件與目錄容量,因為默認僅統計目錄下面的文件量而已;
  • -h :以人們較易讀的容量格式 (G/M) 顯示;
  • -s :列出總量而已,而不列出每個各別的目錄占用容量;
  • -S :不包括子目錄下的總計,與 -s 有點差別。
  • -k :以 KBytes 列出容量顯示;
  • -m :以 MBytes 列出容量顯示。

直接輸入 du 沒有加任何選項時,則 du 會分析“目前所在目錄”的文件與目錄所占用的磁盤空間。但是,實際顯示時,僅會顯示目錄容量(不含文件),因此 . 目錄有很多文件沒有被列出來,所以全部的目錄相加不會等于 . 的容量。此外,輸出的數值數據為 1K 大小的容量單位。加上參數 -a 則可以將文件容量也顯示出來。

范例一:檢查根目錄下面每個目錄所占用的容量

du -sm /*16 /bin 108 /boot ... 省略 ... du: cannot access '/proc/104399/fd/4': No such file or directory du: cannot access '/proc/104399/fdinfo/4': No such file or directory ... 省略 ... 1692 /tmp 9607 /usr 41054 /var

這是個很常被使用的功能,利用萬用字符 * 來代表每個目錄,如果想要檢查某個目錄下,哪個次目錄占用最大的容量,可以用這個方法找出來。至于 /proc 里頭會列出一堆“No such file or directory” 的錯誤,因為是內存內的程序,程序執行結束就會消失,因此會有些目錄找不到,是正確的!

與 df 不一樣的是,du 這個指令其實會直接到文件系統內去搜尋所有的文件數據,所以指令的運行會執行一小段時間。此外,在默認的情況下,容量的輸出是以 KB 來設計的, 如果想要知道目錄占了多少 MB ,那么就使用 -m 這個參數即可,如果只想要知道該目錄占了多少容量的話,使用 -s 就可以。

至于 -S 這個選項部分,由于 du 默認會將所有文件的大小均列出,因此假設在 /etc 下面使用 du 時, 所有的文件大小,包括 /etc 下面的次目錄容量也會被計算一次。然后最終的容量(/etc) 也會加總一次, 因此很多朋友都會誤會 du 分析的結果不太對勁。如果想要列出某目錄下的全部數據, 或許也可以加上 -S 的選項,減少次目錄的加總。

1.2、實體鏈接與符號鏈接: ln

1.2.1、Hard Link (實體鏈接, 硬式鏈接或實際鏈接)

  • 每個文件都會占用一個 inode ,文件內容由 inode 的記錄來指向;
  • 想要讀取該文件,必須要經過目錄記錄的文件名來指向到正確的 inode 號碼才能讀取。

也就是說,其實文件名只與目錄有關,但是文件內容則與 inode 有關。那么想一想, 有沒有可能有多個文件名對應到同一個 inode 號碼呢?有的!那就是 hard link 的由來。

簡單說:hard link 只是在某個目錄下新增一筆文件名鏈接到某 inode 號碼的關連記錄而已

如圖,有個 /root/crontab 是 /etc/crontab 的實體鏈接,這兩個文件名鏈接到同一個 inode :

使用 hard link 設置鏈接文件時,磁盤的空間與 inode 的數目都不會改變, hard link 只是在某個目錄下的 block 多寫入一個關連數據而已,既不會增加 inode 也不會耗用 block 數量(其實還是可能會改變系統的 block 的,那就是當新增這筆數據卻剛好將目錄的 block 填滿時,就可能會新加一個 block 來記錄文件名關連性,而導致磁盤空間的變化)。

由圖也可知,事實上 hard link 應該僅能在單一文件系統中進行的,應該是不能夠跨文件系統,所以 hard link 是有限制的

  • 不能跨 Filesystem;
  • 不能 link 目錄。

因為如果使用 hard link 鏈接到目錄時, 鏈接的數據需要連同被鏈接目錄下面的所有數據都創建鏈接。

1.2.2、Symbolic Link (符號鏈接,亦即是捷徑)

相對于 hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在創建一個獨立的文件,而這個文件會讓數據的讀取指向他 link 的那個文件的文件名!由于只是利用文件來做為指向的動作, 所以,當來源文件被刪除之后,symbolic link 的文件會“開不了”, 會一直說“無法打開某文件!”。實際上就是找不到原始“文件名”而已。

如圖:

由 1 號 inode 讀取到鏈接文件的內容僅有文件名,根據文件名鏈接到正確的目錄去取得目標文件的 inode , 最終就能夠讀取到正確的數據了。可以發現的是,如果目標文件(/etc/crontab)被刪除了,那么整個環節就會無法繼續進行下去, 所以就會發生無法通過鏈接文件讀取的問題了!

這個 Symbolic Link 與 Windows 的捷徑可以給他劃上等號,由 Symbolic link 所創建的文件為一個獨立的新的文件,所以會占用掉 inode 與 block 。

1.2.3、指令

ln [-sf] 來源文件 目標文件

選項與參數:

  • -s :如果不加任何參數就進行鏈接,那就是hard link,至于 -s 就是symbolic link;
  • -f :如果 目標文件 存在時,就主動的將目標文件直接移除后再創建!

關于目錄的 link 數量:

一個“空目錄”里面至少會存在 . 與 … 這兩個目錄。那么,當創建一個新目錄名稱為 /tmp/testing 時,基本上會有三個東西,那就是:

  • /tmp/testing
  • /tmp/testing/.
  • /tmp/testing/…

而其中 /tmp/testing 與 /tmp/testing/. 其實是一樣的!都代表該目錄,而 /tmp/testing/… 則代表 /tmp 這個目錄。所以說,當創建一個新的目錄時, “新的目錄的 link 數為 2 ,而上層目錄的 link 數則會增加 1。

二、磁盤的分區、格式化、檢驗與掛載

想要在系統里面新增一顆磁盤時,應該有如下動作需要做:

  • 對磁盤進行分區,以創建可用的 partition ;
  • 對該 partition 進行格式化 (format),以創建系統可用的 filesystem;
  • 若想要仔細一點,則可對剛剛創建好的 filesystem 進行檢驗;
  • 在 Linux 系統上,需要創建掛載點 (亦即是目錄),并將他掛載上來。
  • 2.1、觀察磁盤分區狀態

    目前磁盤分區主要有 MBR 以及 GPT 兩種格式,這兩種格式所使用的分區工具不太一樣,因此分區前要去找一下目前系統有的磁盤有哪些, 這些磁盤是 MBR 還是 GPT 等等。

    2.1.1、lsblk 列出系統上的所有磁盤列表

    lsblk 可以看成“ list block device ”的縮寫,就是列出所有儲存設備的意思。

    lsblk [-dfimpt] [device]

    選項與參數:

    • -d :僅列出磁盤本身,并不會列出該磁盤的分區數據
    • -f :同時列出該磁盤內的文件系統名稱
    • -i :使用 ASCII 的線段輸出,不要使用復雜的編碼 (再某些環境下很有用)
    • -m :同時輸出該設備在 /dev 下面的權限數據 (rwx 的數據)
    • -p :列出該設備的完整文件名!而不是僅列出最后的名字而已
    • -t :列出該磁盤設備的詳細數據,包括磁盤佇列機制、預讀寫的數據量大小等

    范例一:列出本系統下的所有磁盤與磁盤內的分區信息

    root@master:/dev# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 500G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 499.5G 0 part ├─ubuntu--vg-root 252:0 0 483.5G 0 lvm /└─ubuntu--vg-swap_1 252:1 0 16G 0 lvm [SWAP] sr0 11:0 1 1024M 0 rom

    系統主要有個 sr0 以及一個 sda 的設備,而 sda 的設備下面又有三個分區, 其中 sda5 甚至還有因為 LVM 產生的文件系統。

    • NAME:就是設備的文件名!會省略 /dev 等前導目錄;
    • MAJ:MIN:其實核心認識的設備都是通過這兩個代碼來熟悉的!分別是主要:次要設備代碼;
    • RM:是否為可卸載設備 (removable device),如光盤、USB 磁盤等等;
    • SIZE:當然就是容量;
    • RO:是否為只讀設備的意思;
    • TYPE:是磁盤 (disk)、分區 (partition) 還是只讀存儲器 (rom) 等輸出;
    • MOUTPOINT:掛載點!

    范例二:僅列出 /dev/sda 設備內的所有數據的完整文件名

    root@master:/dev# lsblk -ip /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT /dev/sda 8:0 0 500G 0 disk |-/dev/sda1 8:1 0 487M 0 part /boot |-/dev/sda2 8:2 0 1K 0 part `-/dev/sda5 8:5 0 499.5G 0 part |-/dev/mapper/ubuntu--vg-root 252:0 0 483.5G 0 lvm /`-/dev/mapper/ubuntu--vg-swap_1 252:1 0 16G 0 lvm [SWAP]

    2.1.2、blkid 列出設備的 UUID 等參數

    lsblk 可以使用 -f 也可以來列出文件系統與設備的 UUID 數據。

    UUID 是全域單一識別碼 (universally unique identifier),Linux 會將系統內所有的設備都給予一個獨一無二的識別碼, 這個識別碼就可以拿來作為掛載或者是使用這個設備/文件系統之用。

    root@master:/dev# blkid /dev/sda1: UUID="4ed77cbc-f446-4918-90ca-4e6b6fc7d97c" TYPE="ext2" PARTUUID="863f83f3-01" /dev/sda5: UUID="lYIIQX-XyCX-1hpS-bLSR-yXX7-SdqL-6Swqvq" TYPE="LVM2_member" PARTUUID="863f83f3-05" /dev/mapper/ubuntu--vg-root: UUID="4eb8d680-6565-494a-bf6e-3c15e48eda1b" TYPE="ext4" /dev/mapper/ubuntu--vg-swap_1: UUID="b2d65ad5-9053-4315-83ae-ddba10e59f57" TYPE="swap"

    每一行代表一個文件系統,主要列出設備名稱、UUID 名稱以及文件系統的類型。

    2.1.3、parted 列出磁盤的分區表類型與分區信息

    parted device_name print

    范例一:列出 /dev/sda 磁盤的相關數據

    root@master:/dev# parted /dev/sda print Model: VMware Virtual disk (scsi) # 磁盤的模塊名稱(廠商) Disk /dev/sda: 537GB # 磁盤的總容量 Sector size (logical/physical): 512B/512B # 磁盤的每個邏輯/物理扇區容量 Partition Table: msdos # 分區表的格式 (MBR/GPT) Disk Flags: # 下面才是分區數據 Number Start End Size Type File system Flags1 1049kB 512MB 511MB primary ext2 boot2 513MB 537GB 536GB extended5 513MB 537GB 536GB logical lvm

    2.2、磁盤分區: gdisk/fdisk

    MBR 分區表請使用 fdisk 分區, GPT 分區表請使用 gdisk 分區,否則會分區失敗。

    所以先通過 lsblk 或 blkid 先找到磁盤,再用 parted /dev/xxx print 來找出內部的分區表類型,之后才用 gdisk 或 fdisk 來操作系統。

    2.2.1、gdisk

    先看看 gdisk。

    gdisk 設備名稱

    范例:觀察該磁盤的分區與相關數據(鳥哥書上的代碼,我的設備是 MBR 分區表)

    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): ? b back up GPT data to a file c change a partition's name d delete a partition # 刪除一個分區 i show detailed information on a partition l list known partition types n add a new partition # 增加一個分區 o create a new empty GUID partition table (GPT) p print the partition table # 印出分區表 (常用) q quit without saving changes # 不儲存分區就直接離開 gdisk r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit # 儲存分區操作后離開 gdisk x extra functionality (experts only) ? print this menu Command (? for help):

    先來看看分區表信息。

    Command (? for help): p # 這里可以輸出目前磁盤的狀態 Disk /dev/vda: 83886080 sectors, 40.0 GiB # 磁盤文件名/扇區數與總容量 Logical sector size: 512 Bytes # 單一扇區大小為 512 Bytes Disk identifier (GUID): A4C3C813-62AF-4BFE-BAC9-112EBD87A483 # 磁盤的 GPT 識別碼 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 83886046 Partitions will be aligned on 2048-sector boundaries Total free space is 18862013 sectors (9.0 GiB) 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 # 分區編號 開始扇區號碼 結束扇區號碼 容量大小 Command (? for help): q # 想要不儲存離開嗎?按下 q 就對了!不要隨便按 w 啊!

    使用“ p ”可以列出目前這顆磁盤的分區表信息,這個信息的上半部在顯示整體磁盤的狀態。下半部的分區表信息主要在列出每個分區的個別信息項目。每個項目的意義為:

    • Number:分區編號,1 號指的是 /dev/vda1 這樣計算;
    • Start (sector):每一個分區的開始扇區號碼位置;
    • End (sector):每一個分區的結束扇區號碼位置,與 start 之間可以算出分區的總容量;
    • Size:就是分區的容量了;
    • Code:在分區內的可能的文件系統類型。Linux 為 8300,swap 為 8200。不過這個項目只是一個提示而已,不見得真的代表此分區內的文件系統;
    • Name:文件系統的名稱等等。

    具體新增分區的操作見《鳥哥的 Linux 私房菜》378 頁。

    2.2.2、partprobe 更新 Linux 核心的分區表信息

    partprobe [-s] # 可以不要加 -s !那么屏幕不會出現信息!partprobe -s # 不過還是建議加上 -s 比較清晰!

    2.2.3、fdisk

    雖然 MBR 分區表在未來應該會慢慢的被淘汰,畢竟現在磁盤容量隨便都大于 2T 以上了,不過依舊有些舊的系統,以及虛擬機的使用上面,還是有小磁盤存在的空間!這時處理 MBR 分區表, 就得要使用 fdisk。

    fdisk 跟 gdisk 使用的方式幾乎一樣,只是一個使用 ? 作為指令提示數據,一個使用 m 作為提示這樣而已。此外,fdisk 有時會使用柱面 (cylinder) 作為分區的最小單位,與 gdisk 默認使用 sector 不太一樣。

    2.3、磁盤格式化(創建文件系統)

    格式化的指令非常的簡單,那就是“make filesystem, mkfs” 這個指令!這個指令其實是個綜合的指令,他會去調用正確的文件系統格式化工具軟件!

    我們常聽到的“格式化”其實應該稱為“創建文件系統 (make filesystem)”才對,使用的指令是 mkfs 。

    2.3.1、EXT4 文件系統 mkfs.ext4

    想要格式化為 ext4 的傳統 Linux 文件系統的話,可以使用 mkfs.ext4 這個指令。

    mkfs.ext4 [-b size] [-L label] 設備名稱

    選項與參數:

    • -b :設置 block 的大小,有 1K, 2K, 4K 的容量
    • -L :后面接這個設備的標頭名稱。

    范例:將 /dev/vda5 格式化為 ext4 文件系統

    mkfs.ext4 /dev/vda5

    2.3.2、XFS 文件系統 mkfs.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 。

    2.3.3、其他文件系統 mkfs

    mkfs 其實是個綜合指令而已,當使用 mkfs -t xfs 時,它就會跑去找 mkfs.xfs 相關的參數,如果想要知道系統還支持哪種文件系統的格式化功能,直接按 [tabl] 就很清楚。

    mkfs[tab][tab] mkfs mkfs.bfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.fat mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat mkfs.xfs

    2.4、文件系統檢驗

    文件系統運行時會有磁盤與內存數據非同步的狀況發生,因此莫名其妙的死機非常可能導致文件系統的錯亂。

    2.4.1、xfs_repair 處理 XFS 文件系統

    xfs_repair [-fnd] 設備名稱

    選項與參數:

    • -f :后面的設備其實是個文件而不是實體設備
    • -n :單純檢查并不修改文件系統的任何數據 (檢查而已)
    • -d :通常用在單人維護模式下面,針對根目錄 (/) 進行檢查與修復的動作!很危險!不要隨便使用

    范例一:檢查一下剛剛創建的 /dev/vda4 文件系統

    [root@study ~]# xfs_repair /dev/vda4 Phase 1 - find and verify superblock... Phase 2 - using internal log Phase 3 - for each AG... Phase 4 - check for duplicate blocks... Phase 5 - rebuild AG headers and trees... Phase 6 - check inode connectivity... Phase 7 - verify and correct link counts... done # 共有 7 個重要的檢查流程!詳細的流程介紹可以 man xfs_repair 即可!

    范例二:檢查一下系統原本就有的 /dev/centos/home 文件系統

    [root@study ~]# xfs_repair /dev/centos/home xfs_repair: /dev/centos/home contains a mounted filesystem xfs_repair: /dev/centos/home contains a mounted and writable filesystem fatal error -- couldn't initialize XFS library

    xfs_repair 可以檢查/修復文件系統,不過,因為修復文件系統是個很龐大的任務!因此,修復時該文件系統不能被掛載! 所以,檢查與修復 /dev/vda4 沒啥問題,但是修復/dev/centos/home 這個已經掛載的文件系統時,就出現上述的問題了! 沒關系,若可以卸載,卸載后再處理即可。

    Linux 系統有個設備無法被卸載,那就是根目錄!如果你的根目錄有問題怎辦?這時得要進入單人維護或救援模式,然后通過 -d 這個選項來處理! 加入 -d 這個選項后,系統會強制檢驗該設備,檢驗完畢后就會自動重新開機!

    2.4.2、fsck.ext4 處理 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。

    2.5、文件系統掛載與卸載

    進行掛載前,最好先確定幾件事:

    • 單一文件系統不應該被重復掛載在不同的掛載點(目錄)中;
    • 單一目錄不應該重復掛載多個文件系統;
    • 要作為掛載點的目錄,理論上應該都是空目錄才是。
    [root@study ~]# mount -a [root@study ~]# mount [-l] [root@study ~]# mount [-t 文件系統] LABEL='' 掛載點 [root@study ~]# mount [-t 文件系統] UUID='' 掛載點 # 鳥哥近期建議用這種方式! [root@study ~]# 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 async;
      • remount: 重新掛載,這在系統出錯,或重新更新參數時,很有用!

    2.5.1、掛載 xfs/ext4/vfat 等文件系統

    范例一:找出 /dev/vda4 的 UUID 后,用該 UUID 來掛載文件系統到 /data/xfs 內

    [root@study ~]# blkid /dev/vda4 /dev/vda4: UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" TYPE="xfs" [root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs mount: mount point /data/xfs does not exist # 非正規目錄!所以手動創建它! [root@study ~]# mkdir -p /data/xfs [root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs [root@study ~]# df /data/xfs Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda4 1038336 32864 1005472 4% /data/xfs

    范例二:使用相同的方式,將 /dev/vda5 掛載于 /data/ext4

    [root@study ~]# blkid /dev/vda5 /dev/vda5: UUID="899b755b-1da4-4d1d-9b1c-f762adb798e1" TYPE="ext4" [root@study ~]# mkdir /data/ext4 [root@study ~]# mount UUID="899b755b-1da4-4d1d-9b1c-f762adb798e1" /data/ext4 [root@study ~]# df /data/ext4 Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda5 999320 2564 927944 1% /data/ext4

    2.5.2、重新掛載根目錄與掛載不特定目錄

    整個目錄樹最重要的地方就是根目錄了,所以根目錄根本就不能夠被卸載的。如果掛載參數要改變, 或者是根目錄出現“只讀”狀態時,如何重新掛載呢?最可能的處理方式就是重新開機 (reboot)!

    不過也可以這樣做:

    范例:將 / 重新掛載,并加入參數為 rw 與 auto

    [root@study ~]# mount -o remount,rw,auto /

    另外,也可以利用 mount 來將某個目錄掛載到另外一個目錄去!這并不是掛載文件系統,而是額外掛載某個目錄的方法! 雖然下面的方法也可以使用 symbolic link 來鏈接,不過在某些不支持符號鏈接的程序運行中,還是得要通過這樣的方法才行。

    范例:將 /var 這個目錄暫時掛載到 /data/var 下面

    [root@study ~]# mkdir /data/var [root@study ~]# mount --bind /var /data/var [root@study ~]# ls -lid /var /data/var 16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /data/var 16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /var# 內容完全一模一樣啊!因為掛載目錄的緣故!

    2.6、umount (將設備文件卸載)

    umount [-fn] 設備文件名或掛載點

    選項與參數:

    • -f :強制卸載!可用在類似網絡文件系統 (NFS) 無法讀取到的情況下;
    • -l :立刻卸載文件系統,比 -f 還強;
    • -n :不更新 /etc/mtab 情況下卸載。

    三、設置開機掛載

    但是掛載是臨時的,系統重啟后需要重新掛載,如果希望下次啟動時,自動掛載,需要按照下述操作。

    3.1、開機掛載 /etc/fstab 及 /etc/mtab

    先查閱一下 /etc/fstab 這個文件的內容。

    [root@study ~]# cat /etc/fstab Device Mount point filesystem parameters dump fsck /dev/mapper/centos-root / xfs defaults 0 0 UUID=94ac5f77-cb8a-495e-a65b-2ef7442b837c /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0

    /etc/fstab (filesystem table) 就是將利用 mount 指令進行掛載時, 將所有的選項與參數寫入到這個文件中。除此之外, /etc/fstab 還加入了 dump 這個備份用指令的支持! 與開機時是否進行文件系統檢驗 fsck 等指令有關。

    這個文件的內容共有六個字段,各個字段的總結數據與詳細數據如下:

    [設備/UUID等] [掛載點] [文件系統] [文件系統參數] [dump] [fsck]

    第一欄:磁盤設備文件名/UUID/LABEL name:

    這個字段可以填寫的數據主要有三個項目:

    • 文件系統或磁盤的設備文件名,如 /dev/vda2 等
    • 文件系統的 UUID 名稱,如 UUID=xxx
    • 文件系統的 LABEL 名稱,例如 LABEL=xxx

    第二欄:掛載點 (mount point):

    就是掛載的目錄。

    第三欄:磁盤分區的文件系統:

    在手動掛載時可以讓系統自動測試掛載,但在這個文件當中我們必須要手動寫入文件系統才行! 包括 xfs, ext4, vfat, reiserfs, nfs 等等。

    第四欄:文件系統參數:

    參數內容意義
    async/sync設置磁盤是否以非同步方式運行!默認為 async(性能較佳)
    auto/noauto當下達 mount -a 時,此文件系統是否會被主動測試掛載。默認為 auto。
    rw/ro讓該分區以可讀寫或者是只讀的型態掛載上來,如果你想要分享的數據 是不給使用者隨意變更的, 這里也能夠設置為只讀。則不論在此文件系 統的文件是否設置 w 權限,都無法寫入!
    exec/noexec限制在此文件系統內是否可以進行“執行”的工作?如果是純粹用來儲存數 據的目錄, 那么可以設置為 noexec 會比較安全。不過,這個參數也不 能隨便使用,因為你不知道該目錄下是否默認會有可執行文件。舉例來 說,如果你將 noexec 設置在 /var ,當某些軟件將一些可執行文件放置 于 /var 下時,那就會產生很大的問題! 因此,建議這個 noexec 最多 僅設置于你自訂或分享的一般數據目錄。
    user/nouser是否允許使用者使用 mount指令來掛載呢?一般而言,我們當然不希望 一般身份的 user 能使用 mount 啰,因為太不安全了,因此這里應該要設 置為 nouser!
    suid/nosuid該文件系統是否允許 SUID 的存在?如果不是可執行文件放置目錄,也 可以設置為 nosuid 來取消這個功能!
    defaults同時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上, 默認情況使用 defaults 設置即可!

    第五欄:能否被 dump 備份指令作用:

    dump 是一個用來做為備份的指令,不過現在有太多的備份方案了,所以這個項目可以不要理會!直接輸入 0 就好了!

    第六欄:是否以 fsck 檢驗扇區:

    早期開機的流程中,會有一段時間去檢驗本機的文件系統,看看文件系統是否完整
    (clean)。 不過這個方式使用的主要是通過 fsck 去做的,我們現在用的 xfs 文件系統就沒有辦法適用,因為 xfs 會自己進行檢驗,不需要額外進行這個動作!所以直接填 0 就好了。

    例題:假設我們要將 /dev/vda4 每次開機都自動掛載到 /data/xfs ,該如何進行?

    # 首先,請用 nano 將下面這一行寫入 /etc/fstab 最后面中;[root@study ~]# nano /etc/fstab UUID="e0fa7252-b374-4a06-987a-3cb14f415488" /data/xfs xfs defaults 0 0# 再來看看 /dev/vda4 是否已經掛載,如果掛載了,請務必卸載再說! [root@study ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda4 1038336 32864 1005472 4% /data/xfs # 竟然不知道何時被掛載了?趕緊給他卸載先! # **因為,如果要被掛載的文件系統已經被掛載了(無論掛載在哪個目錄),那測試就不會進行喔!** [root@study ~]# umount /dev/vda4# 最后測試一下剛剛我們寫入 /etc/fstab 的語法有沒有錯誤!這點很重要!因為這個文件如果寫錯了, 則你的 Linux 很可能將無法順利開機完成!所以請務必要測試測試! [root@study ~]# mount -a [root@study ~]# df /data/xfs

    最終有看到 /dev/vda4 被掛載起來的信息才是成功的掛載了!而且以后每次開機都會順利的將此文件系統掛載起來的!

    3.2、特殊設備 loop 掛載

    如果有光盤鏡像文件,或者是使用文件作為磁盤的方式時,那就得要使用特別的方法來將他掛載起來,不需要燒錄!

    3.2.1、掛載光盤/DVD鏡像文件

    如果下載了 Linux 或者是其他所需光盤/DVD的鏡像文件后, 難道一定需要燒錄成為光盤才能夠使用該文件里面的數據嗎?當然不是!我們可以通過 loop 設備來掛
    載的!

    ll -h /tmp/CentOS-7.0-1406-x86_64-DVD.iso -rw-r--r--. 1 root root 3.9G Jul 7 2014 /tmp/CentOS-7.0-1406-x86_64-DVD.iso # 看到上面的結果吧!這個文件就是鏡像文件,文件非常的大吧![root@study ~]# mkdir /data/centos_dvd [root@study ~]# mount -o loop /tmp/CentOS-7.0-1406-x86_64-DVD.iso /data/centos_dvd [root@study ~]# df /data/centos_dvd Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0 4050860 4050860 0 100% /data/centos_dvd # 就是這個項目! .iso 鏡像文件內的所有數據可以在 /data/centos_dvd 看到! [root@study ~]# ll /data/centos_dvd total 607 -rw-r--r--. 1 500 502 14 Jul 5 2014 CentOS_BuildTag <==瞧!就是DVD的內容啊! drwxr-xr-x. 3 500 502 2048 Jul 4 2014 EFI -rw-r--r--. 1 500 502 611 Jul 5 2014 EULA -rw-r--r--. 1 500 502 18009 Jul 5 2014 GPL drwxr-xr-x. 3 500 502 2048 Jul 4 2014 images .....(下面省略)..... [root@study ~]# umount /data/centos_dvd/ # 測試完成!記得將數據給他卸載!同時這個鏡像文件也被鳥哥刪除了...測試機容量不夠大!

    四、內存交換空間(swap)之創建

    以前的年代因為內存不足,因此那個可以暫時將內存的程序拿到硬盤中暫放的內存交換空間(swap) 就顯的非常的重要! 否則,如果突然間某支程序用掉你大部分的內存,那你的系統恐怕有損毀的情況發生。

    一般來說,如果硬件的配備資源足夠的話,那么 swap 應該不會被系統所使用到,swap 會被利用到的時刻通常就是實體內存不足的情況了。 CPU 所讀取的數據都來自于內存, 那當內存不足的時候,為了讓后續的程序可以順利的運行,因此在內存中暫不使用的程序與數據就會被挪到 swap 中了。 此時內存就會空出來給需要執行的程序載入。由于 swap 是用磁盤來暫時放置內存中的信息,所以用到 swap 時,主機磁盤燈就會開始閃個不停!

    4.1、使用實體分區創建swap

    創建 swap 分區的方式也是非常的簡單的!通過下面幾個步驟就搞定:

  • 分區:先使用 gdisk 在磁盤中分區出一個分區給系統作為 swap 。由于 Linux 的 gdisk 默認會將分區的 ID 設置為 Linux 的文件系統,所以可能還得要設置一下 system ID。
  • 格式化:利用創建 swap 格式的“mkswap 設備文件名”就能夠格式化該分區成為 swap 格式。
  • 使用:最后將該 swap 設備啟動,方法為:“swapon 設備文件名”。
  • 觀察:最終通過 free 與 swapon -s 這個指令來觀察一下內存的用量吧!
  • 具體操作:

  • 先進行分區的行為
  • [root@study ~]# gdisk /dev/vda Command (? for help): n Partition number (6-128, default 6): First sector (34-83886046, default = 69220352) or {+-}size{KMGTP}: Last sector (69220352-83886046, default = 83886046) or {+-}size{KMGTP}: +512M Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 8200 Changed type of partition to 'Linux swap' Command (? for help): p Number Start (sector) End (sector) Size Code Name 6 69220352 70268927 512.0 MiB 8200 Linux swap # 重點就是產生這東西! Command (? for help): w Do you want to proceed? (Y/N): y [root@study ~]# partprobe [root@study ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 40G 0 disk .....(中間省略)..... `-vda6 252:6 0 512M 0 part # 確定這里是存在的才行! # 鳥哥有簡化輸出喔!結果可以看到我們多了一個 /dev/vda6 可以使用于 swap 喔!
  • 開始創建 swap 格式
  • [root@study ~]# mkswap /dev/vda6 Setting up swapspace version 1, size = 524284 KiB no label, UUID=6b17e4ab-9bf9-43d6-88a0-73ab47855f9d [root@study ~]# blkid /dev/vda6 /dev/vda6: UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" TYPE="swap"# 確定格式化成功!且使用 blkid 確實可以抓到這個設備了喔
  • 開始觀察與載入看看
  • [root@study ~]# free total used free shared buff/cache available Mem: 1275140 227244 330124 7804 717772 875536 # 實體內存 Swap: 1048572 101340 947232 # swap 相關# 我有 1275140K 的實體內存,使用 227244K 剩余 330124K ,使用掉的內存有 717772K 用在緩沖/高速緩存的用途中。至于 swap 已經有 1048572K !這樣會看了吧?![root@study ~]# swapon /dev/vda6 [root@study ~]# free total used free shared buff/cache available Mem: 1275140 227940 329256 7804 717944 874752 Swap: 1572856 101260 1471596 <==有看到增加了沒? [root@study ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1048572 101260 -1 /dev/vda6 partition 524284 0 -2# 上面列出目前使用的 swap 設備有哪些的意思![root@study ~]# nano /etc/fstab UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" swap swap defaults 0 0# 當然要寫入配置文件,只不過不是文件系統,所以沒有掛載點!第二個字段寫入 swap 即可。

    4.2、使用文件創建swap

    如果是在實體分區無法支持的環境下,此時前一小節提到的 loop 設備創建方法就派的上用場,與實體分區不一樣的,這個方法只是利用 dd 去創建一個大文件而已。

  • 使用 dd 這個指令來新增一個 128MB 的文件在 /tmp 下面:
  • [root@study ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128 128+0 records in 128+0 records out 134217728 Bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s [root@study ~]# ll -h /tmp/swap -rw-r--r--. 1 root root 128M Jun 26 17:47 /tmp/swap# 這個指令的簡單意義如下: # if 是 input file ,輸入文件。那個 /dev/zero 是會一直輸出 0 的設備! # of 是 output file ,將一堆零寫入到后面接的文件中。 # bs 是每個 block 大小,就像文件系統那樣的 block 意義; # count 則是總共幾個 bs 的意思。所以 bs*count 就是這個文件的容量了!
  • 使用 mkswap 將 /tmp/swap 這個文件格式化為 swap 的文件格式:
  • [root@study ~]# mkswap /tmp/swap Setting up swapspace version 1, size = 131068 KiB no label, UUID=4746c8ce-3f73-4f83-b883-33b12fa7337c# 這個指令下達時請“特別小心”,因為下錯字符控制,將可能使您的文件系統掛掉!
  • 使用 swapon 來將 /tmp/swap 啟動:
  • [root@study ~]# swapon /tmp/swap [root@study ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1048572 100380 -1 /dev/vda6 partition 524284 0 -2 /tmp/swap file 131068 0 -3
  • 使用 swapoff 關掉 swap file,并設置自動啟用:
  • [root@study ~]# nano /etc/fstab /tmp/swap swap swap defaults 0 0# 為何這里不要使用 UUID 呢?這是因為系統僅會查詢區塊設備 (block device) 不會查詢文件!# 所以,這里千萬不要使用 UUID,不然系統會查不到喔![root@study ~]# swapoff /tmp/swap /dev/vda6 [root@study ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1048572 100380 -1# 確定已經回復到原本的狀態了!然后準備來測試!![root@study ~]# swapon -a [root@study ~]# swapon -s# 最終你又會看正確的三個 swap 出現啰!這也才確定你的 /etc/fstab 設置無誤!

    swap 在目前的桌面電腦來講,存在的意義已經不大了!這是因為目前的 x86 主機所含的內存實在都太大了 (一般入門級至少也都有 4GB 了),所以, Linux 系統大概都用不到 swap 這個玩意兒的。不過, 如果是針對服務器或者是工作站這些常年上線的系統來說的話,那么,無論如何,swap 還是需要創建的。

    五、補充

    5.1、利用 GNU 的 parted 進行分區行為(Optional)

    gdisk/fdisk 很快速的將分區切割妥當,不過 gdisk 主要針對 GPT 而 fdisk 主要支持 MBR ,對 GPT 的支持還不夠! 所以使用不同的分區時,得要先查詢到正確的分區表才能用適合的指令,好麻煩!有沒有同時支持的指令呢?有的!那就是 parted。

    parted 可以直接在一行命令行就完成分區,是一個非常好用的指令!它常用的語法如下:

    parted [設備] [指令 [參數]]

    選項與參數:
    指令功能:

    • 新增分區:mkpart [primary|logical|extended] [ext4|vfat|xfs] 開始 結束
    • 顯示分區:print
    • 刪除分區:rm [partition]

    范例一:以 parted 列出目前本機的分區表數據

    [root@study ~]# parted /dev/vda print Model: Virtio Block Device (virtblk) <==磁盤接口與型號 Disk /dev/vda: 42.9GB <==磁盤文件名與容量 Sector size (logical/physical): 512B/512B <==每個扇區的大小 Partition Table: gpt <==是 GPT 還是 MBR 分區 Disk Flags: pmbr_boot Number Start End Size File system Name Flags 1 1049kB 3146kB 2097kB bios_grub 2 3146kB 1077MB 1074MB xfs 3 1077MB 33.3GB 32.2GB lvm 4 33.3GB 34.4GB 1074MB xfs Linux filesystem 5 34.4GB 35.4GB 1074MB ext4 Microsoft basic data 6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
  • Number:這個就是分區的號碼!舉例來說,1號代表的是 /dev/vda1 的意思;
  • Start:分區的起始位置在這顆磁盤的多少 MB 處,他以容量作為單位;
  • End:此分區的結束位置在這顆磁盤的多少 MB 處;
  • Size:由上述兩者的分析,得到這個分區有多少容量;
  • File system:分析可能的文件系統類型為何的意思;
  • Name:就如同 gdisk 的 System ID 之意。
  • 范例二:將 /dev/sda 這個原本的 MBR 分區表變成 GPT 分區表!(危險!危險!勿亂搞!無法復原!)

    [root@study ~]# parted /dev/sda print Model: ATA QEMU HARDDISK (scsi) Disk /dev/sda: 2148MB Sector size (logical/physical): 512B/512B Partition Table: msdos # 確實顯示的是 MBR 的 msdos 格式喔! [root@study ~]# parted /dev/sda mklabel gpt Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? y [root@study ~]# parted /dev/sda print# 你應該就會看到變成 gpt 的模樣!只是...后續的分區就全部都死掉了!

    范例三:創建一個約為 512MB 容量的分區

    [root@study ~]# parted /dev/vda print .....(前面省略)..... Number Start End Size File system Name Flags .....(中間省略)..... 6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap # 要先找出來下一個分區的起始點! [root@study ~]# parted /dev/vda mkpart primary fat32 36.0GB 36.5GB# 由于新的分區的起始點在前一個分區的后面,所以當然要先找出前面那個分區的 End 位置!# 然后再請參考 mkpart 的指令功能,就能夠處理好相關的動作![root@study ~]# parted /dev/vda print .....(前面省略)..... Number Start End Size File system Name Flags 7 36.0GB 36.5GB 522MB primary [root@study ~]# partprobe [root@study ~]# lsblk /dev/vda7 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda7 252:7 0 498M 0 part # 要確定它是真的存在才行! [root@study ~]# mkfs -t vfat /dev/vda7 [root@study ~]# blkid /dev/vda7 /dev/vda7: SEC_TYPE="msdos" UUID="6032-BF38" TYPE="vfat" [root@study ~]# nano /etc/fstab UUID="6032-BF38" /data/win vfat defaults 0 0 [root@study ~]# mkdir /data/win [root@study ~]# mount -a [root@study ~]# df /data/win Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda7 509672 0 509672 0% /data/win

    事實上,應該使用 gdisk 來處理 GPT 分區就好了!不過,某些特殊時刻,例如要自己寫一只腳本,讓分區全部一口氣創建, 不需要 gdisk 一條一條指令去進行時,那么 parted就非常有效果了!因為他可以直接進行 partition 而不需要跟用戶互動!這就是它的最大好處!

    總結

    以上是生活随笔為你收集整理的【Linux】Linux 磁盘与文件系统管理命令的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。