天天看點

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

  • 一.df指令
    • 參數
    • 常見用法
  • 二.du指令
    • 簡介
    • 參數
    • 用法
  • 三.磁盤分區
    • 虛拟機增加硬碟
    • 檢視新增磁盤
    • parted劃分GPT分區
    • fdisk指令
  • 四.磁盤格式化
    • mke2fs
    • 參數
    • 示例
  • 五.磁盤挂載
    • mount指令
    • /etc/fstab
  • 六.手動增加swap空間
    • 增加swap交換檔案
    • dd指令
    • 删除swap交換檔案
  • 七.LVM詳解
    • 概述
    • 相關概念
    • 基本操作
      • 準備磁盤分區
      • 準備實體卷
    • 擴充邏輯卷
    • 縮減邏輯卷(xfs不支援)
    • xfs擴容
  • 八.RAID
    • 含義原理
    • RAID-0
    • RAID-1
    • RAID-1E
    • RAID-1+0
    • RAID-2
    • RAID-3
    • RAID-4
    • RAID-5
    • RAID-6

一.df指令

df - 報告檔案系統磁盤空間的使用情況

man df

檢視關于df指令的用法

參數

GNU 參數說明
       -a, --all
              列出包括BLOCK為0的檔案系統

       --block-size=SIZE use SIZE-byte blocks
              指定塊的大小

       -h,--huma-readable"
              用常見的格式顯示出大小(例如:1K 234M 2G)

       -H,--si"
              同上,但是這裡的1k等于1000位元組而不是1024位元組

       -i, --inodes
              用資訊索引點代替塊表示使用狀況
       -l, --local
              隻顯示本地檔案系統使用狀況

       -m, --megabytes
              以指定塊大小等于1048576位元組(1M)來顯示使用狀況

       --no-sync
              在取得使用資訊前禁止調用同步 (default)

       -P, --portability
              使用POSIX格式輸出

       --sync 在取得使用資訊前調用同步

       -t, --type=TYPE
              隻顯示指定類型(TYPE)的檔案系統
       -T, --print-type
              輸出每個檔案系統的類型

       -x, --exclude-type=TYPE
              隻顯示指定類型(TYPE)之外的檔案系統.

       -v (忽略)

       --     輸出該指令的幫助資訊并退出

       --version
              輸出版本資訊并退出
           

在系統裡直接輸入

df

[root@linux7- ~]# df
檔案系統          K-塊    已用     可用 已用% 挂載點
/dev/sda3           % /
devtmpfs                       % /dev
tmpfs                          % /dev/shm
tmpfs                       % /run
tmpfs                          % /sys/fs/cgroup
/dev/sda1                 % /boot
tmpfs                          % /run/user/0
           

Linux的磁盤是不能夠直接通路的,必須要有一個挂載點,根據挂載點才能找到磁盤,讀寫資料。

常見用法

  1. df -h

    用常見的格式顯示出大小(例如:1K 234M 2G)

    和隻用

    df

    指令相比,資料大小有了變化。
[root@linux7- ~]# df -h
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        G  G   G   % /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M   M  M   % /boot
tmpfs            M        M    % /run/user/0
           
  1. df -H

    這裡顯示的機關換算是1K=1000位元組,而

    df -h

    使用的是1K=1024位元組
[root@linux7- ~]# df -H
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        G  G   G   % /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M  M  M   % /boot
tmpfs           M       M    % /run/user/0
           

知識點1

我們在安裝作業系統時,隻給系統劃分了/ 、/boot、 /sawp三個分區,但是這裡使用

df

指令卻看到下面有很多挂載點,例如/dev、

/dev/shm、/run這些,事實上這些含有

tmpfs

的檔案系統,都是臨時的檔案系統。在這些挂載點裡即使寫了東西,重新開機之後也會消失。

/dev/shm

是記憶體,讀寫速度會很快,大小是實體記憶體的一半。

知識點2

如何檢視/swap大小?

[[email protected] ~]# free
              total        used        free      shared  buff/cache   available
Mem:                                        
Swap:                       
           
  1. df -i

    檢視分區有多少個Inode以及使用情況
[root@linux7- ~]# df -i
檔案系統          Inode 已用(I)  可用(I) 已用(I)% 挂載點
/dev/sda3                % /
devtmpfs                        % /dev
tmpfs                             % /dev/shm
tmpfs                           % /run
tmpfs                            % /sys/fs/cgroup
/dev/sda1                       % /boot
tmpfs                             % /run/user/0
           

inode多少是跟磁盤大小有關系的,分區後提前就規劃好了。

inode滿了即使磁盤還有空間,也寫不進去東西。是以有時候如果磁盤還有空間,但是寫不進去東西,可以使用

df -i

檢視inode使用情況。

4.

df -m

以兆為機關,檢視檔案系統大小

檔案系統       M-塊  已用  可用 已用% 挂載點
/dev/sda3            % /
devtmpfs                     % /dev
tmpfs                        % /dev/shm
tmpfs                        % /run
tmpfs                        % /sys/fs/cgroup
/dev/sda1                  % /boot
tmpfs                          % /run/user/0
           

二.du指令

簡介

du - 報告磁盤空間使用情況

報告指定的檔案已使用的磁盤空間的總量,包括在層次結構中以這些以指定檔案為根的目錄在内。這裡的“已使用的磁盤空間”意思為指定的檔案下的整個檔案層次結構所使用的空間。在沒給定參數的情況下,du 報告目前目錄所使用的磁盤空間。

參數

-a或-all 顯示目錄中個别檔案的大小。
-b或-bytes 顯示目錄或檔案大小時,以byte為機關。
-c或--total 除了顯示個别目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。
-D或--dereference-args 顯示指定符号連接配接的源檔案大小。
-h或--human-readable 以K,M,G為機關,提高資訊的可讀性。
-H或--si 與-h參數相同,但是K,M,G是以為換算機關。
-k或--kilobytes 以 bytes為機關。
-l或--count-links 重複計算硬體連接配接的檔案。
-L<符号連接配接>或--dereference<符号連接配接> 顯示選項中所指定符号連接配接的源檔案大小。
-m或--megabytes 以MB為機關。
-s或--summarize 僅顯示總計。
-S或--separate-dirs 顯示個别目錄的大小時,并不含其子目錄的大小。
-x或--one-file-xystem 以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。
-X<檔案>或--exclude-from=<檔案> 在<檔案>指定目錄或檔案。
--exclude=<目錄或檔案> 略過指定的目錄或檔案。
--max-depth=<目錄層數> 超過指定層數的目錄後,予以忽略。
--help 顯示幫助。
--version 顯示版本資訊。
           

用法

  1. du -s

    顯示目前目錄的總和已使用的磁盤空間
[root@linux7- ~]# du -s
   .
[root@linux7- ~]# du -s /root
   /root
           

預設機關為K

2.

du -sh

顯示機關,提高可讀性

[root@linux7- ~]# du -sh /root
M /root
[root@linux7- ~]# du -sh
M .
[root@linux7- ~]# du -sh /etc/passwd
K    /etc/passwd
           

知識點

[root@linux7- ~]# du -sh /etc/passwd
K    /etc/passwd
[root@linux7- ~]# ls -lh !$
ls -lh /etc/passwd
-rw-r--r--  root root K 月   : /etc/passwd
           

