第11章,磁盘存储和文件系统学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第11章,磁盘存储和文件系统学习笔记相关的知识,希望对你有一定的参考价值。


更多内容请点击:

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) 

http://blog.51cto.com/13683480/2095439


笔记整理开始时间:2018年4月24日11:25:33

 

第11章,磁盘存储和文件系统

        

本章内容:

        磁盘结构

        分区类型

        管理分区

        管理文件系统

        挂载设备

        管理虚拟内存

        RAID管理

        LVM管理

        LVM快照

        

设备文件:

        磁盘设备的设备文件命名:/dev/dev-file

        SCSI,SATA,SAS,IDE,USB:        /dev/sd*

        虚拟磁盘:/dev/vd

        不同磁盘标识:a-z,aa,ab...

               /dev/sda,/dev/sdb,...

        同一设备上的不同分区:1,2.。。

               /dev/sda1,/dev/sda5

        设备号码:     major number       标识设备类型

                            minor number      标识同一类型下的不同设备

        磁盘存储术语:

               head              磁头

               track              磁道

               cylinder  柱面

               sector            扇区

        CHS:

               采用24bit寻址

               其中前10位表示cylinder,中间8位表示head,后面6位表示sector

               最大寻址空间8GB

        LBA:(Logical block addressing)

               LBA是一个整数,通过转换成CHS格式完成磁盘具体

               LBA采用48位寻址

               最大寻址空间128PB

        

使用分区空间步骤:

        分区,创建文件系统,挂载        

               设备识别

               设备分区

               创建文件系统

               标记文件系统

               在/etc/fstab文件中创建条目

               挂载新的文件系统

        

磁盘分区:

        为什么分区:

               优化I/O性能

               实现磁盘空间配额限制

               提高修复速度

               隔离系统和程序

               安装多个OS

               采用不同文件系统

        

        分区:

               两种分区方式:MBR,GPT

               MBR:      Mater Boot Record,  1982年,使用32位表示扇区数,分区不超过2T

                            如何分区:按柱面

                            0磁道0扇区:512bytes

                                                  446bytes:     boot loader

                                                  64bytes:       分区表

                                                         16bytes:标识一个分区

                                                  2bytes: 55  aa

                            4个主分区; 3主分区+1扩展分区(n个逻辑分区)

               

               GPT: GUID(Globals Unique ldentifiers)partition table  支持128个分区

                            使用64位寻址,支持8Z(512byte/block)64Z(4096byte/block)

                            使用128位UUID (Universally  Unique ldentifier)表示磁盘和分区GPT分区表

                                    自动备份在头和尾两份,并有CRC校验位

                             UEFI(统一扩展固件接口)硬件支持GPT,是操作系统启动

               

管理分区:

        列出块设备:        lsblk

               

        创建分区使用:

               fdisk       创建MBR分区

               gdisk             创建GPT分区

               parted           高级分区操作

        partprode-重新设置内存中的内核分区表版本

               

parted 命令:

        ps:    parted的操作都是实时生效的,小心使用

        用法:

               parted /dev/sdb mklabel gpt|msdos

               parted /dev/sdb print

               parted /dev/sdb mkpart primary 1 200 (默认M)

               parted /dev/sdb rm 1

               parted -l       列出分区信息

               

fdisk

        fdisk -l [-u] [dvice]

        

        fdisk /dev/sdb 管理分区

               子命令:

                     p    分区列表

                     t      更改分区类型

                     n     创建新分区

                     d    删除分区

                     u     转换单位

                     w     保存并退出

                     q     不保存并退出

                     v     校验分区

                     o     格式化为 msdos  新分区

                     g     格式化为 gpt  新分区

                    

        查看内核是否已经识别新的分区:

cat /proc/partitions

 

partx:         

        centos6通知内核重新读取硬盘分区表

               新增分区:

                     partx -a  /dev/sd*

               删除分区:

                     partx -d --nr M-N  /dev/sd*

        

        centos5,7:使用 partprobe

partprobe [/dev/sd*]

               

        文件系统:

               文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在

               存储设备上组织文件的方法。操作系统中负责管理和存储的文件信息的软件结构

               称为文件管理系统,简称文件系统。

               从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件

               存储并对存入的文件进行保护和检索的系统。具体的说,它负责为用户建立文件

               存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密

               等。

               支持的文件系统:

/lib/modules/`uname-r`/kernel/fs

 

        文件系统类型:

                     linux文件系统:ext2(Extended file system),ext3,ext4,xfs(SGI),btrfs(Oracle)

                                                  reiserfs,jfs(AIX),swap

                     光盘:iso9660

                     windows:FAT32 exfat ntfs

                     unix:ffs ufs jfs2

                     网络文件系统:NFS CIFS

                     集群文件系统:GFS2,OCFS2

                     分布式文件系统:fastdfs,ceph,moosefs,mogilefs,glusterfs,lustre

                      RAW:未经处理或者未经格式化产生的文件系统

               

               文件系统分类:

                     根据是否支持日志‘journal’功能:

                            日志型文件系统:ext3 ,ext4,xfs..

                             非日志型文件系统:ext2,vfat(fat32)

                     文件系统的组成部分:

                            内核中的模块:ext4,xfs,vfat

                             用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat

                     linux的虚拟文件系统:VFS

                     查看支持的文件系统

cat /proc/filesystems

 

创建文件系统:

        

mkfs命令:

               mkfs.fs_type /dev/sd*

                     ext4

                     xfs

                     btrfs

                     vfat

               mkfs -t fs_type /dev/sd*

                     -L 'LABEL':设定卷标

mke2fs:    ext系列文件系统专用管理工具

                     -t {ext2|ext3|ext4}==  mkfs.ext2,3,4

                     -b  {1024|2048|4096}

                     -L  'LABLE'

                     -i #  为数据空间中每多少个字节创建一个inode,此大小不应该

                     小于block的大小

                     -N #      指定分区中创建多少个inode

                     -l           一个inode记录占用的磁盘空间大小,

                     -m #      默认5%,为管理人员预留空间占总空间的百分比

                     -O FEATURE...:      启用指定特性

                     -O ^FEATURE..      关闭指定特性

                    

        文件系统标签:

               指向设备的另一种方法:

               与设备无关

blkid:         

               blkid:块设备属性信息查看

               blkid /dev/sda1

                     -U UUID        根据指定的uuid  来查找对应的设备

                     -L Label  根据指定的label来查找对应的设备

e2lable:          管理ext系列文件系统的label

                     e2lable device  [lable]

findfs:      查找分区

                     findfs [options] LABEL  =label      等于  blkid -L

                     findfs [options]  UUID=uuid         等于 blkid -U

               PS:

                     在centos7上,GPT分区,默认会多一个PARTUUID

                     创建文件系统之后才会有UUID

 

uuidgen         生成uuid                    

 

tune2fs:

        重新设定ext系列文件系统可调整参数的值

               -l                    查看指定文件系统(分区)超级块信息;super  block

                     无法查看xfs系统

               -L ‘LABEL'   修改卷标

               -m #              修改预留给管理员的空间百分比

               -j                   将ext2升级为ext4 (加上journal功能)

               -O                  文件系统属性启用或禁用,-O ^has_journal

               -o                  调整文件系统的默认挂载选项, -o ^acl

               -U UUID        修改UUID号

        

dumpe2fs:

        块分组管理,32768

        -h   查看超级块信息,不显示分组信息

               

        文件系统检测和修复:

                             常发生于死机或者非正常关机之后

                             挂载为文件系统标记为“no clean”

                             注意:一定不要再挂载状态下修复

fsck.fs_type

               -p   自动修复错误

               -r    交互式修复错误

               fs_type一定要与分区上文件系统类型相同

e2fsck: ext系列文件专用的检测修复工具

               -y: 自动回答yes

               -f           强制修复

               

        挂载,     nount   

                      umount

               挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此

                             目录作为其他文件访问入口的行为

               卸载:     解除此关联关系的过程

               把设备关联挂载点: mount point

               卸载时:可使用设备,也可以使用挂载点

               挂载点下原有文件在挂载完成后会被临时隐藏

               挂载点目录一般为空

        

