首页 > 代码库 > linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷

linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分:

一、处理交换分区和文件及移动介质的使用

二、常见工具free,df,du,dd的使用

三、设置文件系统配额

四、配置raid

五、配置逻辑卷

六、btrfs文件系统



一、处理交换分区和文件及移动介质的使用

  交换分区是系统RAM的补充 

  基本设置包括: 

    创建交换分区或者文件

    使用mkswap写入特殊签名

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

    使用swapon -a 激活交换空间


1、挂载交换分区

 启用:swapon 

    swapon [OPTION]... [DEVICE] 

      -a 激活所有的交换分区 

      -s 查看交换分区详情

      -p PRIORITY:指定优先级   若要永久生效可将/etc/fstab挂载选项处改为 pri=value 

  禁用:swapoff [OPTION]... [DEVICE]


2、SWAP的优先级

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

  如果用户没有指定,那么核心会自动给swap指定一个优先级 ,这个优先级从-1开始,每加入一个新的没有用户指定优先 级的swap,会给这个优先级减一。


3、配置交换分区  

(1) 分区启用swap

    fdisk /dev/sdb

    mkswap -L SWAP_SDB1 /dev/sdb1

    vi /etc/fstab

    LABEL=SWAP_SDB1 swap swap defaults 0 0

    swpaon -a

    swapon -s

注:改优先级(在/etc/fstab中挂载选项改为 pri=number)后用swapoff /dev/sdb1再swapon -s

(2) 文件启用swap

    dd if=/dev/zero of=/testdir/swapfile bs=1M count=1024

    mkswap  /testdir/swapfile 

    vi /etc/fstab

    /testdir/swapfile   swap swap defaults 0 0

    swapon -s cat /proc/swaps

    swpaon -a


4、移动介质的使用

(1) 光盘

    创建iso文件 cp /dev/sr0  /testdir/centos7.iso

    将目录打包成iso文件 mkisofs -r -o /root/etc.iso  /etc/

    挂载iso文件 mount -o loop /testdir/centos7.iso /mnt/iso  (-o loop 在centos7中可省略)

    手工挂载光盘 mount /dev/cdrom /mnt/

    挂载移动设备执行操作后用 sync 进行同步(将内存的数据写入磁盘)
    弹出光盘 eject
    弹入光盘 eject -t

    刻录光盘 wodim –v –eject centos.iso

(2) USB介质

    被内核探测为SCSI设备   /dev/sdaX、/dev/sdbX、或类似的设备文件

    挂载后使用



二、常见工具free,df,du,dd的使用

1、内存空间使用状态:

    free [OPTION]

        -m: 以MB为单位

        -g: 以GB为单位


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

    df [OPTION]... [FILE]...

        -H 以1000为单位

        -T 文件系统类型

        -h: human-readable

        -i:inodes instead of blocks

        -P: 以Posix兼容的格式输出


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

    du [OPTION]... DIR

        -h: human-readable

        -s: summary


4、dd命令:convert and copy a file

(1) 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

        bs=#:block size, 复制单元大小

        count=#:复制多少个bs

(2) 各选项

    of=file 写到所命名的文件而不是到标准输出

    if=file 从所命名文件读取而不是从标准输入

    bs=size 指定块大小(既是是ibs也是obs)

    ibs=size 一次读size个byte

    obs=size 一次写size个byte

    cbs=size 一次转化size个byte

    skip=blocks 从开头忽略blocks个ibs大小的块(对if而言)

    seek=blocks 从开头忽略blocks个obs大小的块(对of而言)

    count=n 只拷贝n个记录

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

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

    nocreat 不创建输出文件

    noerror 出错时不停止

    notrunc 不截短输出文件

(3) dd完成操作

磁盘拷贝:

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

备份MBR

    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader:

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

备份:

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

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

    dd if=/dev/sdx of=/path/to/image

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

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

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

恢复:

    dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘

    gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘

拷贝内存资料到硬盘:

    dd if=/dev/mem of=/root/mem.bin bs=1024 将内存里的数据拷贝到root目录下的mem.bin文件 从光盘拷贝iso镜像:

    dd if=/dev/cdrom of=/root/cd.iso 拷贝光盘数据到root文件夹下,并保存为cd.iso文件