當我們使用du和ls檢視檔案時,發現大小是不一樣的。

du -sh

查詢出來是4K,

ls -lh

查詢出來是2.4K。這是為什麼?

因為

ls -lh

查詢出來的是檔案本身大小,而

du -sh

查詢出來是占用磁盤空間多少。這裡有一個“塊”的概念,後面會講到。

三.磁盤分區

虛拟機增加硬碟

右鍵打開虛拟機設定,點選添加

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

選擇硬碟,點選下一步

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

使用預設配置,點選下一步

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

預設選擇建立新虛拟磁盤,點選下一步

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

将大小更改為10G,其餘不需要改變,點選第一步

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

點選完成

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

可以看到這裡已經新加了一塊硬碟

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

伺服器是支援熱插拔的,可以自動識别。虛拟機裡是不能自動識别的,要想識别到新添加的硬碟需要重新開機

檢視新增磁盤

fdisk -l

檢視系統磁盤

[root@linux7- ~]# fdisk -l

磁盤 /dev/sda: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體):512 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
磁盤标簽類型:dos
磁盤辨別符:

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sda1   *                         Linux
/dev/sda2          411648     8800255     4194304   82  Linux swap / Solaris
/dev/sda3                      Linux

磁盤 /dev/sdb: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體):512 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
           

這裡可以看到下面有一個磁盤 /dev/sdb,這就是我們剛才新增的磁盤。

知識點

hd大多是IDE硬碟;sd大多是SCSI或移動存儲;

parted劃分GPT分區

parted指令可以劃分單個分區大于2T的GPT格式的分區,也可以劃分普通的MBR分區,fdisk指令對于大于2T的分區無法劃分(大于2.2TB的存儲空間用fdisk不支援,需要采用parted來分區),是以用fdisk無法看到parted劃分的GPT格式的分區。

我們在課上講的fdisk分區工具,它的分區格式為MBR,特點是,最多分4個主分區,磁盤大小不能超過2T。而GPT分區格式,突破了這些限制,它沒有主分區、擴充分區、邏輯分區之分,在一塊磁盤上最多可以分128個分區出來,支援大于2T的分區,最大卷可達18EB。 相信,随着存儲級别的更新,将來的分區格式逐漸會淘汰MBR,而GPT成為主流。

  • 兩種模式

    1、指令行模式: parted [option] device [command] ,該模式可以直接在指令行下對磁盤進行分區操作,比較适合程式設計應用。

    2、互動模式:parted [option] device 類似于使用fdisk /dev/xxx

  • 分區類型

    MBR:MBR分區表(即主引導記錄)大家都很熟悉。所支援的最大卷:2T,而且對分區有限制:最多4個主分區或3個主分區加一個擴充分區

    GPT: GPT(即GUID分區表)。是源自EFI标準的一種較新的磁盤分區表結構的标準,是未來磁盤分區的主要形式。與MBR分區方式相比,具有如下優點。突破MBR 4個主分區限制,每個磁盤最多支援128個分區。支援大于2T的分區,最大卷可達18EB。

  • 使用方法

    parted [options] [device [command [options...]...]]

options

    -h  顯示幫助資訊

    -l  顯示所有塊裝置上的分區

    device

    對哪個塊裝置進行操作,如果沒有指定則使用第一個塊裝置

    command [options...]

    check partition  

    對分區做一個簡單的檢測

    cp [source-device] source dest  

    複制source-device裝置上的source分區到目前裝置的dest分區

    mklabel label-type 

    建立新分區表類型,label-type可以是:"bsd", "dvh", "gpt",  "loop","mac", "msdos", "pc98", or "sun" 一般的pc機都是msdos格式,如果分區大于T則需要選用gpt格式的分區表。

    mkfs partition fs-type  

    在partition分區上建立一個fs-type檔案系統,fs-type可以是:"fat16", "fat32", "ext2", "linux-swap","reiserfs" 注意不支援ext3格式的檔案系統,隻能先分區然後用專有指令進行格式化。

    mkpart part-type [fs-type] start end 

    建立一個part-type類型的分區,part-type可以是:"primary", "logical", or "extended" 如果指定fs-type則在建立分區的同時進行格式化。start和end指的是分區的起始位置,機關預設是M。

    eg:mkpart  primary    -   表示分區的開始  -表示分區的結尾  意思是劃分整個硬碟空間為主分區

    mkpartfs part-type fs-type start end 

    建立一個fs-type類型的part-type分區,不推薦使用,最好是使用mkpart分區完成後使用mke2fs進行格式化。

    name partition name 

    給分區設定一個名字,這種設定隻能用在Mac, PC98, and GPT類型的分區表,設定時名字用引号括起來

    select device 

    在機器上有多個硬碟時,選擇操作那個硬碟

    resize partition start end  

    調整分區大小

    rm partition  

    删除一個分區

    rescue start end  

    拯救一個位于stat和end之間的分區

    unit unit 

    在前面分區時,預設分區時數值的機關是M,這個參數卡伊改變預設機關,"kB", "MB",  "GB",  "TB"

    move partition start end 

    移動partition分區

    print  顯示分區表資訊  quit 退出parted
           
  • 常用指令
1、Check     簡單檢查檔案系統。建議用其他指令檢查檔案系統,比如fsck
2、Help      顯示幫助資訊
3、mklabel   建立分區表, 即是使用msdos(MBR)還是使用gpt,或者是其他方式分區表
4、mkfs      建立檔案系統。該指令不支援ext3 格式,是以建議不使用,最好是用parted分好區,然後退出parted互動模式,用其他指令進行分區,比如:mkfs.ext3
5、mkpart    建立新分區。
        格式:mkpart PART-TYPE  [FS-TYPE]  START  END
             PART-TYPE 類型主要有primary(主分區), extended(擴充分區), logical(邏輯區). 擴充分區和邏輯分區隻對msdos。
             fs-type   檔案系統類型,主要有fs32,NTFS,ext2,ext3等
             start end 分區的起始和結束位置。
、mkpartfs  建立分區及其檔案系統。目前還不支援ext3檔案系統,是以不建議使用該功能。最後是分好區後,退出parted,然後用其他指令建立檔案系統。
、print    輸出分區資訊。該功能有個選項,
       free 顯示該盤的所有資訊,并顯示磁盤剩餘空間
     number 顯示指定的分區的資訊
        all 顯示所有磁盤資訊
、resize   調整指定的分區的大小。目前對ext3格式支援不是很好,是以不建議使用該功能。
、rescue   恢複不小心删除的分區。如果不小心用parted的rm指令删除了一個分區,那麼可以通過rescue功能進行恢複。恢複時需要給出分區的起始和結束的位置。然後parted就會在給定的範圍内去尋找,并提示恢複分區。
、rm      删除分區。指令格式 rm  number 。如:rm  就是将編号為的分區删除
、select  選擇裝置。當輸入parted指令後直接回車進入互動模式是,如果有多塊硬碟,需要用select 選擇要操作的硬碟。如:select /dev/sdb
、set     設定标記。更改指定分區編号的标志。标志通常有如下幾種:boot  hidden   raid   lvm 等。boot 為引導分區,hidden 為隐藏分區,raid 軟raid,lvm 為邏輯分區。如:set   boot  on   設定分區号 為啟動分區
           