mount命令:

        挂载方法

               mount device mount-point

               mount:         通过查看/etc/mtab文件显示当前已挂载的所有设备

               mount [-fnrsvw] [-t vfstpe] [-o options] device dir

                      device;指明要挂载的设备;

                            1.     设备文件;例如/dev/sda5

                            2.     卷标; -L  'LABEL',

                            3.     UUID,       -U 'UUID'

                            4.     伪文件系统名称: proc sysfs  devtmpfs configfs

                     dir:       挂载点

                             事先存在,建议使用空目录

                             进程正在使用中的设备无法被卸载

                             

               -t vsftype        指明要挂载的设备上的文件系统类型

               -r                  readonly,只读挂载

               -w                 read and write  读写挂载

               -n                 不更新/etc/mtab, mount不可见 centos7无效

               -a                   自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,

                                    且挂载选项中有auto功能)

               -L ’LABEL‘ 以卷标为指定挂载设备

               -U ’UUID‘ 以UUID指定要挂载的设备

               -B --bind       绑定目录到另一个目录上

        

        查看内核追踪到的一挂载的所有设备

               cat /proc/mounts

               

        mount -o       挂载文件系统的选项,多个选项使用逗号分隔

               async             异步模式

               sync       同步模式

               atime/noatime              包含目录和文件

               diratime/nodiratime      目录的访问时间戳

               auto/noauto                 是否支持自动挂载,是否支持-a选项

               exec/noexec                  是否支持将文件系统上运行应用程序

               dev/nodev                    是否支持在此文件系统上使用设备文件

               suid/nosuid                  是否支持suid和sgid权限

               remount                      重新挂载

               ro                                 只读

               rw                                读写

               user/nouser                  是否允许普通用户挂载此设备, /etc/fstab使用

               acl                                启用此文件系统上的acl功能

               loop                      使用loop设备

        defaults:       相当于rw,suid,dev,exec,auto,nouser,async

 

findmnt

        findmnt mount-point | device      查看挂载情况

lsof

        lsof mount-point                        查看正在访问指定文件系统的进程     

fuser

        fuser -v mount-point                 查看正在访问指定文件系统的进程     

        fuser -km mount-point                      终止所有正在访问指定的文件系统的进程

 

umount:取消挂载

        umount device

        umount mount-point

        

               

/etc/fstab

               配置文件系统体系

               被mount,fsck和其他程序使用

               系统重启时保留文件系统体系

               可以在设备栏使用文件系统卷标

               使用mount -a 命令挂载/etc/fstab中的所有文件系统

 

               每行定义一个要挂载的文件系统

               1     要挂载的设备或伪文件系统

                            设备文件

                            LABEL:LABEL=""

                            UUID:      UUID=

                            伪文件系统名称:proc sysfs

               2     挂载点

               3     文件系统类型:

               4     挂载选项:defaults,acl。。。

               5     转储频率:

                            0     不做备份

                            1     每天备份

                            2     每隔一天转储

               6     自检次序:

                            0     不自检

                            1     首先自检,一般只有rootfs才用1

                             

处理交换文件和分区:

               交换分区是系统RAM的补充

               基本设置包括

                     创建交换分区或者文件

mkswap         使用mkswap  写入特殊签名

                     在/etc/fstab文件中添加适当的条目

                     使用swapon -a 激活交换空间

 

swapon   device                    启用交换分区

               -a                          激活所有的交换分区

               -s                          查看已经使用的swap分区

               -p priority:   指定优先级

               /etc/fstab:              pri=value

swapoff   device                    禁用交换分区

               -a                          禁用所有交换分区

               

        swap的优先级:

               可以指定swap分区0-32676的优先级,值越大优先级越高

               如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从

                      -1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级

                     -1

               先添加的swap 的缺省优先级比较高,除非用户自己指定一个优先级,而用户

               指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)

               优化性能:分布存放,高性能磁盘存放

        

将文件当做swap使用:

               dd if=/dev/zero of=p1 ps=1M count=2048     生成文件

               mkswap p1           格式化

               swapon p1            开启交换分区

                     写入/etc/fstab

                     swapon  -a

               

