天天看點

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

一,檔案系統詳解

1,EXT3/4檔案系統

1.1 詳解

1.1.1 類型

索引index檔案系統

1.1.2 系統限制

Ext3: 檔案系統最大16TB,單個檔案最大2TB

Ext4: 檔案系統最大16TB,單個檔案最大16TB

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

1.1.3 出處

Red_Hat_Enterprise_Linux-7-7.0_Release_Notes-zh-CN

希望大家課下閱讀該書籍

1.1.4 存儲結構

磁盤>分區>檔案系統>塊組>索引目錄>資料塊

原版

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

中文

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

1.1.5 名詞解釋

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

superblock:記錄此檔案系統的整體資訊。包括inode/block的總量,使用量,剩餘量,以及檔案系統的格式等等。

inode:記錄檔案的屬性(檔案的中繼資料metadata),一個檔案占用一個inode,同時記錄此檔案資料所在的block numbber。inode大小 為 128 bytes

block:實際存儲檔案的内容,若檔案較大,會占用多個block。block大小 為 1, 2, 4K

superblock

1 block 與 inode 的總量;

2未使用與已使用的 inode / block 數量;

3 block 與inode 的大小 (block 為 1, 2, 4K,inode 為 128 bytes);

4 filesystem 的挂載時間、最近一次寫入資料的時間、最近一次檢驗磁盤 (fsck) 的時間等檔案系統的相關資訊;

5一個 valid bit 數值,若此檔案系統已被挂載,則 valid bit 為 0 ,若未被挂載,則 valid bit 為 1

6 superblock的備份資訊。

inode

包含檔案的元資訊,具體來說有以下内容:

* 檔案的位元組數

* 檔案擁有者的User ID

* 檔案的Group ID

* 檔案的讀、寫、執行權限

* 檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案内容上一次變動的時間,atime指檔案上一次打開的時間。

* 連結數,即有多少檔案名指向這個inode

* 檔案資料block的位置

block

存儲檔案的實際資料。BLOCK 大小設定

1.2 示例部分  

示例1:inode

創造一個檔案,觀察inode資訊。

ll   -i    檔案名

示例2:block

問題1:分區中,檔案的數量和什麼有關系。

1 觀察某個分區中的inode節點數

df    -i

2 建立一個檔案

touch  檔案名

3 再次觀察inode節點數

df    -i

4 創造大量檔案。觀察inode使用情況

for    i     in     `seq 30000`     ;      do      touch     $i     ;     done

5 在另一個SHEEL,觀察inode變化情況。

watch -n 2 'df -i'

6 請問最後,還能否建立新檔案呢?

結論:inode決定了檔案系統中檔案的數量。

7.但是,能否向已存在的檔案中寫入内容呢?答案是?

結論:block決定了檔案存儲的空間。

問題2:當分區空間大小消耗完畢,還能否新增檔案?

cp: 無法建立普通檔案"": 裝置上沒有空間

1 向目标分區寫入大量資料,填滿

dd   if=/dev/zero     of=/disk1/5.txt    bs=1k    count=1000

2 檢視目标分區容量,已滿

df -hT

3 創造新檔案

touch

4 得出結論,磁盤空間的限制根據inode和block兩方面

請清理掉填滿的分區。避免不必要的報錯。

示例3:superblock

目的:通過查詢檔案系統,了解inode/block/group block的概念

ext4檔案系統

1. 方法一:dumpe2fs 檢視檔案系統

1  dumpe2fs 檢視EXT4檔案系統。

[[email protected] ~]#dumpe2fs  /dev/vg1/lv1

[[email protected] ~]# dumpe2fs /mnt/lv2 |less

Filesystem volume name:   <none>        //卷标

Last mounted on:          /mnt/lv2        //最後一次挂載

Filesystem UUID:          0b6c98a1-0ec4-4fc6-b594-38d729d3791e    //uuid

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)    //版本

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize    //特性

Filesystem flags:         signed_directory_hash

Default mount options:    user_xattr acl    //預設挂載屬性

Filesystem state:         clean        //幹淨,非修複狀态

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              77824    //inode總數

Block count:              307200    //block總數

Reserved block count:     14335    //保留block

Free blocks:              264119    //空閑block

Free inodes:              75324    //空閑inode

First block:              1        //第一個block

Block size:               1024        //block大小

Fragment size:            1024        

Group descriptor size:    64

Reserved GDT blocks:      255

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         2048

Inode blocks per group:   256

Flex block group size:    16

Filesystem created:       Thu Oct 12 7:49:17 2016    //建立時間

Last mount time:          Thu Oct 12 8:11:01 2016        //上次挂載    

Last write time:          Thu Oct 12 8:11:01 2016    //檔案系統寫入時間

Mount count:              2        //挂載次數

Maximum mount count:      -1

Last checked:             Thu Oct 12 8:49:17 2017    //最後一次檢測

Check interval:           0 (<none>)

Lifetime writes:          39 MB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11        //第一個inode