销毁磁盘数据:

    dd if=/dev/urandom of=/dev/sda1 利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据 。执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行。


示例:有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?

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



三、设置文件系统配额

1、综述

    在内核中执行

    以文件系统为单位启用

    对不同组或者用户的策略不同

    根据块或者节点进行限制:执行软限制(soft limit)  硬限制(hard limit)

2、过程

(1) 磁盘配额:
    vim /etc/fstab
    UUID="文件系统uuid"     /home ext4      defaults,usrquota,grpquota  0 0

(2) 创建磁盘配额数据库
    quotacheck -cug  /home
    SElinux:
        setenforce  0
        getenforce
(3) 启用磁盘配额数据库
    quotaon   /home
(4) 配置磁盘配额
    edquota  wang (blocks部分的soft,hard,均是以K为单位,和磁盘的块不同)
    edquota -p wang mage(复制wang的磁盘配额给mage)   
    setquota  bash 100000 150000 0 0 /home(非交互式配置磁盘配额)
(5) 测试
    用户调查quota wang
    配额概述repquota /home

注:把home目录改为独立分区以可以启用磁盘配额(新建分区,暂时挂载到/mnt/home 把/home内容rm到/mnt/home,再把新分区挂载到/home)




四、设定和管理软RAID设备

RAID:廉价(独立)硬盘冗余阵列 Redundant Arrays of Inexpensive(Independent)Disks


1、作用

    提高IO能力:磁盘并行读写

    提高耐用性:磁盘冗余来实现


2、实现方式

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

    内接式RAID:主板集成RAID控制器 安装OS前在BIOS里配置

    软件RAID:通过OS实现


3、级别

(1) RAID-0: 条带卷

    读、写性能提升; 可用空间:N*min(S1,S2,...) 无容错能力  最少磁盘数:2, 2

(2) RAID-1: 镜像卷

    读性能提升、写性能略有下降; 可用空间:1*min(S1,S2,...) 有冗余能力  最少磁盘数:2, 2N

(3) RAID-4: (一块磁盘用于存放奇偶校验位)

    多块数据盘异或运算值,存于专用校验盘
(4) RAID-5: (多块磁盘依次存放校验位)

    读、写性能提升 可用空间:(N-1)*min(S1,S2,...) 有容错能力:允许最多1块磁盘损坏  最少磁盘数:3, 3+

(5) RAID-6:(多块磁盘依次存放校验位,两块硬盘同时存放同一校验位)

读、写性能提升 可用空间:(N-2)*min(S1,S2,...) 有容错能力:允许最多2块磁盘损坏  最少磁盘数:4, 4+

技术分享

4、RAID混合类型级别

(1) RAID-10: 读、写性能提升 可用空间:N*min(S1,S2,...)/2 有容错能力:每组镜像最多只能坏一块 最少磁盘数:4, 4+

(2) RAID-01

(3) RAID-50

(4) RAID7: 可以理解为一个独立存储计算机,自身带有操作系 统和管理工具,可以独立运行,理论上性能最高的RAID模式

(5) JBOD:Just a Bunch Of Disks 功能:将多块磁盘的空间合并一个大的连续空间使用 可用空间:sum(S1,S2,...)

注:常用raid级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

技术分享

5、软raid:

(1) mdadm:为软RAID提供管理界面,模式化工具

    命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>

    支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

    模式:

        创建:-C  装配: -A  监控: -F  管理:-f, -r, -a

     -C: 创建模式

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

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

        -a {yes|no}:自动创建目标RAID设备的设备文件(注意与管理选项-a的区别)

        -c CHUNK_SIZE: 指明块大小

        -x #: 指明空闲盘的个数

    -D:显示raid的详细信息

        mdadm -D /dev/md#

    管理模式:

        -f: 标记指定磁盘为损坏

        -a: 添加磁盘

        -r: 移除磁盘


6、软raid5配置实例
(1) fdisk /dev/sdb  n      t fd
    /dev/sdb1
    dd if=/dev/sdb of=/dev/sdd bs=1 count=512   将sdb的分区格式同步给sdd
(2) mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1   创建raid