文件挂载到目录上:

               mkfs.ext4 p1   

               mount -o loop p1 /dir         centos6挂载时需要加-o loop 选项

                                                         centos7可以直接挂载        

        /data/p1  /mnt/app1 ext4 loop 0  0   fstab文件书写格式

                                                         

        losetup -a                                  查看loop设备代表的源文件路径

        ls /dev/loop*                        查看所有loop设备

                                                         centos6默认只有8个loop设备,centos7不限制

        mknod /dev/loop8 b 7 8                    centos6手动生成loop文件来挂载                                                      

        losetup /dev/loop8 p2                 loop8和文件做映射

        mount /dev/loop8 /data/app3            此时挂载就不需要-o了

        vim /boot/grub/grub.conf           centos6配置文件,可修改最大loop数量

                                                                在kernel行尾添加  max_loop=100,重启生效

        

        

挂载目录到目录

        fstab书写格式:

               /root  /mnt/root  none bind 0 0

               

移动介质:

               挂载意味着使外来的文件系统看起来如同是主目录树的一部分

               访问时,介质必须被挂载

               摘除时,介质必须被卸载

               按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)

               挂载点通常在/media 或 /mnt  下

               

使用光盘:

               在图形环境下自动启动挂载/run/media/user/label

               否则就必须被手工挂载

                     mount /dev/cmrom  /mnt/

eject        卸载或弹出磁盘

               创建ISO文件

                     cp /dev/sr0  /root/centos6.iso

mkisofs -r -o file.iso  /dir

               此命令生成的iso文件,比如centos6光盘,可以做yum源,但是不能做引到盘

               使用centos官方提供的mkdvdiso.sh  可以生成引到光盘

        mkdvdiso.sh  /dir  centos6.iso

               生成的iso文件需要挂载之后才可以查看

        

wodim -v -eject  centos.iso

                    

                    

挂载usb介质

               查看usb设备是否识别

lsusb

               被内核探测为scsi设备

                     /dev/sda* /dev/sdb*  或类似的设备

               在图形环境中自动挂载

                     图标在【计算机】窗口中创建

                     挂载在/run/media/user/label

               手动挂载:

                     mount /dev/sd*  /mnt/

                    

常用工具:

 

df: 文件系统空间占用等信息的查看工具

        df [option]..[file]..

               -H          以1000为单位

               -T           文件系统类型:

               -h           human-readable

               -i            inodes instead of  blocks 查看inode编号使用情况

               -P          以Posix兼容的格式输出

                                    设备名很长的情况下 1行显示

                    

du:       查看某目录总体空间占用状态

        du [option]..[dir]..

               -h           human-readable

               -s           summary  

               --max-depth=#    最大深度

 

hexdump:   查看二进制文件

        hexdump -C /dev/sda -n512

        

mknod:              生成块设备文件

        mknod /data/sdA b 8 1

        mknod /data/zefofile c 1 5

        

cp -a   /dev/sda /data  -a  可以复制块设备

        

