运维大世界我爱编程

第09章 存储管理2

2018-04-17  本文已影响8人  fe8478c7ba2a
存储管理高级课程
    文件系统详解
        EXT3/4文件系统
            详解
                类型
                    索引index文件系统
                系统限制
                    Ext3: 文件系统最大16TB,单个文件最大2TB
                    Ext4: 文件系统最大16TB,单个文件最大16TB

                存储结构
                    磁盘>分区>文件系统>块组>索引目录>数据块

                            
                名词解释
                    
                    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: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决定了文件存储的空间。
     问题:当分区空间大小消耗完毕,还能否新增文件?
        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文件系统。
                    [root@localhost ~]#dumpe2fs  /dev/vg1/lv1
                    [root@localhost ~]# 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 也可以查看文件系统。

                    [root@localhost ~]# 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
扩展选项
            xfs文件系统
                    xfs_growfs /dev/vg1/lv1
                    xfs_info /dev/vg1/lv1
:修改卷标
                更改ext4文件系统的卷标信息(设置标签)
                    [root@tianyun ~]# tune2fs -L music /dev/vg1/lv1
XFS文件系统
            注意:与EXT4修复同理,不可以挂载使用文件系统时修复。
        FAT文件系统
文件链接
        一、符号链接 symbolic link /软链接
            一、符号链接 symbolic link /软链接,绝对路径记录/快捷方式。
                1 创建一个文件,并输入内容。
                    [root@tianyun ~]# echo 111 > /file1
                2 创建一个软连接。
                    [root@tianyun ~]# ln -s /file1 /home/file11
                3 观察软连接
                    [root@tianyun ~]# ll /home/file11 
                    lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1
                4 观察软连接文件的inode是新的。内容是6,就是源文件的绝对路径。
                    [root@tianyun ~]# 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 查看两个文件,内容一致。
                    [root@tianyun ~]# cat /file1 
                                111
                    [root@tianyun ~]# cat /home/file11 
                                111
                6 删除源文件,软连接闪烁,不可用。
                    [root@tianyun ~]# rm -rf /file1 
                    [root@tianyun ~]# ll /home/file11 
                    lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

    总结:软连接是一个新文件,像快捷方式,可以对文件和目录做软连接。
            软连接记录的只是源文件的绝对路径。
            软连接失去源文件不可用。
        二、硬链接
            二、硬链接,新的文件入口
                1 创建同分区硬链接成功,创建不同分区硬链接失败。
                    [root@tianyun ~]# echo 222 > /file2
                    [root@tianyun ~]# ln /file2 /file2-h1
                    [root@tianyun ~]# ln /file2 /home/file2-h2  
                    //将文件已硬链接方式,发送到其他分区。结果是?
                    ln: failed to create hard link ‘/home/file2-h2’ => ‘/file2’: Invalid cross-device link
                    [root@tianyun ~]# ln /file2 /etc/file2-h3


                2 硬链接的inode号相同,但并不占用block。使用df -k观察硬链接数量无变化。
                    [root@tianyun ~]# ll -i /file2 /file2-h1 /etc/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 不允许将硬链接指向目录
                    [root@tianyun home]# ln /home/ /mnt
                    ln: “/home/”: 不允许将硬链接指向目录
    总结:硬链接只能针对文件做。不能对目录做。
            硬链接只能在同分区做。
            硬链接不占用block。
            硬链接其实是复制了inode。

RAID(了解)

        简介
            RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks)
            作 用:容错、提升读写速率
        类型
            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 读写速率快,容错

                
                
                
                
一、不同场景RAID的使用
            RAID 实现方式
            硬RAID: 需要RAID卡,有自己的CPU,处理速度快,有电池和无电池。
            软RAID: 通过操作系统实现,比如Windows、Linux
二、RAID5 (3块硬盘) + 热备(1块硬盘)
            1. 准备4块硬盘
                [root@tianyun ~]# 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
            2. 创建RAID
                [root@tianyun ~]# yum -y install mdadm //确保mdadm命令可用
                [root@tianyun ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
                    -C 创建RAID
                    /dev/md0 第一个RAID设备
                    -l5 RAID5
                    -n RAID成员的数量
                    -x 热备磁盘的数量
                    可用空间2G
            3. 格式化,挂载
                [root@tianyun ~]# mkfs.xfs /dev/md0
                [root@tianyun ~]# mkdir /mnt/raid5
                [root@tianyun ~]# mount /dev/md0 /mnt/raid5
                [root@tianyun ~]# cp -rf /etc /mnt/raid5/etc1
            4. 查看RAID信息
                [root@tianyun ~]# 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
  1. 模拟一块硬盘损坏,并移除
    5. 模拟一块硬盘损坏,并移除
    终端一:
    [root@tianyun ~]# watch -n 0.5 'mdadm -D /dev/md0 | tail' //watch持续查看
    终端二:
    [root@tianyun ~]# mdadm /dev/md0 -f /dev/sde -r /dev/sde
    //模拟坏了并移除
    -f --fail
    -r --remove
    6. 设置RAID开机生效
    [root@tianyun ~]# mdadm -D -s
    ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e

[root@tianyun ~]# mdadm -D -s > /etc/mdadm.conf
参考
重建过程
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
上一篇下一篇

猜你喜欢

热点阅读