Inode size:               128    //inode大小,位元組

Journal inode:            8

Default directory hash:   half_md4

Directory Hash Seed:      ae1105b5-c894-4e37-84e3-16ac564f60d4

Journal backup:           inode blocks

Journal features:         journal_incompat_revoke journal_64bit

日志大小:             4096k

Journal length:           4096            //日志類資訊

Journal sequence:         0x00000008

Journal start:            1

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]

Checksum 0xa19a, unused inodes 514

主 superblock at 1, Group descriptors at 2-4

保留的GDT塊位于 5-259

Block bitmap at 260 (+259), Inode bitmap at 276 (+275)

Inode表位于 292-547 (+291)

3412 free blocks, 514 free inodes, 366 directories, 514個未使用的inodes

可用塊數: 4781-8192

可用inode數: 1535-2048

Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]

Checksum 0x4d50, unused inodes 2048

備份 superblock at 8193, Group descriptors at 8194-8196 //備份的超級塊,用來恢複損壞塊組的。

保留的GDT塊位于 8197-8451

Block bitmap at 261 (bg #0 + 260), Inode bitmap at 277 (bg #0 + 276)

Inode表位于 548-803 (bg #0 + 547)

499 free blocks, 2048 free inodes, 0 directories, 2048個未使用的inodes

可用塊數: 10253, 10255-10752

可用inode數: 2049-4096

2. 方法二:tune2fs檢視檔案系統(可修改卷标)

tune2fs 也可以檢視檔案系統。

[[email protected] ~]# tune2fs -l /dev/sda3

tune2fs 1.39 (29-May-2006)

Filesystem volume name: qianfeng

Last mounted on: <not available>

Filesystem UUID: 28459f88-87dc-4624-94a7-07b0f3eb2420

Filesystem magic number: 0xEF53

Filesystem revision #: 1 (dynamic)

Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super

Default mount options: (none)

Filesystem state: clean

Errors behavior: Continue

Filesystem OS type: Linux

Inode count: 48960

Block count: 195312

Reserved block count: 9765

Free blocks: 183410

Free inodes: 48946

First block: 1

Block size: 1024

First inode: 11

Inode size: 128

Journal inode: 8

修改卷标,可使用-L 參數

例如:tune2fs  -L qianfeng  /dev/vg1/lv1

擴充選項

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

xfs檔案系統

    xfs_growfs /dev/vg1/lv1

    xfs_info /dev/vg1/lv1

示例4:卷标

更改ext4檔案系統的卷标資訊(設定标簽)

[[email protected] ~]# tune2fs -L music /dev/vg1/lv1

2,XFS檔案系統

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)
Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

注意:與EXT4修複同理,不可以挂載使用檔案系統時修複。

3,FAT檔案系統

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

二,檔案連結

1,符号連結symbolic link /軟連結

符号連結 symbolic link /軟連結,絕對路徑記錄/快捷方式。

1 建立一個檔案,并輸入内容。

[[email protected] ~]# echo 111 > /file1

2 建立一個軟連接配接。

[[email protected] ~]# ln -s /file1 /home/file11

3 觀察軟連接配接

[[email protected] ~]# ll /home/file11

lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

4 觀察軟連接配接檔案的inode是新的。内容是6,就是源檔案的絕對路徑。

[[email protected] ~]# ll -i /file1 /home/file11

4599081 -rw-r--r-- 1 root root 4 Dec 20 17:57 /file1

135 lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

5 檢視兩個檔案,内容一緻。

[[email protected] ~]# cat /file1

111

[[email protected] ~]# cat /home/file11

111

6 删除源檔案,軟連接配接閃爍,不可用。

[[email protected] ~]# rm -rf /file1

[[email protected] ~]# ll /home/file11

lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

總結:軟連接配接是一個新檔案,像快捷方式,可以對檔案和目錄做軟連接配接。

軟連接配接記錄的隻是源檔案的絕對路徑。

軟連接配接失去源檔案不可用。

2,硬連結

硬連結,新的檔案入口

1 建立同分區硬連結成功,建立不同分區硬連結失敗。

[[email protected] ~]# echo 222 > /file2

[[email protected] ~]# ln /file2 /file2-h1

[[email protected] ~]# ln /file2 /home/file2-h2    

//将檔案已硬連結方式,發送到其他分區。結果是?

ln: failed to create hard link ‘/home/file2-h2’ => ‘/file2’: Invalid cross-device link

[[email protected] ~]# ln /file2 /etc/file2-h3

2 硬連結的inode号相同,但并不占用block。使用df -k觀察硬連結數量無變化。

[[email protected] ~]# ll -i /file2 /file2-h1 /home/file2-h3

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /etc/file2-h3

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /file2

4599081 -rw-r--r-- 3 root root 4 Dec 20 18:03 /file2-h1

把一些重要檔案做多個連結

3 不允許将硬連結指向目錄

[[email protected] home]# ln /home/ /mnt

ln: “/home/”: 不允許将硬連結指向目錄

總結:硬連結隻能針對檔案做。不能對目錄做。

硬連結隻能在同分區做。

硬連結不占用block。

硬連結其實是複制了inode。

三,RAID(了解)

1,簡介

PAID:廉價磁盤備援陣列(Redundant Array of Independent Disks)

作用:容錯、提升讀寫速度

2,類型

RAID類型 個數 使用率 優缺點

------------------------------------------------------

RAID0 條帶集 2+ 100% 讀寫速率快,不容錯

RAID1 鏡像集 2 50% 讀寫速率一般,容錯

RAID5 帶奇偶校驗條帶集 3+ (n-1)/n 讀寫速率快,容錯,允許壞一塊

RAID6 帶奇偶校驗條帶集雙校驗 4+ (n-2)/n 讀寫快,容錯,允許壞兩塊

RAID10 RAID1的安全+RAID0的高速 4 50% 讀寫速率快,容錯

RAID50 RAID5的安全+RAID0的高速 6 (n-2)/n 讀寫速率快,容錯

RAID60 RAID6的安全+RAID0的高速 8 (n-4)/n 讀寫速率快,容錯

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)
Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)
Linux存儲管理2一,檔案系統詳解二,檔案連結三,RAID(了解)

