Linux下磁盤分區、卸載和磁盤配額

目錄node

一:查看磁盤信息linux

二:Linux磁盤分區windows

三:Linux分區的卸載bash

四:Linux磁盤配額工具


一:查看磁盤信息

 fdisk : 這個命令是磁盤分區表操做工具,fdisk能將磁盤分區,同時也能爲每一個分區指定分區類型,總的來講,fdisk就是磁盤工具post

  • fdisk -l : 查看硬盤分區表。 從這裏咱們能夠看出,此係統中掛載了一塊硬盤 sda。這塊硬盤有三個分區,分別爲 sda1,sda2和sda5。sda1是主分區,能夠引導啓動,分區類型是Linux;sda2是extend擴展分區,sda5是邏輯分區,sda5的Type類型是swap,因此可知sda5是交換分區。sda=sda1+sda2+sda5

  • df -Th : 顯示已掛載的磁盤文件系統。

  • cat  /proc/partitions : 顯示已識別的全部分區

二:Linux磁盤分區

在windows下硬盤分區很簡單,有專門的磁盤管理工具,還有衆多的第三方軟件能夠對硬盤進行分區,都是圖形化的,操做簡單方便。因此這裏咱們就很少說。性能

今天主要將的是在Linux下用 fdisk 這個命令來對硬盤進行分區的。Linux下對硬盤分區大體能夠分爲七步。測試

  1. 添加並識別硬件設備       fdisk  -l    查看是否識別  或者   ls  -l  /dev/sdb 查看是否有這個設備
  2. 建立分區並識別分區       fdisk  /dev/sdb        按照步驟一步步對硬盤分區,而後保存退出
  3. 製做文件系統                 mkfs.ext4  /dev/sdb1       對sdb硬盤的第一個分區製做ext4文件系統
  4. 製做磁盤標籤                 e2lable  /dev/sdb1           newpart  給分區起一個別名
  5. 建立掛載點                    mkdir  /mnt/sdb1              在/mnt 目錄下新建一個掛載點
  6. 將分區信息寫入文件系統分區表       修改/etc/fstab文件,將分區信息寫入,保存退出
  7. 掛載文件系統                 mount -a   讀取fstab文件,掛載文件中全部文件系統。  df -Th  查看是否掛載上

第一步:我係統原來有一塊硬盤 /dev/sda 大小60G,後來我再加了一個20G的硬盤,能夠看到,已經識別到了: /dev/sdbspa

第二步:接下來我要對 sdb 進行分區,使用 fdisk   /dev/sdb 命令 ,進入 fdisk 模式。這時,有好多選項:.net

  •   n 建立新的磁盤分區
  •   d 刪除已存在的磁盤分區
  •   l 查看支持的磁盤分區類型
  •   t 轉換分區類型
  •   p 查看磁盤的分區信息
  •   w 保存修改並退出
  •   q 不保存直接退出

咱們輸入 l 查看一下支持哪些磁盤分區類型,能夠看到,支持這麼多種分區類型。

咱們輸入 n  建立新的磁盤分區。

而後讓咱們選擇Partition Type 分區類型,默認是 primary 主分區,還有 extend 擴展分區。咱們選擇默認,直接回車便可。

而後讓咱們選擇分區數字,範圍1-4。默認是從1開始的。若是上一步選的是擴展分區,則選擇4。咱們直接回車默認便可。

而後讓咱們選擇扇區起始編號,默認是2048,咱們也選默認,回車便可。

而後就讓咱們輸入這個分區的大小了。這裏咱們輸入的是 +5G ,即第一塊分區的大小是5G。

這樣,咱們就已經建好了一個標準的Linux格式的分區類型了。

咱們再建四個分區,一個swap分區類型的sdb2分區,一個FAT32分區類型的sdb3分區。一個extend擴展分區sdb4,擴展分區裏面有一個邏輯分區 sdb5。