參考文章:位址

fdisk指令

Linux fdisk是一個建立和維護分區表的程式,它相容DOS類型的分區表、BSD或者SUN類型的磁盤清單。

fdisk 操作硬碟的指令格式如下:

fdisk 裝置

[root@linux7- ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux .)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符  建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):
           
主要參數
m :顯示菜單和幫助資訊
a :活動分區标記/引導分區
d :删除分區
l :顯示分區類型
n :建立分區
p :顯示分區資訊
q :退出不儲存
t :設定分區号
v :進行分區檢查
w :儲存修改
x :擴充應用,進階功能
           

我們現在對剛才新加的磁盤進行分區

知識點

主分區(包括擴充分區)的總個數不能超過四個

1. 建立分區(n)

指令(輸入 m 擷取幫助):n   
Partition type:
   p   primary ( primary,  extended,  free)
   e   extended
Select (default p): 
           

primary代表主分區,extended代表擴充分區,free代表空餘分區。這裡可以看到現在沒有主分區和擴充分區,隻有4個未劃分的空餘分區,也代表主分區+擴充分區≤4。

首先建立一個主分區

Select (default p): p
分區号 (-,預設 ):
起始 扇區 (-,預設為 ):
将使用預設值 
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+G
分區  已設定為 Linux 類型,大小設為  GiB

           

在建立一個擴充分區

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分區号 (-,預設 ):
起始 扇區 (-,預設為 ):
将使用預設值 
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+G
分區  已設定為 Extended 類型,大小設為  GiB

           

繼續建立分區

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): p
分區号 (,,預設 ):
起始 扇區 (-,預設為 ):+G
值超出範圍。
起始 扇區 (-,預設為 ):
将使用預設值 
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+G
分區  已設定為 Linux 類型,大小設為  GiB
指令(輸入 m 擷取幫助):n
Partition type:
   p   primary ( primary,  extended,  free)
   l   logical (numbered from )
Select (default p): p
已選擇分區 
起始 扇區 (-,預設為 ):
将使用預設值 
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+G
分區  已設定為 Linux 類型,大小設為  GiB

           

這裡注意在建立分區時,會顯示已有主分區,擴充分區,空餘分區。

當4個分區都建立完成後,繼續建立會發生什麼呢?

指令(輸入 m 擷取幫助):n
All primary partitions are in use
添加邏輯分區 
起始 扇區 (-,預設為 ):
           

會提示我們所有的基本分區都已經被使用了,在建立就是邏輯分區了,加一個試試。

指令(輸入 m 擷取幫助):n
All primary partitions are in use
添加邏輯分區 
起始 扇區 (-,預設為 ):
将使用預設值 
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+G
值超出範圍。
Last 扇區, +扇區 or +size{K,M,G} (-,預設為 ):+M
分區  已設定為 Linux 類型,大小設為  MiB
           
  1. 檢視分區(p)
指令(輸入 m 擷取幫助):p

磁盤 /dev/sdb: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體): 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
磁盤标簽類型:dos
磁盤辨別符:

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1                           Linux
/dev/sdb2                         Extended
/dev/sdb3                       Linux
/dev/sdb4                      Linux
/dev/sdb5                         Linux
/dev/sdb6                         Linux
           

sdb5和sdb6就是我們新增的邏輯分區

3. 删除分區(d)

現在我想删除那兩個邏輯分區,我們使用d

指令(輸入 m 擷取幫助):d
分區号 (1-6,預設 6):5
分區 5 已删除

指令(輸入 m 擷取幫助):d
分區号 (1-5,預設 5):
           

注意:分區5删除後,分區6自動會變為分區5。也就是說,删除邏輯分區,分區号不會留白,會自動補上

那麼删除主分區和拓展分區呢?

指令(輸入 m 擷取幫助):d
分區号 (-,預設 ):
分區  已删除

指令(輸入 m 擷取幫助):p

磁盤 /dev/sdb: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體): 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
磁盤标簽類型:dos
磁盤辨別符:

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb2                         Extended
/dev/sdb3                       Linux
/dev/sdb4                      Linux
           

我們看到,當删除主分區時,分區号會留白

知識點

上面看到,現在系統裡有一個擴充分區了,還有兩個主分區。這時候在新增分區會發生什麼呢?

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary ( primary,  extended,  free)
   l   logical (numbered from )
           

這時候在新增分區時,就不能再增加擴充分區,改為可以增加主分區和邏輯分區了。

  1. 儲存更改(w)
指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
           

fdisk -l

檢視

[root@linux7- ~]# fdisk -l

磁盤 /dev/sda: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體):512 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
磁盤标簽類型:dos
磁盤辨別符:

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sda1   *                         Linux
/dev/sda2          411648     8800255     4194304   82  Linux swap / Solaris
/dev/sda3                      Linux

磁盤 /dev/sdb: GB,  位元組, 個扇區
Units = 扇區 of  *  =  bytes
扇區大小(邏輯/實體):512 位元組 /  位元組
I/O 大小(最小/最佳): 位元組 /  位元組
磁盤标簽類型:dos
磁盤辨別符:

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1                           Linux
/dev/sdb2                         Extended
/dev/sdb3                       Linux
/dev/sdb4                      Linux
           

最下面可以看到我們剛才劃分的sdb分區

知識點

==關于擴充分區和邏輯分區的關系==

擴充分區雖然我們設定了起始值和結束值,比如設定了5個G,但是真正占有空間的是擴充分區裡的邏輯分區。擴充分區本身不支援格式化,不能在裡面直接寫資料,僅僅是一個殼子,殼子裡裝的是邏輯分區,真正寫資料的也是邏輯分區。

四.磁盤格式化

檢視系統支援的檔案系統格式

/etc/filesystems

[root@linux7- ~]# cat /etc/filesystems 
xfs                 --預設的檔案系統
ext4
ext3
ext2
nodev proc
nodev devpts
iso966
vfat
hfs
hfsplus
*
           

裝系統的時候預設的就是xfs,例如/、/boot的檔案系統格式就是xfs

檢視檔案系統格式

mount

centos6以及以前版本的預設系統檔案格式都是ext

==centos6 ext4

centos5 ext3

centos4 ext2==

mke2fs

改變檔案系統

參數

-b<區塊大小> 指定區塊大小,機關為位元組。
-c 建立檔案系統之前檢查裝置壞塊情況。
-f<不連續區段大小> 指定不連續區段的大小,機關為位元組。
-F 不管指定的裝置為何,強制執行mke2fs。
-i<位元組> 指定"位元組/inode"的比例。
-N<inode數> 指定要建立的inode數目。
-l<檔案> 從指定的檔案中讀取裝置壞塊表資訊(bad block table)。
-L<标簽> 設定檔案系統的标簽名稱。
-m<百分比值> 指定給管理者保留區塊的比例,預設為%。
-M 記錄最後一次挂入的目錄。
-q 執行時不顯示任何資訊。
-E 額外設定參數
-t 指定要建立檔案系統類型
-r 指定要建立的ext2檔案系統版本。
-R=<區塊數> 設定磁盤陣列參數。
-S 僅寫入superblock與group descriptors,而不更改inode able inode bitmap以及block bitmap。
-v 執行時顯示詳細資訊。
-V 顯示版本資訊。
           