3,不同場景RAID的使用

RAID 實作方式

硬RAID: 需要RAID卡,有自己的CPU,處理速度快,有電池和無電池。

軟RAID: 通過作業系統實作,比如Windows、Linux

4,RAID5(3塊硬碟)+熱備(1塊硬碟)

制作磁盤陣列步驟(重點部分)

4.1 準備4塊磁盤

[[email protected] ~]# ll /dev/sd*

brw-rw---- 1 root disk 8, 48 Jan 13 16:07 /dev/sdd

brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde

brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf

brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg

4.2 建立RAID

[[email protected] ~]# yum -y install mdadm //確定mdadm指令可用

[[email protected] ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}

 -C 建立RAID

/dev/md0 第一個RAID裝置

-l5 RAID5

-n RAID成員的數量

-x 熱備磁盤的數量

可用空間2G

4.3 格式化,挂載

[[email protected] ~]# mkfs.xfs /dev/md0

[[email protected] ~]# mkdir /mnt/raid5

[[email protected] ~]# mount /dev/md0 /mnt/raid5

[[email protected] ~]# cp -rf /etc /mnt/raid5/etc1

4.4 檢視RAID資訊

[[email protected] ~]# mdadm -D /dev/md0 //-D 檢視詳細資訊

/dev/md0:

Version : 1.2

Creation Time : Mon Jan 13 16:28:47 2016

Raid Level : raid5        //raid類型

Array Size : 2095104 (2046.34 MiB 2145.39 MB)

Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)

Raid Devices : 3        //組中裝置的數量

Total Devices : 4    //總裝置數

Persistence : Superblock is persistent

Update Time : Mon Jan 13 16:34:51 2016

State : clean     //狀态,衛生的,哈哈

Active Devices : 3    //活躍3個

Working Devices : 4  //4個在工作

Failed Devices : 0        //壞了1就危險了,2個就完蛋了

Spare Devices : 1        //熱備的1個。

Layout : left-symmetric

Chunk Size : 512K    //校驗碼大小

Number Major Minor RaidDevice State

0 8 48 0 active sync /dev/sdd        //同步

1 8 64 1 active sync /dev/sde        //同步

4 8 80 2 active sync /dev/sdf            //同步

3 8 96 - spare /dev/sdg

4.5 模拟一塊硬碟損壞,并移除

終端一:

[root@tianyun ~]# watch -n 0.5 'mdadm -D /dev/md0 | tail' //watch持續檢視

終端二:

[[email protected] ~]# mdadm /dev/md0 -f /dev/sde -r /dev/sde

//模拟壞了并移除

-f --fail

-r --remove

4.6 設定RAID開機生效

[[email protected] ~]# mdadm -D -s

ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e

[[email protected] ~]# mdadm -D -s > /etc/mdadm.conf

4.7 參考

重建過程

Update Time : Mon Aug 4 22:47:47 2016

State : clean, degraded, recovering

Active Devices : 2

Working Devices : 3

Failed Devices : 0

Spare Devices : 1

Layout : left-symmetric

Chunk Size : 512K

Rebuild Status : 3% complete

Name : localhost.localdomain:0 (local to host localhost.localdomain)

UUID : 3df9624c:138a5b3e:2f557132:59a43d04

Events : 41

Number Major Minor RaidDevice State

0 252 16 0 active sync /dev/vdb

3 252 64 1 spare rebuilding /dev/vde    //正在重建

4 252 48 2 active sync /dev/vdd

指令選項彙總

mdadm選項彙總:

-s --scan

-S --stop

-D --detail

-C --create

-f --fail

-r --remove

-n --raid-devices=3

-x --spare-devices=1

-l --level=5

繼續閱讀