sdb2和sdb3都是主分區,創建方法和第一個差很少,只不過建成後輸入 t 而後修改分區類型,再輸入對應的分區類型ID便可。

擴展分區sdb4和邏輯分區sdb5創建方法有點不一樣。創建sdb4的時候,選擇分區類型 e ,即擴展分區。而後一路回車便可。就是把剩下的全部空間都給sdb4。sdb4只是至關於一個容器,並不能真正的使用,要在其中創建邏輯分區纔可使用。因此咱們新建邏輯分區sdb5,一路回車便可。就是把擴展分區的容量都給了邏輯分區sdb5了。而後輸入 p 查看已分配的分區。輸入 w 保存退出!

識別新分區: partprobe   /dev/sdb  

cat   /proc/partitions   查看已識別的分區。這裏咱們能夠看到已經識別到了咱們剛剛創建的全部分區。

第三步:建立好了新分區後,咱們就要對新分區分配文件系統了,不一樣的分區類型有不一樣的文件系統,使用的指令也不同。擴展分區是一個容器,不用分配文件系統。sdb2交換分區類型是用命令 mkswap。其餘幾個分區類型用的是 mkfs 命令,sdb1和sdb5用的是標準的ext4文件系統,sdb3用的是vfat文件系統。(原本sdb5想用xfs文件系統,結果kali不支持)

第四步(可選):咱們就能夠給分區製做LABEL標籤了,也就是別名,這一步可作可不作。只不過在最後修改fstab文件的時候能夠用別名表示分區。e2label  /dev/sdb1   newpart   。而後使用 blkid 能夠查看已經制做好的文件系統的信息。

第五步: 咱們就去/mnt/ 文件下創建掛載點,分別是 sdb1 、sdb3 、sdb5的掛載點。sdb2 交換分區不須要掛載點,sdb4擴展分區也不須要掛載點。

第六步: 咱們就能夠去修改 /etc/fstab 文件了,把咱們的分區信息寫入進去,保存退出,這裏要注意的是swap分區類型的掛載點就是swap,文件系統也是swap。這裏有6個字段:

  1.  第一列表示待掛載的文件系統,掛載方式能夠是設備路徑(/dev/sdb1),能夠是LABEL,能夠是UUID
  2.  第二列是掛載點,表示設備使用後,從那個接入點使用磁盤空間
  3.  第三列是文件系統類型,製做文件系統時的格式寫在這個位置
  4.  第四列是掛載時的磁盤參數,默認包含可讀可寫等
  5.  第五列是是否對磁盤作dump備份
  6.  第六列是是否對磁盤作fsck檢查

第七步: 就是掛載文件系統了,使用mount -a  ,就是掛載fstab文件中的全部文件系統。

而後使用 df -Th  查看已掛載的全部文件系統。

swap分區sdb2不顯示在這裏,由於它沒有掛載點。

extend擴展分區sdb4也不會顯示在這裏,由於他僅僅是一個分區,並無分配文件系統。

swap分區的做用是建立一個虛擬內存,開啓虛擬內存的指令爲 swapon -a,將開啓全部fstab文件中的swap分區
關閉使用swapoff,若是隻是關閉一個分區,swapoff   /dev/sdb2,關閉全部 swapoff -a
查看虛擬內存空間變化可使用 free -m   ,查看當前的虛擬內存能夠用 swapon -s

能夠看到,開啓了咱們建立的虛擬內存後,虛擬內存數量多了一個,虛擬內存空間也變大了

寫了一個腳本實現自動分區,目前只支持分配主分區和標準的linux文件系統(ext4/xfs)的分區

#! /bin/bash
# Author:謝公子
# Date:2018-10-13
# Function:對硬盤進行分區,獲得一個標準的linux文件系統(ext4/xfs)的主分區
cat /proc/partitions > old
read -p "請輸入你要分區的硬盤(寫絕對路徑,如:/dev/sda):" A
if [ -e $A ];then
  echo "true"
else
  echo "該設備不存在!!"
  exit
