Linux學習筆記12—磁盤管理

 

1、查看磁盤或目錄的容量node

一、  df命令linux

做用:查看已掛載磁盤的總容量、使用容量、剩餘容量等,能夠不加任何參數,默認是按k爲單位顯示的安全

參數:bash

-I : 查看inodes使用情況服務器

-h: 使用合適的單位顯示,例如 ‘G’app

-k: 以K 爲單位顯示async

-m: 以 M 爲單位顯示工具

注意:/dev/shm爲內存掛載點,若是你想把文件放到內存裏,就能夠放到/dev/shm/目錄下測試

二、  du命令ui

做用:用來查看某個目錄或文件所佔空間大小.

格式:du [-abckmsh] [文件或者目錄名] 經常使用的參數有:

-a: 所有文件與目錄大小都列出來; 若是不加任何選項和參數只列出目錄(包含子目錄)大小。

若是du不指定單位的話,默認顯示單位爲K.

「-b」 列出的值以bytes爲單位輸出。

「-k」 以KB爲單位輸出,和默認不加任何選項的輸出值是同樣的。

「-m」 以MB爲單位輸出

「-h」 系統自動調節單位,例如文件過小可能就幾K,那麼就以K爲單位顯示,若是大到幾G,則就以G爲單位顯示。

「-c」 最後加總,最後顯示文件的總用量。

「-s」 只列出總和,不顯示具體的詳細信息。

三、  fdisk命令

做用:是Linux下硬盤的分區工具,只能劃分小於2T的分區。

格式:fdisk [-l ] [設備名稱] 選項只有一個。

「-l」 後邊不跟設備名會直接列出系統中全部的磁盤設備以及分區表,加上設備名會列出該設備的分區表。

注意:

「fdisk」 若是不加 「-l」 則進入另外一個模式,在該模式下,能夠對磁盤進行分區操做。

分區經常使用的幾個選項:

‘m’ 會列出經常使用的命令:

「p」 打印當前磁盤的分區狀況。

‘n’ 創建一個新的分區。

‘w’ 保存操做。

‘q’ 退出。

‘d’ 刪除一個分區

(在linux中最多隻能建立4個主分區,那若是你想多建立幾個分區如何作?很容易,在建立完第三個分區後,建立第四個分區時選擇擴展分區。)這時候再分區和之前有區別了,再也不選擇是主分區仍是擴展分區了,而是直接定義大小。當分完三個主分區後,第四個擴展分區須要把剩餘的磁盤空間所有劃分給擴展分區,否則的話剩餘的空間會浪費,由於分完擴展分區後,再劃分新的分區時是在已經劃分的擴展分區裏來分的)

若是把第一個分區分爲擴展分區,而且把所有空間都分給擴展分區的話,再繼續分區的話,會提示的分區類型爲主分區仍是邏輯分區(logical), 用 ‘l’ 表示邏輯分區,邏輯分區的id是從5開始的,由於前四個id爲主分區或者擴展分區。

2、格式化磁盤分區

一、 mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4
這幾個命令的做用都同樣。
mke2fs 經常使用選項
‘-b’ 分區時設定每一個數據區塊佔用空間大小,目前支持1024, 2048 以及4096 bytes每一個塊。若是超過4096則設備不能正常掛載。
‘-i’ 設定inode的大小
‘-N’ 設定inode數量,有時使用默認的inode數不夠用,因此要自定設定inode數量。
‘-c’ 在格式化前先檢測一下磁盤是否有問題,加上這個選項後會很是慢
‘-L’ 預設該分區的標籤label
‘-j’ 創建ext3格式的分區,若是使用mkfs.ext3 就不用加這個選項了
‘-t’ 用來指定什麼類型的文件系統,能夠是ext2, ext3 也能夠是 ext4.
例如:
Mke2fs –t ext4 /dev/sda1等價於mkfs.ext4 /dev/sda1
二、 e2label 命令
做用:用來查看或修改分區的標籤

3、磁盤的掛載/卸載

在掛載某個分區前須要先創建一個掛載點,這個掛載點是以目錄的形式出現的。一旦把某一個分區掛載到了這個掛載點(目錄)下,那麼再往這個目錄寫數據使,則都會寫到該分區中。這就須要你注意一下,在掛載該分區前,掛載點(目錄)下必須是個空目錄。其實目錄不爲空並不影響所掛載分區的使用,可是一旦掛載上了,那麼該目錄下之前的東西就不能看到了。只有卸載掉該分區後才能看到。

一、  mount 命令

格式:mount 選項 掛載的硬盤  掛載位置

