Linux磁盘管理

硬盘:

    机械式硬盘5400,7200,10000转/分

    SSD


机械式:

    track磁道

    sector: 512bytes

    cylinder柱面: 分区的基本单位;


    MBR:Master Boot Record,0扇区0磁道

         512bytes

             446: bootloader引导加载器

    64: filesystem allocation table

         16字节: 标识一个分区(最多4个主分区)

      2:55AA


    磁盘接口类型:

        IDE (ATA):133MB/s,/dev/hd(centos5)

        SCSI: 640MB/s

        SATA:6Gbps

        SAS:6Gbps

        USB:480MB/s

    

    识别硬盘设备:/dev/sd

        标记不同的硬盘设备:/dev/sd[a-z]

        标记同一设备上的不同分区:/dev/sd[a-z][1-]

        1-4: 主或扩展分区标识

        5+:逻辑分区标识

    

    设备文件:特殊文件

        设备号:

        major, minor

        major: 设备类型

        minor: 同一类型下的不同设备

        

    “块”:block,随机设备

    “字符”:character,线性设备

    

                    GPT

                    分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;


分区工具:

fdisk, parted, sfdisk


fdisk工具的使用:

磁盘管理和文件系统管理(1)_磁盘管理

    *最多支持在一块硬盘上的15个分区;

磁盘管理和文件系统管理(1)_磁盘管理_02

    分区管理子命令:

p: 显示

n: 创建

d: 删除

t: 修改分区ID

l: 列出所有支持ID类型

w: 保存退出

q: 放弃修改并退出

m: 获取帮助

磁盘管理和文件系统管理(1)_磁盘管理_03

磁盘管理和文件系统管理(1)_磁盘管理_04

    创建完成之后,查看内核是否已经识别新的分区:

# cat /proc/partitions


    有三个命令可以让内核重读磁盘分区表:

CentOS 5: partprobe [DEVICE]

        CentOS 6,7: 

            partx

         kpartx


            partx命令:(格式化)

         partx DEVICE

                        partx -a DEVICE

                        partx -a -n M:N DEVICE

                        M  精确

                        M: 从开始

                        :N 到哪为止

磁盘管理和文件系统管理(1)_磁盘管理_05

磁盘管理和文件系统管理(1)_磁盘管理_06

             kpartx命令:(格式化)

磁盘管理和文件系统管理(1)_磁盘管理_07      kpartx -af DEVICE


Linux文件系统管理


文件系统:

    VFS:Virtual File System,支持多种文件系统。

   

    Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap

    光盘:iso9660

    Windows: fat32(vfat), ntfs

    Unix: ffs, ufs, jfs, jfs2

    网络文件系统:nfs, cifs

    集群文件系统:ocfs2, gfs2

    分布式文件系统:ceph, 

    moosefs, mogilefs, hdfs, gfs, glusterfs


    (1) 日志型文件系统

    非日志型文件系统:ext2

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

    

    (2) swap:交换分区,换进换出,在磁盘上。



创建文件系统:

    在分区上执行格式化(高级格式化)

        要使用某种文件系统,满足两个条件:

        内核中:支持此种文件系统

        用户空间:有文件系统管理工具



创建工具:mkfs (make filesystem)

    mkfs -t type DEVICE

磁盘管理和文件系统管理(1)_磁盘管理_08

    mkfs.type DEVICE

    fsck查看

磁盘管理和文件系统管理(1)_磁盘管理_09

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

    mke2fs -t {ext2|ext3|ext4} DEVICE

    -b BLOCK: 1024, 2048, 4096

    -L 'LABEL': 设定卷标

磁盘管理和文件系统管理(1)_磁盘管理_10


    blkid命令:

    blkid DEVICE,查看

    LABEL, UUID, TYPE

磁盘管理和文件系统管理(1)_磁盘管理_11

磁盘管理和文件系统管理(1)_磁盘管理_12

磁盘管理和文件系统管理(1)_磁盘管理_13


练习:

1、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除……文件中的行首的空白字符;

磁盘管理和文件系统管理(1)_磁盘管理_14磁盘管理和文件系统管理(1)_磁盘管理_15

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

磁盘管理和文件系统管理(1)_磁盘管理_16

磁盘管理和文件系统管理(1)_磁盘管理_17

3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

磁盘管理和文件系统管理(1)_磁盘管理_18

4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

磁盘管理和文件系统管理(1)_磁盘管理_19

5、查找/var目录属主为root,且属组为mail的所有文件;

磁盘管理和文件系统管理(1)_磁盘管理_20

6、查找/usr目录下不属于root、bin或hadoop的所有文件;

磁盘管理和文件系统管理(1)_磁盘管理_21

7、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

磁盘管理和文件系统管理(1)_磁盘管理_22

8、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

磁盘管理和文件系统管理(1)_磁盘管理_23

9、查找/etc目录下大于20k且类型为普通文件的所有文件;

磁盘管理和文件系统管理(1)_磁盘管理_24

10、查找/etc目录下所有用户都没有写权限的文件;

磁盘管理和文件系统管理(1)_磁盘管理_25

11、查找/etc目录下至少有一类用户没有执行权限的文件;

磁盘管理和文件系统管理(1)_磁盘管理_26

12、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

磁盘管理和文件系统管理(1)_磁盘管理_27

13、让普通用户能使用/tmp/cat去查看/etc/shadow文件;

磁盘管理和文件系统管理(1)_磁盘管理_28

14、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;

磁盘管理和文件系统管理(1)_磁盘管理_29