dd:          convert and copy a file

        用法:

               dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

                     bs=# size       count=# number

                            ibs=size         一次读size个byte

                            obs=size        一次写入size个byte

                            cbs=size        一次转化size个byte

                     skip=numbem      从开头忽略num个ibs大小的块

                      seek=num            从开头忽略num个obs大小的块

                     count=n               只拷贝n个记录

                    

                     conv=            用指定的参数转换文件

                            ascii        转换EBCDIC  为  ASCII

                            ebcdic            转换ASCII为EBCDIC    

                            lcace              把大写字符转换为小写字符

                            ucace             把小写字符转换为大写字符

                            nocreat          不创建输出文件

                            noerror          出错时不停止

                            notrunt          不截短输出文件

                            sync       把每个输入块填充到ibs字节,不足部分用nul空字符补齐

               

        示例:

               备份MBR:

                     dd if=/dev/sda  of=/data/mar.bak bs=1 count=512

               破坏分区表,保留MBR中的bootloader:

                     dd if=/dev/zero of=/dev/sda  bs=1 count=64 seek=446

               

               有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读

               取的大小是128Byts。又有fileB,  想把上面读取到的128Bytes写到第32个字节开

               始的位置,替换128Bytes,      

                     dd if=fielA of=fileB bs=1  count=128 skip=63 seek=31 conv=notrunc

                    

               备份:

                     dd if=/dev/sdx  of=/dev/sdy      

                            将本地/dev/sdx整盘备份到/dev/sdy

                     dd if=/dev/sdx  of=/path/file

                            将/dev/sdx全盘数据备份到指定路径的file文件

                     dd if=/dev/sdx | gzip >  /path/file.gz

                            备份/dev/sdx 全盘数据,并利用gzip压缩,保存到指定路径

               恢复:

                     dd if=/path/file  of=/dev/sdx

                             将备份文件恢复到指定盘

                     gzip -dc /path/file.gz    | dd of=/dev/sdx

                             将压缩的备份文件恢复到指定盘

                             

               拷贝内存资料到硬盘

                     dd if=/dev/mem  of=/root/mem.bin bs=1024

                             将内存里的数据拷贝到root目录下的mem.bin文件

               拷贝光盘数据:

                    

                    

               销毁磁盘数据:

                     dd if=/dev/urandom  of=/dev/sda1

                             

               得到最恰当的block size

               

               测试硬盘读写速度

               

               修复硬盘:

                     dd if=/dev/sda  of=/dev/sda

                             当硬盘较长时间(比如1,2)年放置不使用后,磁盘上会产生消磁点。

                      当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况

                      影响到硬盘的第一个扇区时,可能导致硬盘报废,上边的命令有可能使

                      这些数据起死回生,且这个过程是安全高效的。

                    

练习:

        1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统

               ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载

               选项

               echo -e "n\np\n2\n\n+2G\nw\n" |fdisk /dev/sdb

               mkfs.ext4 -L TEST -m 1 -b 2048 /dev/sdb2

               echo -e "LABEL=TEST /test\text4\tdefaults,acl\t 0\t 0" >>  /etc/fstab

               mkdir /test

               mount -a

               lsblk

                     └─sdb2   8:18    0    2G  0 part /text

               

        2、写一个脚本,完成如下功能:

               (1) 列出当前系统识别到的所有磁盘设备

               (2) 如磁盘数量为1,则显示其空间使用信息

               否则,则显示最后一个磁盘上的空间使用信息

                      13 echo "device  checking"

                      14 sleep 1

                      15 lsblk

                      16

                      17 num=$(lsblk |grep '^sd'|wc  -l)

                      18 last=$(lsblk |grep '^sd'|tail -1|cut -d' '  -f1)

                      19

                      20 if [ $num = 1 ]; then  

                      21          echo "There have just one device"

                      22          sleep 1                                                                    

                      23          df -h | grep $last

                      24          exit 5

                      25 else     

                      26          echo "There have $num device,the last one is: $last  "

                      27          sleep 1

                      28          df -h |grep $last

                      29          exit 10

                      30 fi

                      31

        3、将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件,

               并将其配置为yum源 

                     cp /mnt/cd1   /data/centos6

                     cp /mnt/cd2   /data/centos6

                     mkisofs -r -o  CentOS-6.8-x86_64-bin-DVD2.iso  /centos6

                    

 