做用:若是什麼都不加則能夠查看當前系統已經掛載的全部分區,以及分區文件系統的類型,掛載點和一些選項等信息,因此你若是想知道某個分區的文件系統類型直接用該命令查看便可

經常使用選項:

-a: 把/etc/fstab中出現的全部磁盤分區掛載上

-t: 選項用來指定掛載的分區類型,默認不指定會自動識別

-o: 選項用來指定掛載的分區有哪些特性,即 「/etc/fatab」 配置文件中第四列的那些選項

二、/etc/fstab

一、  該文件是系統啓動時須要掛載的各個分區。第一列就是分區的標識,能夠寫成分區LABEL/分區的UUID/分區名;第二列是掛載點;第三列是分區格式;第四列是mount的一些掛載參數,通常狀況下,直接寫defaults便可;第五列數字表示是否被dump備份,是的話這裏就是1,不然就是0;第六列是開機時是否自檢磁盤。1,2都表示檢測,0表示不檢測,在Redhat/CentOS中,這個1,2還有個說法,/ 分區必須設爲1,並且整個fstab中只容許出現一個1,這裏有一個優先級的說法。1比2優先級高,因此先檢測1,而後再檢測2,若是有多個分區須要開機檢測那麼都設置成2吧,1檢測完了後會同時去檢測2。

二、  第四列經常使用參數介紹

「auto/noauto」 : 開機自動掛載/不自動掛載;

「default」 : 按照大多數永久文件系統的缺省值設置掛載定義,它包含了rw, suid, dev, exec, auto, nouser, async

「ro」 : 按只讀權限掛載 ;

「rw」 : 按可讀可寫權限掛載 ;

「exec/noexec」 : 容許/不容許可執行文件執行,但千萬不要把根分區掛載爲noexec,那就沒法使用系統了,連mount命令都沒法使用了,這時只有從新作系統了;

「user/nouser」 : 容許/不容許root外的其餘用戶掛載分區,爲了安全考慮,請用nouser ;

「suid/nosuid」 : 容許/不容許分區有suid屬性,通常設置nosuid ;

「usrquota」 : 啓動使用者磁盤配額模式,磁盤配額相關內容在後續章節會作介紹;

「grquota」 : 啓動羣組磁盤配額模式;

三、  blkid 命令

做用:獲取各分區的UUID:

經過UUID或者LABEL 掛載磁盤分區;這樣能夠避免由於硬盤拆下以後在從新接入而接入錯誤的位置的時候出現的問題

若是想讓某個分區開機後就自動掛載,有兩個辦法能夠實現:

u  在 /etc/fstab 中添加一行;

u  把掛載命令寫到 /etc/rc.d/rc.local 文件中去,阿銘會常常把想要開機啓動的命令加到這個文件中。系統啓動完後會執行這個文件中的命令,因此只要你想開機後運行什麼命令通通寫入到這個文件下面吧,直接放到最後面便可,阿銘把掛載的命令放到該文件的最後一行了:

四、  umonut 命令

做用:卸載掛載的磁盤

注意:後邊能夠跟掛載點,也能夠跟分區名(/dev/hdb1), 可是不能夠跟LABEL和UUID.

若是卸載的時候是在當前目錄下是不能卸載成功的,可是加上參數 –l  以後就能夠卸載成功;或者切換到其餘的目錄也能夠卸載成功

4、創建一個swap文件增長虛擬內存

基本的思路就是:創建swapfile -> 格式化爲swap格式 -> 啓用該虛擬磁盤。

一、打開終端,切換到root用戶,輸入:free -m查看內存狀態

[root@lxt lxt]# free -m
             total       used       free     shared    buffers     cached
Mem:           498        357        141          0         27        162
-/+ buffers/cache:        167        331
Swap:         1023          0       1023

二、輸入df -B M(或df -m)查看各分區當前使用狀況

[root@lxt lxt]# df -B M
文件系統               1M-塊        已用     可用 已用% 掛載點
/dev/mapper/vg_lxt-lv_root
                        12875M     4059M     8162M  34% /
/dev/sda7                 194M       14M      170M   8% /boot
tmpfs                     250M        1M      249M   1% /dev/shm
(fdisk -l可查看磁盤分區狀況)

三、選擇一個較大的分區,創建分區文件:

[root@lxt lxt]# dd if=/dev/zero of=/swapadd bs=1024 count=524288
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied,13.0709 秒,41.1 MB/秒

以上命令在根目錄新建一個名爲swapadd,大小爲512M的虛擬內存文件;if 指定指定源,基本上除了 「/dev/zero」 外基本上不會寫別的,而/dev/zero 是UNIX系統特有的一個文件,它能夠提供源源不斷的 「0」;「of」 指定目標文件, 「bs」 定義塊的大小, 「count」 定義塊的數量,這兩個參數的多少決定了目標文件的大小,目標文件大小 = bs x count.

