Linux基本命令(四)

2021年11月20日 阅读数:1
这篇文章主要向大家介绍Linux基本命令(四),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

part 1: filesystem introduction
    1.访问存储设备的方法
        1.1 application->kernel->driver->hardware
        1.2 application->kernel->filesystem->dirver->hardware
    2.MBR(446+64+2)
        2.1硬盘的前512个字节,存放硬盘的分区信息
        备份mbr:dd if=/dev/sda of=/bak/mbr count=1 bs=512
       
        2.2MBR只支持4个主,因此要作成3主+1E,全部的Logical分区都在E分区里分
    3.硬盘的最小访问单元512bytes的sector,文件的Block和sector的关系
        size of Block / size of sector = 2^n
   
    4.ext2|3|4文件系统
        4.1ext2
            文件存放:inode+block
        4.2ext3
            ext2+journal
        4.3ext4
            ext3->upgrade
            (1)16TB文件
            (2)无限子目录
            (3)多块分配等功能
            ... ...   
    5.常见的文件系统
        5.1 单机文件系统:ext2|3|4,swap,vfat,fat,msdos,ntfs,iso9660    
        5.2 网络文件系统:SAMBS,CIFS,NFS
        5.3 集群文件系统:GFS,GFS2;ocfs
        5.4 分布式文件系统:pvfs, luster

part2:  文件系统经常使用的命令
    1.查看文件系统的信息
        1.1 du    统计文件/文件夹的量
            du /dir
            du -h /dir
            du -csh /dir    --显示文件夹的总容量
            # du -csh /root/
            14G     /root/
            14G     总计

        1.2 df  挂载的文件系统的信息
            df -h
        1.3 free -m
            显示内存/swap的信息
        1.4 uname
            uname -a     --all
            uname -n    --主机名
            uname -r     --内核版本
    2.文件系统的经常使用管理命令
        2.1 fdisk | parted | gparted  --分区的工具
            fdisk -l        --查看全部设备
            fdisk -l /dev/sdx    --查看/dev/sdx的信息
            fdisk /dev/sdx        --对/dev/sdx进行分区
                m --help
                n --add分区
                d --删除分区
                t --改分区的HEX code
                p --打印信息
                w --保存退出
                q --不保存退出
                +10G, +100M    --指定分区的大小
            partprobe    --刷新信息
            kpartx    /dev/sda    --刷新信息
            partx -a /dev/sda    --刷新信息
   
        2.2 mkfs  mke2fs        --格式化
            mkfs.ext2|3|4  /dev/sda12
            mkfs -t ext2|3|4  /dev/sda12

            mke2fs -t ext2|3|4 /dev/sda12
            mke2fs.ext2|3|4    /dev/sda12
                           
        2.3 e2label    --制做分区的卷盘
            e2label /dev/sda12 sda12_label
   
        2.4 blkid       --定位/打印块设备的属性
            blkid /dev/sda12    --打印分区的属性
            blkid -U "UUID"        --用UUID号码定位设备
            blkid -L label        --用LABEL定位设备
            # blkid /dev/sda6
            /dev/sda6: LABEL="root" UUID="675e0587-68cd-4277-b029-c05b1ece2ac6" TYPE="ext4"
       
        2.5 挂载分区
            mkdir /mnt/sda12_dir
            mount -t ext3|2 /dev/sda12 /mnt/sda12_dir
       
        2.6 卸载分区
            umount /mnt/sda12_dir
            umount /dev/sda12

        2.7 永久挂载
            (1) 常规挂载方法
                vi /etc/fstab
                /dev/sda12     /mnt/sda12_dir    ext3    defaults   0 0
            (2) UUID挂载
                UUID="acc45d4b-d669-41ec-a089-0f10ddd85a9d"   /mnt/sda12_dir12  ext3  defaults   0 0
            (3) LABEL挂载
                LABEL=sda12_label   /mnt/sda12_dir ext3  defaults   0 0
            (4) fstab文件的格式
                man fstab
                1    --设备|UUID|LABEL
                2    --挂载点|挂载路径
                3    --文件系统的类型
                4    --挂载选项
                5    --是否支持dump    1支持 0不支持
                6    --开机或重启时是否使用fsck进行检测和修复分区
                    0    不支持
                    1    根文件系统写成1
                    2    非根文件系统写成2
       
        2.8 建立虚拟内存
            fdisk /dev/sda
                n
                +1G
                t
                82
                w
             partx -a /dev/sda
             mkswap /dev/sda13
             swapon /dev/sda13
             free -m
             swapoff /dev/sda13
             free -m
           
             永久挂载:
                 vi /etc/fstab
                 /dev/sda13    swap    swap    defaults  0 0
       
        2.9 dd    --拷贝文件或者物理块
            dd if=/dev/sdxx    of=/tmp/sdxx.img   bs=100    count=2
                if    源
                of    目的地
                bs    每次读写的数量
                count    读写的次数
           
            1.作光盘镜像
                dd if=/dev/cdrom of=/tmp/rhel6.iso 
                mount -t iso9660 -o loop /tmp/rhel6.iso  /mnt      --挂载光盘镜像
           
            2.备份mbr
                dd if=/dev/sda  of=/opt/mbr  bs=512  count=1    --备份mbr
                dd if=/opt/mbr  of=/dev/sda   bs=512  count=1   
           
            3.创建空文件
                dd if=/dev/zero  of=/tmp/file bs=1M  count=1024
                man zero   
           
            4.全盘备份
                dd if=/dev/sda of=/dev/sdb    --要考虑容量的大小关系,最好两个硬盘同样大
                dd if=/dev/sda of=/opt/filename.img  --备份成文件
               
            5.销毁硬盘
                dd if=/dev/urandom of=/dev/sda  --销毁磁盘数据,用随机数填写(慎用)
       
               
        2.10 查看挂载的文件系统
            mount   
            cat /etc/mtab
            cat /proc/mounts    

        2.11 fsck    --检查及修复文件系统
            -A    根据/etc/fstab这个文件进行修复文件系统
            -f    强制修至
            -y    修复的过程当中自动yes
             e2fsck     --ext2|3|4
       
        2.12 dumpe2fs    --列出文件系统的超级块,block group的信息
            dumpe2fs /dev/sda1

        2.13 tune2fs --调整ext2|3|4文件系统的可调参数
            fdisk /dev/sda   -> /dev/sda14   mkfs ->   ext2
            tune2fs -j /dev/sda14    --ext2升级为ext3
           
            fdisk /dev/sda   -> /dev/sda15   mkfs ->   ext3
            tune2fs -O ^has_journal /dev/sda15    --降级为ext2
           
            tune2fs -l /dev/sda1    --打印的超级块的信息
            建议不要太多用这个东西