RAID:

        什么是RAID   

                            RAID,Redundant Arrays of Inexpensive(Independent)  Disks

                             1988年由加利福利亚大学伯克利分校

                             多个磁盘合成一个阵列来提供更好的性能,冗余,或者两者都提供

               提高IO能力:            

                            磁盘并行读写

               提高耐用性:

                            磁盘冗余来实现

               级别:

                             多块磁盘组织在一起的工作方式有所不同

               RAID实现的方式:

                            外接式磁盘阵列:       通过扩展卡提供适配能力

                            内接式RAID:             主板集成RAID控制器

                                    安装OS前在bios里配置

                            软件RAID:                通过OS实现

                    

        RAID级别:

               RAID-0   条带卷,strip

                            读、写性能提升

                            可用空间N*min

                            无容错能力

                            最少磁盘数2,2+

                    

               RAID-1   镜像卷,mirror

                             读性能提升,写性能略有下降

                            可用空间1*min

                            有冗余能力

                            最少磁盘数2,2N

               RAID-2,3

                             

               RAID-4    多块数据盘异或运算值存于专用校验盘

                            读写提升,有容错

                             校验盘压力大容易坏

               RAID-5

                             4的改进型,所有轮流充当校验盘

                            读,写性能提升

                            可用空间(N-1)*min

                             有容错能力:允许最多1块磁盘损坏

                            最少磁盘数3,3+

               RAID-6

                            有2块校验盘

                            读写性能提升

                            可用空间:(N-2)*min

                             有容错能力:允许最多2块磁盘损坏

                            最少磁盘数:4,4+

               RAID-10

                             多块磁盘先两两组成RAID-1,在组成RAID-0

                            读、写性能提升

                            可用空间:N*min/2

                             有容错能力:每组镜像最多只能坏一块

                            最少磁盘数:4,4+

               RAID-01

                             多块磁盘先分成两组做RAID-0,再组成RADI-1

                            读,写性能提升

                            可用空间:N*min/2

                            容错,RAID1的两边不能同时坏硬盘

                            最少磁盘数4,4+

               RAID-50

                            多块磁盘先实现RAID5,再组合成RAID-0

                            比RAID-10读写提升大,每组raid5里 最多允许坏一块硬盘

               JBOD:   

                            just a Bunch of  disks

                             功能:将多块磁盘的空间合并一个大的连续空间使用

                                    可用空间 sum

                                    不能容错

               RAID-7

                             可以理解为一个独立存储计算机,自身带有操作系统和管理工具,

                             可以独立运行,理论上性能最高的RAID模式

        常用级别:

               RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD

               

软RAID:

               mdadm:  为软RAID提供管理界面

               为空余磁盘添加冗余

               结合内核中的md(multi  devices)

               RAID设备可命令为/dev/md0,/dev/md1...

               

mdadm:

        语法格式:

               mdadm [mode] <raiddevice> [options]  <component-devices>

        支持的RAID级别:LINEAR,0,1,4,5,6,10

                     mode 模式:

                            创建       -C

                            装配       -A

                            监控       -F

                            管理       -f -r  -a

                     <raiddevice>:                     rainname  /dev/md#

                      <component-devices> :      任意块设备,磁盘,分区等

               

               -C          创建模式

                     -n#               使用#个块设备来创建此RAID

                     -l#                 指明要创建的RAID的级别

                     -a{yes|no}      自动创建目标RAID设备的设备文件

                     -c    chunk-size     指明块大小,单位K

                     -x    指明空闲盘的个数

               

               -D          显示raid的详细信息

                     mdadm -D  /dev/md*

               

               管理模式:

                     -f           标记指定磁盘为损坏

                     -a           添加磁盘

                     -r          移除磁盘

               观察md的状态:

cat /proc/mdstat

        

               使用mdadm创建并定义RAID设备

                     mdadm -C /dev/md0 -a yes -l  5 -n 3 -x 1 /dev/sdb{1,2,3,5}

               用文件系统对RAID设备进行格式化

                     mkfs.ext4  /dev/md0

               测试RAID设备

                     mdadm -D|--detail  /dev/md0

               增加新的成员

                     mdadm -G /dev/md0 -a  /dev/sdb1

               模拟磁盘故障

                     mdadm /dev/md0 -f  /dev/sdb1

               移除磁盘

                     mdadm /dev/md0 -r  /dev/sdb1

               

        软RAID管理

               mdadm -D -s >> /etc/mdadm.conf

                     生成配置文件

               mdadm -S /dev/md0

                     停止设备

               mdadm -A -s /dev/md0

                      激活设备,如果没有生成配置文件,停止之后会无法激活

               mdadm -R /dev/md0

                     强制启动

               mdadm --zero-superblock /dev/sdb1

                     删除磁盘的raid信息

               

        PS:

               RAID-0 不支持空闲盘

               raid5,格式化raid,或者空闲盘顶替之后,会有一段时间的 clean, degraded, recovering 时间,

               有一个盘显示 spare rebuilding 的状态

               使用-n4 -a 添加磁盘 会添加成raid盘,无法添加成空闲盘

 

练习:?

        1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,

               开机可自动挂载至/backup目录