四、移動該文件到空間較大的其餘分區:

[root@lxt lxt]# mkdir /mnt/swap
[root@lxt /]# mv swapadd /mnt/swap

五、執行如下命令啓用虛擬內存並重啓電腦

[root@lxt /]# mkswap /mnt/swap/swapadd
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=a5c8b651-6f64-4414-bb5f-580b742acfce
[root@lxt /]# swapon /mnt/swap/swapadd

查看內存:

[root@lxt /]# free -m
             total       used       free     shared    buffers     cached
Mem:           498        492          6          0         15        302
-/+ buffers/cache:        174        323
Swap:         1535          0       1535

六、若是不須要使用新增的虛擬內存,則輸入:
swapoff -v /mnt/swap/swapadd

5、磁盤配額

磁盤配合其實就是給每一個用戶分配必定的磁盤額度,只容許他使用這個額度範圍內的磁盤空間。在linux系統中,是多用戶多任務的環境,因此會有不少人共用一個磁盤的狀況。針對每一個用戶去限定必定量的磁盤空間是有必要的,這樣才顯得公平。隨着硬件成本的下降,服務器上的磁盤資源彷佛再也不刻意的去限制了,因此磁盤配額也就無關緊要了,可是你也須要了解一下這部份內容,用到時必須會操做。
在linux中,用來管理磁盤配額的東西就是quota了。若是你的linux上沒有quota,則須要你安裝這個軟件包 quota-3.13-5.el5.RPM (其實版本是多少無所謂了,關鍵是這個軟件包)。quota在實際應用中是針對整個分區進行限制的。好比,若是咱們限制了/dev/sdb1這個分區,而/dev/sdb1 是掛載在/home 目錄下的,那麼/home 全部目錄都會受到限制。
quota 這個模塊主要分爲quota quotacheck quotaoff quotaon quotastats edquota setquota warnquota repquota這幾個命令,下面就分別介紹這些命令。
命令 : quota
「quota」 用來顯示某個組或者某個使用者的限額。
語法:quota [-guvs] [user,group]
「-g」 顯示某個組的限額
「-u」 顯示某個用戶的限額
「-v」 顯示的意思
「-s」 選擇inod或硬盤空間來顯示
命令 : quotacheck
「quotacheck」 用來掃描某一個磁盤的quota空間。
語法:quotacheck [-auvg] /path
「-a」 掃描全部已經mount的具備quota支持的磁盤
「-u」 掃描某個使用者的文件以及目錄
「-g」 掃描某個組的文件以及目錄
「-v」 顯示掃描過程
「-m」 強制進行掃描
命令 : edquota
「edquota」 用來編輯某個用戶或者組的quota值。
語法:edquota [-u user] [-g group] [-t]
「-u」 編輯某個用戶的quota
「-g」 編輯某個組的quota
「-t」 編輯寬限時間
「-p」 拷貝某個用戶或組的quota到另外一個用戶或組
當運行 edquota -u user 時,系統會打開一個文件,你會看到這個文件中有7列,它們分別表明的含義是:
「Filesystem」 磁盤分區,如/dev/sdb5
「blocks」 當前用戶在當前的Filesystem中所佔用的磁盤容量,單位是Kb。該值請不要修改。
「soft/hard」 當前用戶在該Filesystem內的quota值,soft指的是最低限額,能夠超過這個值,但必需要在寬限時間內將磁盤容量下降到這個值如下。hard指的是最高限額,即不能超過這個值。當用戶的磁盤使用量高於soft值時,系統會警告用戶,提示其要在寬限時間內把使用空間下降到soft值之下。
「inodes」 目前使用掉的inode的狀態,不用修改。
命令 : quotaon
「quotaon」 用來啓動quota,在編輯好quota後,須要啓動才能是quota生效
語法:quotaon [-a] [-uvg directory]
「-a」 所有設定的quota啓動
「-u」 啓動某個用戶的quota
「-g」 啓動某個組的quota
「-s」 顯示相關信息
命令 : quotaoff
「quotaoff」 用來關閉quota, 該命令經常使用只有一種狀況 quotaoff -a 關閉所有的quota.
以上講了不少quota的相關命令,那麼接下來阿銘教你如何在實踐應用中去作這個磁盤配額。整個執行過程以下:
首先先確認一下,你的/home目錄是否是單獨的掛載在一個分區下,用df 查看便可。若是不是則須要你跟我一塊兒作。不然這一步便可省略。