知識點

這裡的區塊大小就是我們之前所看到的,使用

du -sh

ls -lh

指令看到的檔案大小是不同的,這就是因為區塊大小,如果區塊大小預設為4K,那麼一旦檔案寫入東西,就算它沒有4K,也會占用區塊,

du -sh

查詢出來的大小就是4K。如果他沒有寫入任何資料,那麼就不會占用區塊,大小都是0.

==空檔案==

[root@linux7- ~]# du -sh 1.txt 
   .txt
[root@linux7- ~]# ls -lh 1.txt 
-rw-r--r--  root root  月   : .txt
           

==寫入資料的檔案==

[root@linux7- ~]# echo 1 > 1.txt 
[root@linux7- ~]# du -sh 1.txt 
K    .txt
[root@linux7- ~]# ls -lh 1.txt 
-rw-r--r--  root root  月   : .txt
           

示例

  1. 将前面建立的/dev/sdb1分區格式更改為xfs
[[email protected] ~]# mke2fs -t xfs /dev/sdb1
mke2fs  (-Dec-)

Your mke2fs.conf file does not define the xfs filesystem type.
Aborting...
           

沒有成功,為什麼?

使用

man mke2fs

檢視他的用法

-t fs-type
              Specify  the  filesystem  type (i.e., ext2, ext3, ext4, etc.) that is to be created.  
           

這裡看到mke2fs -t好像是不支援xfs系統的,那怎麼辦?

可以使用

mkfs.ext4

,她實際等于

mke2fs -t ext4

我們先将/dev/sdb1分區格式更改為ext4

[[email protected] ~]# mke2fs -t ext4 /dev/sdb1
mke2fs  (-Dec-)
檔案系統标簽=
OS type: Linux
塊大小= (log=)
分塊大小= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
第一個資料塊=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , , 

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
           

換成

mkfs.ext4

試試

[[email protected] ~]# mkfs.ext4 /dev/sdb1
mke2fs  (-Dec-)
檔案系統标簽=
OS type: Linux
塊大小= (log=)
分塊大小= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
第一個資料塊=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blo這種cks: 
    , , , , 

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
           

依然成功(分區格式化之後可以在格式化一次)

用這種方式來試驗将檔案系統格式化為xfs格式

[[email protected] ~]# mkfs.xfs /dev/sdb1
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.
           

由于

/dev/sdb1

已經被格式化過,有了檔案系統,是以使用

mkfs.xfs

的時候需要加一個

-f

來強制執行格式化,在之前使用

mkfs.ext4