?                 fdisk 分出3个1G分区/dev/sdc{1,2,3}     类型fd

                     mdadm -C /dev/md0 -a yes  -l1 -n2 -x1 /dev/sdc{1,2,3}

                     mkfs.ext4  /dev/md0

                     mdadm -D -s >>  /etc/mdadm.conf

                     blkid

                     echo "UUID=''\t  /backup\text4\tdefaults\t0\t0" >>/etc/fstab

                     mkdir  /dev/md0

                     mount  -a

                    

        2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为

               256k,文件系统为ext4,开机可自动挂载至/mydata目录

                     fdisk 分出4个1G分区  /dev/sdb{1,2,3,4} 类型fd

                     mdadm -C /dev/md1 -a yes  -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,4}

                     mkfs.ext4  /dev/md1

                     mdadm -D -s >>  /etc/mdadm.conf

                     blkid  

                     echo  "UUID=''\t/madata\text4\tdefault\t 0\t0 "

                     mkdir  /mydata

                     mount  -a

                    

LVM:逻辑卷管理器

               允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

               允许在多个物理设备间重新组织文件系统

                     将设备指定为物理卷

                      用一个或者多个物理卷来创建一个娟阻

                     物理卷是用固定大小的物理区域(PE,Physical Extent)来定义的

                      在物理卷上创建的逻辑卷是由物理区域PE组成的

                     可在逻辑卷上创建文件系统

               LVM:      Logical Volume  Manager, Version:2

               dm:       device mapper :将一个或多个底层设备组织成一个逻辑设备的模块

               设备名:/dev/dm-#

               软链接:

                             /dev/mapper/VG-LV_NAME

                                    /dev/mapper/vol0-root

                             /dev/VG_NAME/LV_NAME

                                    /dev/vol0/root

 

        LVM可以弹性的更改LVM的容量

               通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV

               的容量,或将其他设备中的PE加到LV中以加大容量

               

pv管理工具

 

        pv

                     pvs                             简要pv信息显示

                     pvdisplay                            详细pv信息显示

                     pvcreate /dev/device    创建pv

                     pvmove                              转移pv上的内容到其他pv

                            pvmove  /dev/sd*

                     pvremove                           删除pv,

                            需要先执行    vgreduce /dev/vg  /dev/sd*

                                                  pvremove /dev/sd*

                                           

 

VG管理工具

 

        vg  

                     vgs                       显示卷组

                     vgdisplay              显示vg详细信息

                     vgcreate        创建卷组

                            -s    指定PE大小

                     vgreduce       卷组减容

                            vgreduce /dev/vg  /dev/sd*

                     vgextend       卷组扩容

                            vgextend /dev/vg  /dev/sd*

                     vgremove             卷组删除

                     vgchange             修改卷组属性,便于迁移

                            -a n 迁出

                            -a y 迁入

                     vgexport        输出卷组,便于迁移

                     vgimport       输入卷组

                     vgrename      vg改名

                            vgrename /dev/vg  name

lv管理工具

 

        lv

                     lvcreate          创建逻辑卷lv

                            -L #        size,直接指定大小M/G

                            -l #,%{FREE|PVS|VG} PE数量,%FREE %VG  表示空闲百分比%和总百分比%

                            -n name        指定lv名

                     lvs                        查看lv

                     lvdisplay        查看lv详细信息

                     lvremove       删除lv

                     lvrename       lv改名

                            lvrename /dev/vg/lv  name

                     lvconvert       恢复逻辑卷快照

                             --merge

                     lvextend        

                            -L [+]size      扩展、扩展到size       

                            -l [+]num  50%FREE/VG 扩展、扩展到num个PE大小   

                     lvreduce               lv减容

                            -L  [-]size

                            -l [-]num       50%FREE/VG

 

               pv删除:

                     pvmove  /dev/sdb1

                     vgreduce /dev/vg1  /dev/sdb1

                     pvremore  /dev/sdb1

                                                                                            

               lv扩容:

                     lvextend  -L +5G /dev/vg/lv      扩展逻辑卷

                     resize2fs /dev/vg/lv            扩展文件系统

lvresize    lvresize -r -l +100%FREE /dev/vg1/lv1    此命令会将文件系统和lv一起扩展

 

               lv减容:

                     umount /dev/vg/lv                            取消挂载

e2fsck            e2fsck -f /dev/vg/lv                    强制检查