/home並無單獨佔用一個分區。因此須要把/home目錄掛載在一個單獨的分區下,由於quota是針對分區來限額的。下面阿銘把 /dev/sdb5 掛載到/home 目錄下, 編輯 /etc/fstab 把剛纔添加的那行修改成:

保存 /etc/fstab 後,運行 mount -a 命令掛載所有的分區。

此時的 /home 爲一個單獨分區了。

1.創建測試帳戶

首先創建一個test用戶,則同時創建了一個test組。其中uid和gid都爲511 ,而後又創建一個test1帳號,使其加入test組,查看/etc/passwd文件發現test和test1用戶的gid都爲511.

[root@localhost ~]# useradd test
[root@localhost ~]# grep test /etc/passwd
test:x:511:511::/home/test:/bin/bash
[root@localhost ~]# useradd -g 511 test1
[root@localhost ~]# grep test1 /etc/passwd
test1:x:512:511::/home/test1:/bin/bash

2.打開磁盤的quota功能

默認linux並無對任何分區作quota的支持,因此須要咱們手動打開磁盤的quota功能,你是否記得,在前面內容中分析/etc/fstab文件的第四列時講過這個quota選項(usrquota, grpquota),沒錯,要想打開這個磁盤的quota支持就是須要修改這個第四列的。用vi編輯/etc/fstab 編輯剛纔加的那一行,以下:

UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7     /home        ext4    defaults,usrquota,grpquota     0 0

保存 /etc/fstab 後,從新掛載/home分區。

[root@localhost ~]# umount /home/
[root@localhost ~]# mount -a
[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb5 on /home type ext4 (rw,usrquota,grpquota)

使用 mount 命令能夠查看到 /home 分區已經加上了 「usrquota,grpquota」 兩個配額相關的參數。

3.掃描磁盤的使用者使用情況,併產生重要的aquota.group與aquota.user

這一步就須要用到quotacheck了,aquota.group與aqouta.user分別是組以及用戶磁盤配額須要的配置文件。若是沒有這兩個文件,則磁盤配額是不會生效的。

[root@localhost ~]# quotacheck -augv

可能會有一些錯誤信息,不要管它。看一看你的/home分區下是否多了兩個文件(aquota.group, aquota.user)

[root@localhost ~]# ll /home/
總用量 44
-rw------- 1 root  root  7168 5月  12 02:07 aquota.group
-rw------- 1 root  root  8192 5月  12 02:07 aquota.user
drwxr-xr-x 2 root  root  4096 5月  12 00:11 dir1
drwx------ 2 root  root 16384 5月  11 23:18 lost+found
drwx------ 3 test  test  4096 5月  12 01:59 test
drwx------ 3 test1 test  4096 5月  12 02:00 test1

若是有了,則能夠進入下一步了。

4.啓動quota配額

[root@localhost ~]# quotaon -av
/dev/sdb5 [/home]: group quotas turned on
/dev/sdb5 [/home]: user quotas turned on

5. 編輯用戶磁盤配額

先來設定test帳戶的配額,而後直接把test的配額拷貝給test1便可。這裏就須要用到edquota了。

[root@localhost ~]# edquota -u test

將下面內容

/dev/sdb5                        20          0          0          5        0        0

修改成:

/dev/sdb5                        20          20000          30000          5        0        0

其中單位是Kb,因此soft 值大約爲20Mb,hard值爲30Mb,保存這個文件,保存的方式跟vi一個文件的方式同樣的。下面將test的配額複製給test1.

[root@localhost ~]# edquota -p test test1

下面繼續設定寬限時間:

[root@localhost ~]# edquota -t

將7days 改成 1days

/dev/sdb5                     1days                  1days

下面查看一下test以及test1用戶的配額吧。

[root@localhost ~]# quota -uv test test1
Disk quotas for user test (uid 511):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      20   20000   30000               5       0       0
Disk quotas for user test1 (uid 512):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      20   20000   30000               5       0       0

6.編輯組磁盤配額

[root@localhost ~]# edquota -g test

修改成:.

/dev/sdb5                        40          40000          50000         10        0        0

設定組test的soft配額值爲40M,hard值爲50M。下面查看組test的配額。

[root@localhost ~]# quota -gv test
Disk quotas for group test (gid 511):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      40   40000   50000              10       0       0

7.設定開機啓動

前面已經講到啓動磁盤配額的命令是 quotaon -aug 因此要想開機啓動,只需將這條命令加入到 /etc/rc.d/rc.local文件便可。

[root@localhost ~]# echo "quotaon -aug" >> /etc/rc.d/rc.local

參考文檔:

http://www.apelearn.com/study_v2/

相關文章
相關標籤/搜索