是不需要的。 `

[[email protected] ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=   attr=, projid32bit=
         =                       crc=        finobt=, sparse=
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=      swidth= blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=   sunit= blks, lazy-count=
realtime =none                   extsz=4096   blocks=0, rtextents=0
           

成功,這時

/dev/sdb1

的檔案系統就變為了xfs。

但是這時候使用

mount

是看不到

/dev/sdb1

的,因為他還沒有選擇挂載點。

==如果想看一個還沒有挂載的分區,使用blkid檢視==

[root@linux7- ~]# blkid /dev/sdb1
/dev/sdb1: UUID="7283a51b-21c6-4bce-b25d-65d91852883e" TYPE="xfs" 
           

可以看到它的類型為xfs

2. 指定給root使用者預留的百分比值 :

mke2fs -m

給root使用者預留百分之1

[[email protected] ~]# mke2fs -m  -t ext4 /dev/sdb1
mke2fs  (-Dec-)
檔案系統标簽=
OS type: Linux
塊大小= (log=)
分塊大小= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
第一個資料塊=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , , 

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
           
  1. 指定”位元組/inode”的比例。:

    mke2fs -i

    上面的格式化過程可以看到

    131072 inodes, 524288 blocks

    ,比例為1:4。

    ==1 inode = 4 blocks

    1 blocks = 4096

    1 inode = 16384==

    是以,我們可以讓inode和blocks比例小一點

[[email protected] ~]# mke2fs -i  -t ext4 /dev/sdb1
mke2fs  (-Dec-)
檔案系統标簽=
OS type: Linux
塊大小= (log=)
分塊大小= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
第一個資料塊=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks:
    , , , , 
hu啊
Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
           

這時inode和blocks比例為1:2

五.磁盤挂載

沒有分區的磁盤也可以格式化,沒問題的。

隻有格式化的磁盤才能夠挂載檔案系統,Linux裡磁盤要想通路,必須挂載到一個挂載點下,挂載點實際就是一個目錄。

mount指令

挂載檔案系統

- 文法

mount [-hV]
mount -a [-選項] [-t 檔案系統類型] [-O 選項]
mount [-選項] [-o 選項 [,...]] 裝置名 | 加載點
mount [-選項] [-t 檔案系統類型] [-o 選項] 裝置名 加載點
           
  • 參數
-V:顯示程式版本
-h:顯示輔助訊息
-v:顯示較訊息,通常和 -f 用來除錯。
-a:将 /etc/fstab 中定義的所有檔案系統挂上。
-F:這個指令通常和 -a 一起使用,它會為每一個 mount 的動作産生一個行程負責執行。在系統需要挂上大量 NFS 檔案系統時可以加快挂上的動作。
-f:通常用在除錯的用途。它會使 mount 并不執行實際挂上的動作,而是模拟整個挂上的過程。通常會和 -v 一起使用。
-n:一般而言,mount 在挂上後會在 /etc/mtab 中寫入一筆資料。但在系統中沒有可寫入檔案系統存在的情況下可以用這個選項取消這個動作。
-s-r:等于 -o ro
-w:等于 -o rw
-L:将含有特定标簽的硬碟分割挂上。
-U:将檔案分割序号為 的檔案系統挂下。-L 和 -U 必須在/proc/partition 這種檔案存在時才有意義。
-t:指定檔案系統的型态,通常不必指定。mount 會自動選擇正确的型态。
-o async:打開非同步模式,所有的檔案讀寫動作都會用非同步模式執行。
-o sync:在同步模式下執行。
-o atime、-o noatime:當 atime 打開時,系統會在每次讀取檔案時更新檔案的『上一次調用時間』。當我們使用 flash 檔案系統時可能會選項把這個選項關閉以減少寫入的次數。
-o auto、-o noauto:打開/關閉自動挂上模式。
-o defaults:使用預設的選項 rw, suid, dev, exec, auto, nouser, and async.
-o dev、-o nodev 、-o exec、-o noexec允許執行檔被執行。
-o suid、-o nosuid:允許執行檔在 root 權限下執行。
-o user、-o nouser:使用者可以執行 mount/umount 的動作。
-o remount:将一個已經挂下的檔案系統重新用不同的方式挂上。例如原先是唯讀的系統,現在用可讀寫的模式重新挂上。
-o ro:用唯讀模式挂上。
-o rw:用可讀寫模式挂上。
-o loop=:使用 loop 模式用來将一個檔案當成硬碟分割挂上系統。
           
  • 執行個體
    1. 将新增加的/dev/sdb挂載到/mnt下
首先檢視下系統下挂載的磁盤
[root@linux7- ~]# df -h
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        G  G   G   % /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M   M  M   % /boot
tmpfs            M        M    % /run/user/0
然後将新增加的/dev/sdb挂載到/mnt下
[root@linux7- ~]# mount /dev/sdb /mnt/
再檢視一遍
[root@linux7- ~]# df -h
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        G  G   G   % /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M   M  M   % /boot
tmpfs            M        M    % /run/user/0
/dev/sdb         G   M   G    % /mnt
           

最下面就會顯示出來剛才挂載的/dev/sdb。

在使用

mount

檢視,最下面一行就會出現下列資訊

/dev/sdb on /mnt type xfs (rw,relatime,attr2,inode64,noquota)

2. 取消挂載

umount

指令

[root@linux7- ~]# umount /dev/sdb
[root@linux7- ~]# df -h
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        G  G   G   % /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M   M  M   % /boot
tmpfs            M        M    % /run/user/0
           
  1. 在目錄下取消挂載

    umount -l

    指令
假如現在我們的/dev/sdb挂載到了/mnt下,然後我們進入/mnt目錄
[root@linux7- ~]# cd /mnt
建立一些檔案和目錄
[root@linux7- mnt]# touch 1.txt
[root@linux7- mnt]# touch 2.txt
[root@linux7- mnt]# mkdir 123
[root@linux7- mnt]# ls
  txt  txt
在/mnt目錄下取消挂載,首先用umount試試
[root@linux7- mnt]# umount /dev/sdb
umount: /mnt:目标忙。
        (有些情況下通過 lsof() 或 fuser() 可以
         找到有關使用該裝置的程序的有用資訊)
看起來有點問題,那麼我們使用umount -l再試試
[root@linux7- mnt]# umount -l  /dev/sdb
OK,沒有報錯,再來看看  
[root@linux7- mnt]# df -h
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        26G  3.4G   23G   13% /
devtmpfs        M       M    % /dev
tmpfs           M       M    % /dev/shm
tmpfs           M  M  M    % /run
tmpfs           M       M    % /sys/fs/cgroup
/dev/sda1       M   M  M   % /boot
tmpfs            M        M    % /run/user/
           

/etc/fstab

fstab(/etc/fstab)是Linux下比較重要的配置檔案,它包含了系統在啟動時挂載檔案系統和儲存設備的詳細資訊。

首先檢視下我們本機的

/etc/fstab

檔案

[[email protected] ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat Apr 28 04:33:21 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=c0b2c-ae50---bee3e4cae4b /                       xfs     defaults         
UUID=dc50a5a-fd8d--b3a6-ad4314a83e /boot                   xfs     defaults         
UUID=fdbd2e65---a1f7-c6dd670311dd swap                    swap    defaults         
           

可以看到這個檔案有六列,下面以最後一列為例一一作解釋

1. 要挂載的裝置或僞檔案系統:裝置名稱,LABEL,UUID,僞檔案系統名稱。UUID表示裝置的ID号,我們在編輯檔案時可以直接使用裝置名。例如

/dev/sdb/

,如果要查詢UUID可以使用

blkid 裝置名

來查詢。

2. 挂載點(擴充為swap)

3. 檔案系統類型(auto 尋找預設的),

普通裝置挂載:ext#/xfs 等檔案系統類型

交換分區 swap:swap

網絡挂載位址 linux之間:nfs,windos挂載:cifs

CD光牒 iso9660,檔案 cifs

4. 挂載選項,詳細參考man mount. 下面列出一些常用的選項:

auto: 系統自動挂載,fstab預設就是這個選項

ro: read-only

rw: read-write

defaults: rw, suid, dev, exec, auto, nouser, and async.

5. dump選項,設定是否讓備份程式dump備份檔案系統,

0:不做備份

1:每天轉儲

2:每隔一天轉儲

6. fsck選項,告訴fsck程式以什麼順序檢查檔案系統。(如果開機系統自檢不過,就無法正常開機)

0:不自檢

1:最先自檢,一般為/ 2…:數越小優先級最大

==如果裝置不小心被破壞,開機自檢不過,無法正常啟用,該怎麼辦?==

隻需要修複一下檔案系統就好了,(如果不能修複,可以去/etc/fstab中把自檢改為0)

參考部落格:位址

六.手動增加swap空間

檢視swap空間

[[email protected] ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:                                                           
Swap:                             
           

檢視swap資訊,包括檔案和分區的詳細資訊

swapon -s

或者

cat /proc/swaps

[root@linux7- ~]# swapon -s
檔案名             類型      大小  已用  權限
/dev/sda2           partition           -
[root@linux7- ~]# cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sda2               partition               -
           

增加swap交換檔案

  1. 使用dd指令建立一個swap交換檔案
[[email protected] ~]# dd if=/dev/zero of=/tmp/newswap bs=M count=
記錄了+ 的讀入
記錄了+ 的寫出
位元組( MB)已複制, 秒, MB/秒
           

這樣就建立一個/tmp/newswap的分區檔案,大小為100M。

2. 制作為swap格式檔案

[[email protected] ~]# mkswap /tmp/newswap 
正在設定交換空間版本 ,大小 =  KiB
無标簽,UUID=d7cd591-a743-bd-a3f6-e2b714d72150
           
  1. 再用swapon指令把這個檔案分區挂載swap分區
[root@linux7- ~]# swapon /tmp/newswap
swapon: /tmp/newswap:不安全的權限 ,建議使用 。
[root@linux7- ~]# chmod 0600 !$
chmod  /tmp/newswap
           
  1. 用free -m指令看一下,發現有沒有交換分區了
[[email protected] ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:                                                           
Swap:                             
           

發現比之前多了100M的空間。

dd指令

dd:用指定大小的塊拷貝一個檔案,并在拷貝的同時進行指定的轉換。

注意:

指定數字的地方若以下列字元結尾,則乘以相應的數字:b=512;c=1;k=1024;w=2

- 參數

if=檔案名:輸入檔案名,預設為标準輸入。即指定源檔案。< if=input file >
 of=檔案名:輸出檔案名,預設為标準輸出。即指定目的檔案。< of=output file >
 ibs=bytes:一次讀入bytes個位元組,即指定一個塊大小為bytes個位元組。
    obs=bytes:一次輸出bytes個位元組,即指定一個塊大小為bytes個位元組。
    bs=bytes:同時設定讀入/輸出的塊大小為bytes個位元組。
 cbs=bytes:一次轉換bytes個位元組,即指定轉換緩沖區大小。
 skip=blocks:從輸入檔案開頭跳過blocks個塊後再開始複制。
 seek=blocks:從輸出檔案開頭跳過blocks個塊後再開始複制。
注意:通常隻用當輸出檔案是磁盤或錄音帶時才有效,即備份到磁盤或錄音帶時才有效。
 count=blocks:僅拷貝blocks個塊,塊大小等于ibs指定的位元組數。
 conv=conversion:用指定的參數轉換檔案。
    ascii:轉換ebcdic為ascii
     ebcdic:轉換ascii為ebcdic
    ibm:轉換ascii為alternate ebcdic
    block:把每一行轉換為長度為cbs,不足部分用空格填充
    unblock:使每一行的長度都為cbs,不足部分用空格填充
    lcase:把大寫字元轉換為小寫字元
    ucase:把小寫字元轉換為大寫字元
    swab:交換輸入的每對位元組
     noerror:出錯時不停止
     notrunc:不截短輸出檔案
    sync:将每個輸入塊填充到ibs個位元組,不足部分用空(NUL)字元補齊。
           
  • 執行個體
将本地的/dev/hdb整盤備份到/dev/hdd
#dd if=/dev/hdb of=/dev/hdd
将/dev/hdb全盤資料備份到指定路徑的image檔案
#dd if=/dev/hdb of=/root/image
将備份檔案恢複到指定盤
#dd if=/root/image of=/dev/hdb
備份/dev/hdb全盤資料,并利用gzip工具進行壓縮,儲存到指定路徑
#dd if=/dev/hdb | gzip > /root/image.gz
将壓縮的備份檔案恢複到指定盤
#gzip -dc /root/image.gz | dd of=/dev/hdb
備份與恢複MBR
備份磁盤開始的個位元組大小的MBR資訊到指定檔案:
#dd if=/dev/hda of=/root/image count= bs=
   count=指僅拷貝一個塊;bs=指塊大小為個位元組。
恢複:
#dd if=/root/image of=/dev/had
将備份的MBR資訊寫到磁盤開始部分
備份軟碟
#dd if=/dev/fd0 of=disk.img count= bs=k (即塊大小為M)
拷貝記憶體内容到硬碟
#dd if=/dev/mem of=/root/mem.bin bs= (指定塊大小為k)  
拷貝CD光牒内容到指定檔案夾,并儲存為cd.iso檔案
#dd if=/dev/cdrom(hdc) of=/root/cd.iso
銷毀磁盤資料
#dd if=/dev/urandom of=/dev/hda1
注意:利用随機的資料填充硬碟,在某些必要的場合可以用來銷毀資料。
測試硬碟的讀寫速度
#dd if=/dev/zero bs= count= of=/root/Gb.file
#dd if=/root/Gb.file bs=k | dd of=/dev/null
通過以上兩個指令輸出的指令執行時間,可以計算出硬碟的讀、寫速度。
确定硬碟的最佳塊大小:
#dd if=/dev/zero bs= count= of=/root/Gb.file
#dd if=/dev/zero bs= count= of=/root/Gb.file
#dd if=/dev/zero bs= count= of=/root/Gb.file
#dd if=/dev/zero bs= count= of=/root/Gb.file
通過比較以上指令輸出中所顯示的指令執行時間,即可确定系統最佳的塊大小。
修複硬碟:
#dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
當硬碟較長時間(一年以上)放置不使用後,磁盤上會産生magnetic flux point,當磁頭讀到這些區域時會遇到困難,并可能導緻I/O錯誤。當這種情況影響到硬碟的第一個扇區時,可能導緻硬碟報廢。上邊的指令有可能使這些資料起死回生。并且這個過程是安全、高效的。
利用netcat遠端備份
#dd if=/dev/hda bs=b | netcat < targethost-IP > 
在源主機上執行此指令備份/dev/hda
#netcat -l -p  | dd of=/dev/hdc bs=b
在目的主機上執行此指令來接收資料并寫入/dev/hdc
#netcat -l -p  | bzip2 > partition.img
#netcat -l -p  | gzip > partition.img
以上兩條指令是目的主機指令的變化分别采用bzip2、gzip對資料進行壓縮,并将備份檔案儲存在目前目錄。
将一個很大的視訊檔案中的第i個位元組的值改成(也就是大寫字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs= count= conv=notrunc
           
  • /dev/null和/dev/zero的差別

    /dev/null,外号叫無底洞,你可以向它輸出任何資料,它通吃,并且不會撐着!

    /dev/zero,是一個輸入裝置,你可你用它來初始化檔案。該裝置無窮盡地提供0,可以使用任何你需要的數目——裝置提供的要多的多。他可以用于向裝置或檔案寫入字元串0。

    參考文章1:https://blog.csdn.net/noviblue/article/details/56012275

    參考文章2:https://blog.csdn.net/daiyudong2020/article/details/53157558

    參考文章3:http://zuyunfei.com/2015/06/04/linux-dd/

删除swap交換檔案

  1. 先停止swap分區
  1. 删除swap分區檔案

參考部落格:位址

七.LVM詳解

概述

LVM全稱是Logical Volume Manager,即邏輯卷管理器。它是Linux環境下對磁盤分區進行管理的一種機制;它可以将多個實體分區整合在一起,并且可以根據實際需要動态調整檔案系統空間。另外,它還可以提供快照,快照在剛建立的時候,其内容是和原卷一模一樣的,隻有資料在原卷中發生變化的時候,快照會将被改動資料的原資料儲存起來。

相關概念

1.實體卷(Physical Volume)

實體卷是組成LVM的最底層的元素,即Linux上的實體分區。
           

2.卷組(Volume Group)

将各個獨立的PV組合起來形成的一個存儲空間就稱為VG,VG的大小就是整個LVM的大小。
           

3.邏輯卷(Logical Volume)

可以被使用者格式化、挂載并提供資料存儲的對象就是LV。
           

4.實體擴充塊(Physical Extent)

PE相當于Linux分區中的block,它是LVM的最小存儲機關,預設為4M。   
           
2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

基本操作

準備磁盤分區

fdisk /dev/sdb

n 建立3個新分區,分别1G

t 改變分區類型為8e

建立分區前面已經介紹過了,此處不多說明,需要注意的是如何更改分區類型。

圖檔上已經說過使用t來修改,我們實際操作一下。

指令(輸入 m 擷取幫助):t
分區号 (-,預設 ):
Hex 代碼(輸入 L 列出所有代碼):e
已将分區“Linux LVM”的類型更改為“Linux LVM”
           

按此方法将剛才建立的3個分區分區類型都變為8e,也就是Linux LVM。

準備實體卷

pvcreate /dev/sdb1

pvcreate /dev/sdb2

pvcreate /dev/sdb3

pvdisplay 列出目前實體卷

pvremove /dev/sdb3 删除實體卷

知識點1

如何安裝想要的軟體包,但是忘記了包名?

根據指令去上搜尋

yum provides "/*/pvcreate

用這種通配符的方式去安裝含有此指令的包。

知識點2

如果分完區後沒有自動生成/dev/sdb這個檔案,可以使用

partprobe

指令來生成一下。

建立實體卷

[root@linux7- ~]#  pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset . Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created.
[root@linux7- ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[root@linux7- ~]# pvcreate /dev/sdb3
WARNING: dos signature detected on /dev/sdb3 at offset . Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdb3.
  Physical volume "/dev/sdb3" successfully created.
           

列出目前實體卷

[[email protected] ~]# pvdisplay
  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size                GiB
  Allocatable           NO
  PE Size                  
  Total PE              
  Free PE               
  Allocated PE          
  PV UUID               Dd1J10-tqOb-Vxns-dlF-aQeN-Uee0-ZeLNmW

  "/dev/sdb2" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size                GiB
  Allocatable           NO
  PE Size                  
  Total PE              
  Free PE               
  Allocated PE          
  PV UUID               x2pFZf-YN4t-bLG4-PuM-q3mX-WoVm-GZOk3S

  "/dev/sdb3" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size                GiB
  Allocatable           NO
  PE Size                  
  Total PE              
  Free PE               
  Allocated PE          
  PV UUID               pmaLZS-uW2-C83I-boGO-M2j-UL2c-wcrVc
           

更直覺的顯示方式pvs

[[email protected] ~]# pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  1.00g 1.00g
  /dev/sdb2     lvm2 ---  1.00g 1.00g
  /dev/sdb3     lvm2 ---  1.00g 1.00g
           

建立卷組

vgcreate VG_NAME PV_NAME

[[email protected] ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created
           

檢視卷組詳細資訊

(1)vgs:簡要檢視VG資訊。

(2)vgdisplay:詳細檢視VG資訊。

A.vgdisplay: 直接使用該指令,檢視所有VG的資訊。    

B.vgdisplay VG_NAME: 表示檢視這個VG的資訊。
           
[root@linux7- ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        
  Metadata Sequence No  
  VG Access             read/write
  VG Status             resizable
  MAX LV                
  Cur LV                
  Open LV               
  Max PV                
  Cur PV                
  Act PV                
  VG Size                GiB
  PE Size                MiB
  Total PE              
  Alloc PE / Size        /    
  Free  PE / Size        /  GiB
  VG UUID               l4ZAUg-aZs8-NcW-aVvk-bMFI-cD9-YPgWrM
[root@linux7- ~]# vgs
  VG  #PV #LV #SN Attr   VSize VFree
  vg1          wz--n- g g
           

建立邏輯卷

指令:

lvcreate -L SIZE -n LV_NAME VG_NAME

[root@linux7- ~]# lvcreate -L 100M -n lv1 vg1
  Logical volume "lv1" created.
           

檢視邏輯卷

指令:

(1)lvs: 簡要檢視LV資訊

(2)lvdisplay 邏輯卷的裝置檔案名稱: 詳細檢視LV資訊

邏輯卷的裝置檔案名稱路徑:/dev/VG_NAME/LV_NAME 或者 /dev/mapper/VG_NAME-LV_NAME    
           
[[email protected] ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                yzryv3-QyvD-oPeB-EZhy-awOh-q2OH-K7qD9X
  LV Write Access        read/write
  LV Creation host, time linux7-, -- :: +
  LV Status              available
  # open                 0
  LV Size                 MiB
  Current LE             
  Segments               
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     
  Block device           :

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 100.00m                 
           

格式化為ext4檔案格式

[[email protected] ~]# mkfs.ext4 /dev/vg1/lv1 
mke2fs  (-Dec-)
檔案系統标簽=
OS type: Linux
塊大小= (log=)
分塊大小= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
第一個資料塊=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , , 

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
           

挂載到/mnt

[root@linux7- ~]# mount /dev/vg1/lv1 /mnt/
[root@linux7- ~]# df -h
檔案系統             容量  已用  可用 已用% 挂載點
/dev/sda3             G  G   G   % /
devtmpfs             M       M    % /dev
tmpfs                M       M    % /dev/shm
tmpfs                M  M  M    % /run
tmpfs                M       M    % /sys/fs/cgroup
/dev/sda1            M   M  M   % /boot
tmpfs                 M        M    % /run/user/0
/dev/mapper/vg1-lv1   M  M   M    % /mnt
           

這時候我們發現挂載後的檔案系統變為了/dev/mapper/vg1-lv1,這個和/dev/vg1/lv1有什麼關聯呢?

[root@linux7- ~]# ls -l /dev/vg1/lv1 
lrwxrwxrwx  root root  月   : /dev/vg1/lv1 -> ../dm-
[root@linux7- ~]# ls -l /dev/mapper/vg1-lv1 
lrwxrwxrwx  root root  月   : /dev/mapper/vg1-lv1 -> ../dm-
           

實際上他們指向的是同一個位置

擴充邏輯卷

  • lvresize -L 300M /dev/vg1/lv1 重新設定卷大小
  • e2fsck -f /dev/vg1/lv1 檢查磁盤錯誤(ext4執行)
  • resize2fs /dev/vg1/lv1 更新邏輯卷資訊(ext4執行)
  • xfs_growfs /dev/vg1/lv1 xfs檔案系統需要執行
[root@linux7- ~]# umount /mnt/
[root@linux7- ~]# lvresize -L 300M /dev/vg1/lv1
  New size ( extents) matches existing size ( extents).
[root@linux7- ~]# e2fsck -f /dev/vg1/lv1
e2fsck  (-Dec-)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第步: 檢查目錄連接配接性
Pass : Checking reference counts
第步: 檢查簇概要資訊
/dev/vg1/lv1: / files (% non-contiguous), / blocks
[root@linux7- ~]# resize2fs /dev/vg1/lv1
resize2fs  (-Dec-)
Resizing the filesystem on /dev/vg1/lv1 to  (k) blocks.
The filesystem on /dev/vg1/lv1 is now  blocks long.
[root@linux7- ~]# !mount
mount /dev/vg1/lv1 /mnt/
[root@linux7- ~]# df -h /mnt/
檔案系統             容量  已用  可用 已用% 挂載點
/dev/mapper/vg1-lv1  M  M  M    % /mnt
           

這期間/mnt裡建立的檔案和目錄都依然存在。

縮減邏輯卷(xfs不支援)

  • 先umount
  • e2fsck -f /dev/vg1/lv1 檢查磁盤錯誤(ext)
  • resize2fs /dev/vg1/lv1 100M 更新邏輯卷資訊(ext)
  • lvresize -L 100M /dev/vg1/lv1 重新設定卷大小
[root@linux7- ~]# umount /mnt/
[root@linux7- ~]# e2fsck -f /dev/vg1/lv1
e2fsck . (-Dec-)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第步: 檢查目錄連接配接性
Pass : Checking reference counts
第步: 檢查簇概要資訊
/dev/vg1/lv1: / files (% non-contiguous), / blocks
[root@linux7- ~]# resize2fs /dev/vg1/lv1 100M
resize2fs . (-Dec-)
Resizing the filesystem on /dev/vg1/lv1 to  (k) blocks.
The filesystem on /dev/vg1/lv1 is now  blocks long.

[root@linux7- ~]# lvresize -L 100M /dev/vg1/lv1
  WARNING: Reducing active logical volume to  MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
  Size of logical volume vg1/lv1 changed from 300.00 MiB (75 extents) to 100.00 MiB (25 extents).
  Logical volume vg1/lv1 successfully resized.
[root@linux7- ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                yzryv3-QyvD-oPeB-EZhy-awOh-q2OH-K7qD9X
  LV Write Access        read/write
  LV Creation host, time linux7-, -- :: +080
  LV Status              available
  # open                 0
  LV Size                 MiB
  Current LE             
  Segments               
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     
  Block device           :

[root@linux7- ~]# mount /dev/vg1/lv1  /mnt/
[root@linux7- ~]# df -h /mnt/
檔案系統             容量  已用  可用 已用% 挂載點
/dev/mapper/vg1-lv1   M  M   M    % /mnt

           

xfs擴容

将檔案系統格式化為xfs

[[email protected] ~]# !umount
umount /mnt/
[[email protected] ~]# mkfs.xfs -f /dev/vg1/lv1 
meta-data=/dev/vg1/lv1           isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=   attr=, projid32bit=
         =                       crc=        finobt=, sparse=
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=      swidth= blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=   sunit= blks, lazy-count=
realtime =none                   extsz=4096   blocks=0, rtextents=0
           

在/mnt/下建立一個檔案,并且加幾條資料。

[root@linux7- ~]# cd /mnt/
[root@linux7- mnt]# touch 1.txt
[root@linux7- mnt]# echo '1111111111111' > 1.txt 
[root@linux7- mnt]# cat 1.txt 

           

開始擴容

[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 100.00m                                                    
[[email protected] ~]# lvresize -L 300M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from  MiB ( extents) to  MiB ( extents).
  Logical volume vg1/lv1 successfully resized.
[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-a----- 300.00m    
[[email protected] ~]# !mount
mount /dev/vg1/lv1  /mnt/
[[email protected] ~]# df -h
檔案系統             容量  已用  可用 已用% 挂載點
/dev/sda3             G  G   G   % /
devtmpfs             M       M    % /dev
tmpfs                M       M    % /dev/shm
tmpfs                M  M  M    % /run
tmpfs                M       M    % /sys/fs/cgroup
/dev/sda1            M   M  M   % /boot
tmpfs                 M        M    % /run/user/
/dev/mapper/vg1-lv1   M  M   M    % /mnt
[[email protected] ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1    isize=    agcount=, agsize= blks
         =                       sectsz=   attr=, projid32bit=
         =                       crc=        finobt= spinodes=
data     =                       bsize=   blocks=, imaxpct=
         =                       sunit=      swidth= blks
naming   =version               bsize=   ascii-ci= ftype=
log      =internal               bsize=   blocks=, version=
         =                       sectsz=   sunit= blks, lazy-count=
realtime =none                   extsz=   blocks=, rtextents=
data blocks changed from  to 
[[email protected] ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 300.00m                                                    
[[email protected] ~]# df -h /mnt/
檔案系統             容量  已用  可用 已用% 挂載點
/dev/mapper/vg1-lv1  M  M  M    % /mnt
           

擴充後/mnt下的檔案不存在了

知識點

==如何擴充卷組==

- fdisk /dev/sdb 新增/dev/sdb5(邏輯分區8e) 2G

- pvcreate /dev/sdb5

- vgectend vg1 /dev/sdb5

- lvresize -L 100M /dev/vg1/lv1 重新設定卷大小

參考部落格: 位址

八.RAID

含義原理

什麼是RAID?

硬碟是個很脆弱的東西,它經常會壞掉。是以,為了保證伺服器可靠耐用,硬碟必須時時刻刻保持可用。是以有了RAID這個東西。它的目的是将好幾個硬碟合并在一起,就算硬碟壞了一個,剩下還有好幾個硬碟是正常的,這樣伺服器才不會挂掉。

當然,保證服務高可用隻是RAID其中的一個功能。它還能提升儲存容量、加快存取速度等能力。

RAID分為0~6級,另外還有RAID 1+0,簡稱RAID 10。

原理

RAID=硬碟1+硬碟2+硬碟3+硬碟4+硬碟5+硬碟6+…..+硬碟n

RAID-0

RAID 0沒有資料備援、沒有奇偶校驗。是以,如果一個硬碟壞掉了,整個RAID陣列的資料都沒法正常使用了。它存在的意義在于加快讀寫速度,提升硬碟容量。通常在資料可靠性要求不高的情況下才會使用RAID 0。比如遊戲、科學計算。

因為每個硬碟都可以獨立讀寫,如果硬碟有n塊,那麼讀寫速度提升是n倍。

下圖是RAID 0的資料分布方式:

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-1

RAID 1模式下,如果有n塊硬碟,那麼會把資料儲存n份一模一樣的。這樣即使一份資料壞掉了,剩下的備份可以正常工作。性能方面,随機存取速度相當于所有硬碟的總和,寫入性能和原來單個硬碟的性能一樣。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-1E

這種模式跟RAID 1的差別在于,當硬碟數量大于2時,RAID 1E對于同一份資料最多儲存兩份一模一樣的。這樣可以充分的利用硬碟空間。下圖說明了這種儲存方式。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-1+0

這種模式全稱是RAID-1加上RAID-0。它實作的原理如下圖所示:

用幾句話來描述吧。它相當于先把這些硬碟成對成對的用RAID-1方式組合起來,然後再把這些組合結果用RAID-0方式組合起來。這種模式下它支援高可用,又能有很好的讀寫性能。這種方式,由于需要存兩份一模一樣的資料,是以容量會損失一半。

這種方式是目前最常用的。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-2

這種模式現在已經不太常用了。它把每個資料位都打散,然後均勻的放到各個硬碟上。使用了Hamming代碼來做糾錯,将Hamming代碼放到專門的幾個硬碟裡面。下圖可以看到這種模式的資料分布:

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-3

這種模式現在也已經不太常用了。它把每個資料位元組都打散,然後均勻的分散到各個硬碟。然後将奇偶校驗的資料放到專門的硬碟裡。關于奇偶校驗的資料在後面會提到。這種模式下,由于每個資料都分散到各個硬碟的不同地方,是以每次操作都需要所有硬碟來參與。是以,對于随機存取的場景下,這種模式的性能是很差的。對于特别長的順序讀寫是非常合适的,比如視訊監控資料。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-4

這種模式把每個資料塊打散,然後均勻的分散到各個硬碟。另外還設定了專門的硬碟用來儲存奇偶校驗的資料。這種模式下,随機讀取的性能非常好。但是随機寫入的性能卻不行。因為需要将所有奇偶校驗的資料全部寫到專門的硬碟裡面。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-5

這種模式把每個資料塊打散,然後均勻分布到各個硬碟。與RAID-4不同的是,它将奇偶校驗的資料均勻的分散到不同的硬碟。這樣如果有一個硬碟壞掉了,丢失的資料可以從奇偶校驗裡面計算出來。

通常RAID-5的容量會損失1/3,用來儲存奇偶校驗資訊。

這種模式兼顧了成本、性能,也是比較常用的一種模式。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

RAID-6

這種模式與其他模式的差別在于,它支援兩塊硬碟同時損壞,并且仍然能夠正常工作。它有這般神奇的能力,是因為它儲存了兩種奇偶校驗。一種是普通的XOR方式,跟RAID-5一樣。另外一種比較複雜,需要消耗比較多的CPU。這種奇偶校驗方式在後面再講。

2018-08-04筆記一.df指令二.du指令三.磁盤分區四.磁盤格式化五.磁盤挂載六.手動增加swap空間七.LVM詳解八.RAID

==參考文章==:

https://blog.csdn.net/caipeichao2/article/details/52661825

https://help.aliyun.com/document_detail/25452.html

https://blog.csdn.net/xtdhqdhq/article/details/17581483

https://www.2cto.com/os/201204/126370.html

http://forum.huawei.com/enterprise/zh/thread-274145-1-1.html

https://blog.csdn.net/JesseYoung/article/details/38367217

http://note.youdao.com/groupshare/?token=4B93E8BA2C634591BCEF4A6F94A3819C&gid=28142651

繼續閱讀