fi
read -p "請輸入你要建立的磁盤分區類型(這裏只能是主分區,默認按回車便可):" B
read -p "請輸入分區數字,範圍1-4,默認從1開始,默認按回車便可:" C
read -p "請輸入扇區起始表號,默認按回車便可:" D
read -p "請輸入你要分區的分區大小(格式:如 +5G ):" E
fdisk $A << EOF
n
p
$C
$D
$E
w
EOF
echo "一個標準的linux文件系統的分區已經創建好!!"
partprobe $A
echo "-------------------------------"
cat /proc/partitions
cat /proc/partitions > new
F=`diff new old | grep "<" | awk '{print $5}'`
echo "-------------------------------"
echo $F
echo "你想對新分區設定什麼類型的文件系統?有如下選項:"
echo "A:ext4文件系統"
echo "B:xfs文件系統"
read -p "請輸入你的選擇:" G
case $G in
        a|A)
           mkfs.ext4 /dev/$F
           echo "該分區將被掛載在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
            mkdir /mnt/$F
           fi
           n=`cat /etc/fstab | grep /dev/$F| wc -l`
           if [ $n -eq 0 ];then
              echo "/dev/$F     /mnt/$F     ext4         defaults          0      0" >> /etc/fstab
           else
              sed -i '/^\/dev\/$F/c\/dev/$F     /mnt/$F     ext4         defaults          0      0' /etc/fstab
           fi
           mount -a
           df -Th
;;
        b|B)
           mkfs.xfs -f /dev/$F
           echo "該分區將被掛載在 "/mnt/$F" 下" 
           m=`ls /mnt/|grep $F | wc -l`
           if [ $m -eq 0 ];then
              mkdir /mnt/$F
           fi
           n=`cat /etc/fstab | grep /dev/$F | wc -l`
           if [ $n -eq 0 ];then
              echo "/dev/$F     /mnt/$F      xfs       defaults          0      0" >> /etc/fstab
           else
              sed -i '/^\/dev\/$F/c\/dev/$F     /mnt/$F     xfs         defaults          0      0' /etc/fstab
           fi
           mount -a
           df -Th
;;
        *)
           echo "你的輸入有誤!!"
esac

三:Linux分區的卸載

如今把咱們上面創建的幾個分區都給卸載了

第一步:先卸載全部已掛載的分區。先查看哪些分區已經掛載上 df -Th ,再依次卸載。最後關閉虛擬分區,由於系統原來就分配有虛擬分區,因此咱們只關閉咱們本身新建的虛擬分區 swapoff   /dev/sdb2 。再最後查看是否已卸載完

若是umount的時候,顯示設備正忙。可使用 fuser  -mv  /mnt/sdbx  來查看哪一個進程在使用這個設備,而後kill掉便可。

第二步:修改 /etc/fstab 文件,把咱們這幾個分區的信息都給刪除了或者註釋掉

第三步:進入/dev/sdb 裏面, fdisk  /dev/sdb  ,一路按 d ,把建立的全部分區給刪除了,而後 p 查看是否刪除幹嗎 ,w 保存。

刷新一下 sdb 磁盤的分區信息  partprobe  /dev/sdb   。

而後查看識別到的分區信息  cat   /proc/partitions ,能夠看到已經刪除乾淨了。

四:Linux磁盤配額

管理員能夠爲用戶所能使用的磁盤空間進行配額限制,每一用戶只能使用最大配額範圍內的磁盤空間。既可對用戶存儲文件數量作限制,也可對用戶存儲文件大小作限制

磁盤配額的分爲五步:

  1. 掛載的同時須要爲文件系統添加支持配額的選項   usrquota , grpquota
  2. 配額檢查 quotacheck   -augcv ,在分區中生成配額文件 aquota.useraquota.group
  3. 爲用戶創建配額信息 edquota  -u/g   用戶名/組名
  4. 開啓/關閉配額功能    quotaon  -a  、 quotaoff -a
  5. 查看配額信息    quota  -u 、 quota  -g  、 repquota  -a