resize2fs resize2fs /dev/vg/lv  5G           缩减文件系统 centos6

xfs_growfs                                                               centos7

                     lvreduce -L 5G  /dev/vg/lv

                                                                

                     PS:   lv缩减或者删除必须取消挂载

                             lv扩展之后需要扩展文件系统

                             lv缩减之前需缩减文件系统

        

               跨主机迁移卷组

                            源计算机上:

                                   1.     umount所有卷组上的逻辑卷

                                   2.     vgchange -a n vg

                                                  lvdisplay

                                   3.     vgexport vg

                                                  pvscan    查看pv使用情况

                                           vgdisplay

                                    拆下硬盘

                            目标计算机上:

                                   4.     安装硬盘,并 vgimport  vg

                                   5.     vgchange -ay vg

                                   6.     mount所有卷组上的逻辑卷

               

               逻辑卷管理器快照:

                             快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

                             对于需要备份或者复制的现有数据临时拷贝以及其他操作做来说,快照

                            是最合适的选择

                             快照只有在它们和原来的逻辑卷不同时才会消耗空间

                                    在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者

                                    快照有所改变的时候才会使用这些空间

                                    当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

                                    快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中

                                    更改的数据

                                    建立快照的卷大小只需要原始逻辑卷的15%-20%就够了,也可以使用

                                    lvextend放大快照

                             快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据

                             改动了,则原始数据会被移动到快照区,没有改动的区域择优快照区的文件

                            系统共享

                             由于快照区与原来的LV公用很多PE的区块,因此快照与被快照的LV必须在同一个

                             VG中,系统恢复的时候的文件数量不能高于快照区的实际容量

                    

               使用LVM快照:

               

               为现有的逻辑卷创建快照:

                     lvcreate -l 64 -s -n  data-snapshot -p r /dev/vg/lv

                            -s|--snapshot                    指明快照lv

                            -p|--permission  {r|rw}  指明权限,是读写还是只读

               

               挂载快照:     

                     mkdir -p  /mnt/snap

                     mount -o ro  /dev/vg/data-snapshot /mnt/snap

               

               恢复快照:

                     umount  /dev/vg/data-snapshot

                     umount  /dev/vg/data

                     lvconvert --merge  /dev/vg/snapshot

               

               删除快照:

                     umount  /mnt/snap

                     lvremove  /dev/vg/data-snapshot

               

练习:

        1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小

               为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

               fdisk /dev/sdb     /dev/sdb1 /dev/sdb2 10G  8e

               pvcreat /dev/sdb{1,2}

               vgcreat -s 16M /dev/vg0 /dev/sdb{1,2}

               lvcreat -L 5G -n testlv /dev/vg0

               mkfs.ext4 /dev/vg0/testlv

               mkdir /users

               mount /dev/vg0/testlv /users

               

        2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至

               archlinux用户,复制/etc/pam.d目录至自己的家目录

               useradd -d /users/archlinux

               su archlinux

               cp -r /etc/pam.d ~

                    

        3、扩展testlv至7G,要求archlinux用户的文件不能丢失

               lvextend -L 7G /dev/vg0/testlv

               resize2fs /dev/vg0/testlv

        

        4、收缩testlv至3G,要求archlinux用户的文件不能丢失

               umount /dev/vg0/testlv

               e2fsck -f /dev/vg0/testlv

               resize2fs /dev/vg0/testlv 3G

               lvreduse -L 3G /dev/vg0/testlv

               mount /dev/vg0/testlv /users

               

        5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能  

               lvcreate -L 1G -s -n snap1 /dev/vg0/testlv1

               umount /users

               lvconvert --merge /dev/vg0/snap1

               

 

笔记整理完成时间:2018年4月28日20:18:25

 

 

 


以上是关于第11章,磁盘存储和文件系统学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

大话存储学习笔记(10~13章),NASIP SAN.md

Linux学习笔记第4章 Linux磁盘管理

大话存储学习笔记(16章),数据保护和备份技术

2017-2018-1 20155315 《信息安全系统设计基础》第11周学习总结

2017-2018-1 学号20155311 《信息安全系统设计基础》第11周学习总结

Python学习笔记__9.1章 文件读写