(3) mkfs.ext4 /dev/md0
(4) vim /etc/fstab
    /dev/md0     /mnt/raid     ext4 defaults 0    0
(5) mount -a
(6) mdadm -D /dev/md0  查看状态
    cat  /proc/mdstat  观察md的状态
(7) mdadm /dev/md0 -f /dev/sdb1 模拟失败
(8) mdadm /dev/md0 -r /dev/sdb1 删除成员
(9) mdadm /dev/md0 -a /dev/sdb1 添加成员
(10) mdadm -Ds /dev/md0 > /etc/mdadm.conf
(11) umount /dev/md0;mdadm -S /dev/md0


7、软RAID管理

(1) 生成配置文件:mdadm –D –s  >> /etc/mdadm.conf

(2) 停服务:mdadm –S /dev/md0

(3) 激活:mdadm –A –s /dev/md0 激活

(4) 强制启动:mdadm –R /dev/md0

(5) 删除raid信息:mdadm --zero-superblock /dev/sdb1


8、清除软raid示例
(1) umount /dev/md0;mdadm -S /dev/md0
(2) mdadm --zero-superblock /dev/sdx 清除成员raid信息
(3) fdisk /dev/sdx 删除成员分区
(4) vim /etc/fstab
(5) rm /etc/mdadm.conf


五、逻辑卷管理器(LVM)

1、概述

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

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

    将设备指定为物理卷

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

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

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

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


2、创建逻辑卷
(1) 分区
    fdisk /dev/sda t  8e
    partx -a /dev/sda
    lsblk
(2) pvcreate  /dev/sd{a7,b}
    pvs
    pvdisplay
(3) vgcreate vg0 /dev/sd{a7,b}
    vgs;pvs;pvdisplay;vgdisplay
(4) lvcreate  -n lv0 -L 10G vg0
(5) mkfs.ext4 /dev/vg0/lv0
(6) vi /etc/fstab
    mkdir /mnt/lv0;mount -a

3、扩展lv
    lvextend  -L +10G  /dev/vg0/lv0
    resize2fs  /dev/vg0/lv0
    df -h

4、扩展卷组
    pvcreate  /dev/sdc
    vgextend vg0 /dev/sdc


5、删除逻辑卷
删除逻辑卷必须先删除LV,再删除VG,最后删除PV


6、为现有逻辑卷创建快照

    #lvcreate -l  64  -s  -n snap-data -p r /dev/vg0/data



六、btrfs文件系统

    技术预览版

    Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW

1、核心特性:

    多物理卷支持:btrfs可由多个底层物理卷组成,支持RAID, 以及联机“添加”、“移除”,“修改”

    写时复制更新机制(CoW):复制、更新及替换指针,而非“就地 ”更新

    数据及元数据校验码:checksum

    子卷:sub_volume

    快照:支持快照的快照

    透明压缩


2、创建和挂载

(1) 文件系统创建:

    mkfs.btrfs

        -L ‘LABEL‘

        -d <type>: raid0, raid1, raid5, raid6, raid10, single

        -m <profile>: raid0, raid1, raid5, raid6, raid10, single, dup

        -O <feature>

            -O list-all: 列出支持的所有feature

        mkfs.btrfs -L mydata -f /dev/sdb /dev/sdc

(2) 属性查看:

    btrfs filesystem show ; blkid btrfs filesystem show –mounted|all-devices

(3) 挂载文件系统:

    mount -t btrfs /dev/sdb MOUNT_POINT


3、ext4和btrfs互转

(1) ext4转化为btrfs

    fdisk /dev/sdd分区

    mkfs.ext4 /dev/sdd1

    mount /dev/sdd1 /mnt

    cp /etc/fstab /mnt

    umount /mnt/

    fsck -f /dev/sdd1

    btrfs-convert /dev/sdd1 转化ext4为btrfs

    btrfs filesystem  show

    mount /dev/sdd1 /mnt

(2) btrfs转化ext4文件系统

    umount /mnt

    btrfs-convert -r /dev/sdd1

    blkid /dev/sdd1
    再转换成btrfs btrfs-convert  /dev/sdd1

本文出自 “笑猴子” 博客,请务必保留此出处http://xiaomonkey.blog.51cto.com/11869371/1844927

linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