這裏我用Red hat7作實驗,在Red hat7上新建了一個sdb1的分區,用sdb1作磁盤配額實驗。

第一步:修改 /etc/fstab文件,找到sdb1所對應的掛載信息,在磁盤參數defaults後面加上 usrquota,grpquota,意思是給這塊分區添加用戶配額和組配額的功能。

設備啓用了配額後,須要將文件系統重載。

umount /mnt/sdb1 ;mount -a (或直接從新掛載  mount -o remount   /mnt/sdb1)。

而後查看配額信息是否已經添加進去了  mount | grep  sdb1

第二步:執行配額檢查 quotacheck  -augcv  

  • -a 掃描全部支持配額的分區
  • -u 掃描磁盤並計算用戶所佔用的文件數
  • -g 掃描磁盤並計算組所佔用的文件數
  • -c 建立配額文件 aquota.user 和 aquota.group
  • -v 顯示詳細信息

執行後,會檢查全部支持磁盤配額的分區,若是分區以前有配置配額,先關閉,再次開啓會有配置文件被更新。
若是是第一次建立磁盤配額,那麼會提示以前沒有任何配額文件,而且會在分區中生成配額文件 aquota.user 和 aquota.group

第三步:爲用戶或組創建配額信息
edquota  -u   xie   編輯用戶 xie 的配額
edquota  -g   IT    編輯組IT的配額
一共有六個字段
 Filesystem                   blocks       soft       hard      inodes      soft     hard
 /dev/sdb1                       0             80M      100M       0             8         10
 前三個字段表示針對文件空間限制,後三個字段表示針對文件數量限制

  1.  第一個字段 blocks 表示用戶在文件系統中已佔用的空間統計,通常咱們不作修改
  2.  第二個字段 soft 表示用戶建立文件時,文件空間的警告閾值,超過數值則提示(軟限制通常爲提醒,小於硬限制便可,不設置或者超過硬限制都無心義)
  3.  第三個字段 hard 表示用戶的空間限制,最大使用的磁盤空間
  4.  第四個字段 inodes 表示用戶已建立文件的數量統計,通常咱們不作修改
  5.  第五個字段 soft 表示用戶在文件系統中建立文件的數量警告閾值,超過數量則提示
  6.  第六個字段 hard 表示用戶建立文件的數量限制,最大建立文件數量

這個截圖的意思是限制用戶xie在此磁盤中最大使用空間100M ,而且使用超過80M就提示。最多使用建立10個文件,而且超過8個文件就提示。

第四步:開啓 / 關閉配額 功能 

若是開啓的時候顯示設備或資源忙,就先關閉全部配額,再從新打開。

quotaon  -a  表示開啓支持配額功能的全部分區   
quotaoff  -a   表示關閉支持配額功能的全部分區   

   

第五步:查看配額信息

查看配額信息的方式有兩種。

  •  quota -u 用戶名 只查看用戶的配額信息
  •  quota -g 組名 只查看組的配額信息
  •  repquota 設備 查看設備內的配額信息

注:只有當用戶在這個分區上有數據時,才能夠看到配額信息,不然只顯示none

第六步:驗證配額

配置好了磁盤配額後,咱們就去驗證了,切換到 xie 用戶 ,提早給測試分區權限。

咱們複製文件到磁盤上,每次複製30M ,當複製到第三次的時候,達到了90M>80M ,因此就提示咱們磁盤緊張了。當第四次複製時,就提示已經超過磁盤配額了,第四次只能複製10M的文件過去。

我在上面建立了8個文件,當建立第9個的時候提示我磁盤緊張了。當建立第11個,直接提示我磁盤限制,建立不了第11個了。

相關文章: Linux下性能監控與進程管理

                   Linux下邏輯卷LVM的管理和RAID磁盤陣列

                   硬盤分區、系統引導、文件系統入門

相關文章
相關標籤/搜索