part3:    LVM
    1.基础概念
        pv    --物理卷
        vg    --卷组
        lv    --逻辑卷

   

            disk1                          lv1  mount /dir1
            disk2        -->  vg (new_vg1)  ->   lv2  mount /dir2
            disk3                          lv3  mount /dir3
   
    1.物理卷PV
        pvcreate   /dev/sda[15-17]
        pvcreate   /dev/sda15
       
        pvremove   /dev/sda15

        pvscan
           
        pvdisplay 
        pvdisplay  /dev/sda15

    2.卷组VG   
        vgcreate newvg_weekend  /dev/sda[15-17]        --/dev/路径下建立一个叫作newvg_weekend的文件夹
        vgscan
        vgdisplay
        vgextend newvg_weekend /dev/sdb    --扩展VG newvg_weekend
        vgreduce newvg_weekend /dev/sda15  --删除卷组中的pv,但要确保该pv没有被使用

    3.逻辑卷LV
        lvcreate -n lv1 -L 5G newvg_weekend    --在newvg_weekend这个VG上建立一个lv,大小是5G
            在/dev/weekend/下建立一个叫lv1连接,连接到/dev/dm-xx块设备文件上
        lvcreate -n lv2 -l 1000 newvg_weekend    --大小是4G,-l是在块的数量,通常一个块是4k
        lvscan
        lvextend -n /dev/newvg_weekend/lv1 -L +1G   
   
    4.在线扩容
        lvextend -L +5G /dev/newvg_weekend/lv1   --扩容了5G
        resize2fs /dev/newvg_weekend/lv1      --刷新lv1的容量
        df -h
   
part4:  RAID
    raid    --磁盘阵列
    软raid    --模拟的
    硬raid    --硬件支持的

    raid0    --条带    n>=2  读写速度快
    raid1    --镜像    死掉一个,还有一个,恢复数据;读写相对来讲慢一点
    raid5    --带奇偶校验检查的磁盘冗余    n>=3   
    raid10    --raid1+raid0  n>=4n

1.建立一个raid1
    fdisk /dev/sda   -> sdax sdaxx
   
    mdadm    -Cv /dev/md0   -l1    -n2    /dev/sdax    /dev/sdaxx    --建立RAID1,-l指raid的级别,-n是几块硬盘
    mkfs -t ext4 /dev/md0        --格式化
    cat /proc/mdstat    --查看本机全部磁盘阵列状态
    mdadm   -D -s /dev/md0
    mkdir /mnt/md0_dir
    mount -t ext4 /dev/md0 /mnt/md0_dir
2.删除raid
    umount /mnt/raid1_dir
    mdadm -S /dev/md0    --停掉raid
    mdadm --zero-superblock /dev/sda[18-19]

3.建立raid5
    mdadm -Cv /dev/md1 -l5  -n3  /dev/sdax /dev/sdaxx /dev/sdaxxx
    mkfs -t ext4  /dev/md1
    mkdir /mnt/md1_dir
    mount -t ext4 /dev/md1 /mnt/md1_dirnode