精华内容
下载资源
问答
  • 2021-10-07 17:22:49

    今天继续给大家介绍Linux基础知识,本文主要内容是Linux磁盘管理。

    一、磁盘基本知识

    磁盘是目前计算机主要存储介质,根据磁盘中材料的磁性来存储数据。磁盘由磁道、柱面、扇区、磁头等部分组成。计算机磁盘如下:
    在这里插入图片描述
    须知,目前磁盘分为机械磁盘与固态磁盘两种,上图是典型的机械磁盘模式,而固态磁盘相当于一个“大号”的U盘,其存储原理这里不予介绍,本文所介绍的磁盘,全部都是指机械磁盘。
    当前,常见的磁盘类型有SAS、SATA、SCSI、IDE、iSCSI等。在Linux系统中,与硬盘相关的设备文件存放在/dev/目录下,磁盘文件有/dev/hda、/dev/sda、/dev/vda等等。

    二、硬盘与文件系统

    在拥有了磁盘之后,想要使磁盘正常存储文件,还需要在磁盘上存在文件系统。用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存等操作都是依靠文件系统来完成的,文件系统的作用是合理的规划硬盘,以保证用户正常的使用需求。文件系统规定了文件在磁盘中的存储格式,会记录磁盘中目录与文件存储位置,当前磁盘使用情况,以及空白的磁盘扇区等等。我们在使用磁盘前,需要首先将磁盘(分区)进行格式化操作,这里的格式化就是创建文件系统。
    Linux系统支持数十种文件系统,常见的文件系统有Ext3、Ext4、XFS等。CentOS6系统默认使用的文件系统是Ext4而CentOS7默认使用文件系统是XFS。

    三、磁盘的Sector与Block

    在磁盘中,文件存储的最小单位是扇区(Sector),每个扇区可以存储512Bytes的数据。但是,为了提升系统效率(因为相比于CPU的执行速度来说,磁盘的读写速度其实非常非常非常慢!!!),操作系统会一次性连续读取多个Sector,我们把这一次性读取的多个Sector叫做Block(块)。
    因此,Block的大小是文件存取的最小单位,Block常见的大小有1K、2K、4K等等。在Linux系统中,/boot分区的Block大小为1K,而/分区的大小为4K。在Linux系统中,查看磁盘分区大小的命令为stat,使用stat命令查看/分区Block大小如下:
    在这里插入图片描述
    从上图红色部分可以看出,/分区的Block大小为4K。

    四、磁盘Inode与Superblock

    通常而言,磁盘对于文件的存储会包括两个部分,具体的文件内容和文件的概略内容,包括文件权限、文件属性、文件名等等,我们把这些信息叫做元信息。磁盘(分区)在被格式化的时候,会被分成两个区域,一个是数据Block区,用于存放文件内容,一个是Inode区,用于存放文件的元信息。当我们使用计算机查看文件内容是,总是先根据文件名找到文件的Inode,然后根据Inode找到文件的Block。
    除了Inode与Block之外,在磁盘中含有一个超级区块(SuperBlock),这里记录了文件系统的整体信息,包括Inode与Block的总量、使用大小、剩余大小等等。

    五、磁盘分区

    磁盘分区可以帮助我们将磁盘分成多个部分,每个部分都可以有自己的文件系统,这样一旦一个分区出现问题时,不至于影响到整个磁盘。
    在MBR分区类型的硬盘中,最多只能存在4个主分区。如果需要超过4个分区,那么就只能使用扩展分区。所谓扩展分区,就是将一个主分区该变成扩展分区,扩展分区再次进行分割,分割成一个一个的逻辑分区,这样磁盘中的分区就可以突破4了。
    原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

    更多相关内容
  • linux磁盘管理详解

    千次阅读 2019-04-23 07:54:05
    磁盘管理 Linux 系统一切以文件的方式存储于硬盘,应用程序数据需要时刻读写硬盘,所以企业 生产环境中对硬盘的操作变得尤为重要,对硬盘的维护和管理也是每个运维工程师必备工作 之一。本节介绍硬盘简介、硬盘数据...

    磁盘管理

    Linux 系统一切以文件的方式存储于硬盘,应用程序数据需要时刻读写硬盘,所以企业
    生产环境中对硬盘的操作变得尤为重要,对硬盘的维护和管理也是每个运维工程师必备工作
    之一。本节介绍硬盘简介、硬盘数据存储方式、如何在企业生产服务器添加硬盘、对硬
    盘进行分区、初始化以及对硬盘进行故障修复等

    1、计算机硬盘简介

    硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成,如图:
    在这里插入图片描述
        Linux 系统中硬件设备相关配置文件存放在/dev/下,常见硬盘命名:/dev/hda、/dev/sda、
    /dev/sdb、/dev/sdc、/dev/vda。不同硬盘接口,在系统中识别的设备名称不一样。IDE 硬盘接口在 Linux 中设备名为/dev/hda,SAS、SCSI、SATA 硬盘接口在 Linux 中设备名为 sda,高效云盘硬盘接口会识别为/dev/vda 等。
        文件储存在硬盘上,硬盘的最小存储单位叫做 Sector(扇区),每个 Sector 储存 512 字节。操作系统在读取硬盘的时候,不会逐个 Sector 的去读取,这样效率非常低,为了提升读取效率,操作系统会一次性连续读取多个 Sector,即一次性读取多个 Sector 称为一个 Block(块)。由多个 Sector 组成的 Block 是文件存取的最小单位。Block 的大小常见的有 1KB、2KB、4KB,Block 在 Linux 中常设置为 4KB,即连续八个 Sector 组成一个 Block。
        /boot 分区 Block 一般为 1KB,而/data/分区或者/分区的 Block 为 4K。可以通过如下三种方法查看 Linux 分区的 Block 大小:
    1、dumpe2fs /dev/sda1 |grep “Block size”
    2、tune2fs -l /dev/sda1 |grep “Block size”
    3、stat /boot/|grep “IO Block”
    例如创建一个普通文件,文件大小为 10Bytes,而默认设置 Block 为 4K,如果有 1 万个小文件,由于每个 Block 只能存放一个文件,如果文件的大小比 Block 大,会申请更多的Block,相反如果文件的大小比默认 Block 小,仍会占用一个 Block,这样剩余的空间会被浪费掉。
        1 万个文件理论只占用空间大小:10000x10=100000Bytes=97.65625MBytes;1 万个文件真实占用空间大小:10000x4096Bytes=40960000Bytes=40000MBytes=40GB。根据企业实际需求,此时可以将 Block 设置为 1K,从而节省更多的空间。

    2、硬盘 Block 及 Inode 详解

        通常而言,操作系统对于文件数据的存放包括两个部分:文件内容、权限及文件属性。操作系统文件存放是基于文件系统,文件系统会将文件的实际内容存储到 Block 中,而将权限与属性等信息存放至 Inode 中。
    通常而言,操作系统对于文件数据的存放包括两个部分:文件内容、权限及文件属性。操作系统文件存放是基于文件系统,文件系统会将文件的实际内容存储到 Block 中,而将权限与属性等信息存放至 Inode 中。
    Superblock:记录文件系统的整体信息,包括 inode 与 block 的总量、使用大小、剩余大小,以及文件系统的格式与相关信息等;
    Inode:记录文件的属性,权限,同时会记录该文件的数据所在的 block 编号;
    Block:存储文件的内容,如果文件超过默认 Block 大小,会自动占用多个 Block。
    因为每个 inode 与 block 都有编号,而每个文件都会占用一个inode ,inode 内则有文件数据放置的 block 号码。如果能够找到文件的 inode,就可以找到该文件所放置数据的block 号码,从而读取该文件内容。
    操作系统进行格式化分区时,操作系统自动将硬盘分成两个区域。一个是数据 Block 区,用于存放文件数据;另一个是 Inode Table 区,用于存放 inode 包含的元信息。每个
    格式化磁盘时,可以指定默认 Inode 和 Block 的大小,-b 指定默认 Block 值,-I 指定默认 Inode 值,如图 7-2 所示,命令如下:
    mkfs.ext4 -b 4096 -I 256 /dev/sdb
    在这里插入图片描述

    3、硬链接介绍

    一般情况下,文件名和 inode 编号是一一对应的关系,每个 inode 号码对应一个文件名。但 UNIX/Linux 系统多个文件名也可以指向同一个 inode 号码。这意味着可以用不同的文件名访问同样的内容,对文件内容进行修改,会影响到所有文件名。但删除一个文件名,不影响另一个文件名的访问。这种情况就被称为硬链接(hard link)。
    创建硬链接的命令为:ln jf1.txt jf2.txt,其中 jf1.txt 为源文件,jf2.txt 为目标文件。如上命令源文件与目标文件的 inode 号码相同,都指向同一个 inode。inode 信息中有一项叫做"链接数",记录指向该 inode 的文件名总数,这时会增加 1,变成 2,如图所示:
    在这里插入图片描述
    同样删除一个 jf2.txt 文件,就会使得 jf1.txt inode 节点中的"链接数"减 1。如果该 inode值减到 0,表明没有文件名指向这个 inode,系统就会回收这个 inode 号码,以及其所对应block 区域,如图所示:
    在这里插入图片描述
    实用小技巧:硬链接不能跨分区链接,硬链接只能对文件生效,对目录无效,也即是目录不能创建硬链接。硬链接源文件与目标文件共用一个 inode 值,从某种意义上来,节省 inode空间。不管是单独删除源文件还是删除目标文件,文件内容始终存在。同时链接后的文件不占用系统多余的空间。

    4、软链接介绍

    除了硬链接以外,还有一种链接-软链接。文件 jf1.txt 和文件 jf2.txt 的 inode 号码虽然不一样,但是文件 jf2.txt 的内容是文件 jf1.txt 的路径。读取文件 jf2.txt 时,系统会自动将访问者导向文件 jf1.txt。无论打开哪一个文件,最终读取的都是文件 jf1.txt。这时,文件 jf2.txt 就称为文件 jf1.txt的"软链接"(soft link)或者"符号链接(symbolic link)。文件 jf2.txt 依赖于文件 jf1.txt 而存在,如果删除了文件 jf1.txt,打开文件 jf2.txt 就会报错:“No such file or directory”。软链接与硬链接最大的不同是文件 jf2.txt 指向文件 jf1.txt 的文件名,而不是文件 jf1.txt的 inode 号码,因此文件 jf1.txt 的 inode 链接数不会发生变化,如图所示:
    在这里插入图片描述
    实用小技巧:软链接可以跨分区链接,软链接支持目录同时也支持文件的链接。软链接源文件与目标文件 Inode 不相同,从某种意义上来,会消耗 inode 空间。不管是删除源文件还是重启系统,该软链接还存在,但是文件内容会丢失,一旦新建源同名文件名,软链接文件恢复正常。

    5、Linux 下磁盘实战操作命令

    企业真实场景由于硬盘常年大量读写,经常会出现坏盘,需要更换硬盘。或者由于磁盘空间不足,需添加新硬盘,新添加的硬盘需要经过格式化、分区才能被 Linux 系统所使用,虚拟机 CentOS6,centos 7 Linux 模拟 DELL R730 真实服务器添加一块新硬盘,不需要关机,直接插入用硬盘即可,一般硬盘均支持热插拔功能。企业中添加新硬盘的操作流程如下:
    (1)检测 Linux 系统识别的硬盘设备,新添加硬盘被识别为/dev/sdb,如果有多块硬盘,会依次识别成/dev/sdc、/dev/sdd 等设备名称,如图所示: fdisk -l
    在这里插入图片描述
    (2)基于新硬盘/dev/sdb 设备,创建磁盘分区/dev/sdb1,如图所示
    fdisk /dev/sdb
    在这里插入图片描述
    (3)fdisk 分区命令参数如下,常用参数包括 m、n、p、e、d、w。
    b 编辑 bsd disklabel; c 切换 dos 兼容性标志;
    d 删除一个分区; g 创建一个新的空 GPT 分区表;
    G 创建一个 IRIX(SGI)分区表;l 列出已知的分区类型; m 打印帮助菜单;
    n 添加一个新分区; o 创建一个新空 DOS 分区表; p 打印分区表信息;
    q 退出而不保存更改;s 创建一个新的空的 Sun 磁盘标签;t 更改分区的系统 ID;
    u 更改显示/输入单位;v 验证分区表; w 将分区表写入磁盘并退出;x 额外功能
    (4) 创建/dev/sdb1 分区方法,fdisk /dev/sdb,然后按 n-p-1-Enter 键- +20G-Enter 键-w,最后执行 fdisk –l|tail -10,如图 (a)、图 (b)所示
    在这里插入图片描述
    在这里插入图片描述
    (5)mkfs.ext4 /dev/sdb1 格式化磁盘分区,如图所示:
    在这里插入图片描述
    (6)/dev/sdb1 分区格式化,使用 mount 命令挂载到/data/目录,如图所示:
    mkdir -p /data/ 创建/data/数据目录
    mount /dev/sdb1 /data 挂载/dev/sdb1 分区至/data/目录
    df -h 查看磁盘分区详情
    echo “mount /dev/sdb1 /data” >> /etc/rc.local 将挂载分区命令加入/etc/rc.local 开机启动

    (7)自动挂载分区除了可以加入到/etc/rc.local 开机启动之外,还可以加入到/etc/fstab 文件中,如图所示:
    /dev/sdb1 /data/ ext4 defaults 0 0
    mount -o rw,remount / 重新挂载/系统,检测/etc/fstab 是否有误。
    在这里插入图片描述
    在这里插入图片描述

    6、基于 GPT 格式磁盘分区

    MBR 分区标准决定了 MBR 只支持在 2TB 以下的硬盘,为了支持能使用大于 2T 硬盘空间,需使用 GPT 格式进行分区。创建大于 2TB 的分区,需使用 parted 工具。在企业真实环境中,通常一台服务器有多块硬盘,整个硬盘容量为 10T,需要基于 GTP格式对 10T 硬盘进行分区,操作步骤如下:
    parted -s /dev/sdb mklabel gpt 设置分区类型为 gpt 格式;
    mkfs.ext3 /dev/sdb 基于 Ext3 文件系统类型格式化;
    mount /dev/sdb /data/ 挂载/dev/sdb 设备至/data/目录
    (1)如图所示,假设/dev/sdb 为 10T 硬盘,使用 GPT 格式来格式化磁盘:
    在这里插入图片描述
    (2)执行命令:parted -s /dev/sdb mklabel gpt,如图所示:
    在这里插入图片描述
    (3) 基于 mkfs.ext3 /dev/sdb 格式化磁盘,如图所示:
    在这里插入图片描述
    parted 命令行也可以进行分区,如图以下三张图所示:
    Parted—>select /dev/sdb—>mklabel gpt—>mkpart primary 0 -1—>print
    mkfs.ext3 /dev/sdb1
    mount /dev/sdb1 /data/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    7、MOUNT 命令工具

    Mount 命令工具主要用于将设备或者分区挂载至 Linux 系统目录下,Linux 系统在分区时,也是基于 mount 机制将/dev/sda 分区挂载至系统目录,将设备与目录挂载之后,Linux操作系统方可进行文件的存储

    8、Mount 命令参数详解

    如下为企业中 Mount 命令常用参数详解:
    mount [-Vh]
    mount -a [-fFnrsvw] [-t vfstype]
    mount [-fnrsvw] [-o options [,…]] device | dir
    mount [-fnrsvw] [-t vfstype] [-o options] device dir
    -V: 显示 mount 工具版本号; -l: 显示已加载的文件系统列表;
    -h: 显示帮助信息并退出; -v: 输出指令执行的详细信息;
    -n: 加载没有写入文件/etc/mtab 中的文件系统; -r: 将文件系统加载为只读模式;
    -a: 加载文件/etc/fstab 中配置的所有文件系统;-o: 指定 mount 挂载扩展参数,常见扩展指令:rw、
    remount、loop 等,其中-o 相关指令如下:
    -o atime: 系统会在每次读取文档时更新文档时间;
    -o noatime: 系统会在每次读取文档时不更新文档时间;
    -o defaults: 使用预设的选项 rw,suid,dev,exec,auto,nouser 等;
    -o exec 允许执行档被执行;
    -o user、-o nouser: 使用者可以执行 mount/umount 的动作;
    -o remount: 将已挂载的系统分区重新以其他再次模式挂载;
    -o ro: 只读模式挂载;
    -o rw: 可读可写模式挂载;
    -o loop 使用 loop 模式,把文件当成设备挂载至系统目录。
    -t: 指定 mount 挂载设备类型,常见类型 nfs、ntfs-3g、vfat、
    iso9660 等,其中-t 相关指令如下:
    iso9660 光盘或光盘镜像;
    msdos Fat16 文件系统;
    vfat Fat32 文件系统;
    企业常用 Mount 案例
    mount /dev/sdb1 /data 挂载/dev/sdb1 分区至/data/目录
    mount /dev/cdrom /mnt 挂载 Cdrom 光盘至/mnt 目录;
    mount -t ntfs-3g /dev/sdc /data1 挂载/dev/sdc 移动硬盘至/data1 目录;
    mount -o remount,rw / 重新以读写模式挂载/系统;
    mount -t iso9660 -o loop centos7.iso /mnt 将 centos7.iso 镜像文件挂载至/mnt 目录;
    mount -t fat32 /dev/sdd1 /mnt 将 U 盘/dev/sdd1 挂载至/mnt/目录;
    mount -t nfs 192.168.1.11:/data/ /mnt 将远程 192.168.1.11:/data目录挂载至本地/mnt目录。

    9、Linux 硬盘故障修复

    企业服务器运维中,经常会发现操作系统的分区变成只读文件系统,错误提示信息为“Read-only file system”,出现只读文件系统,会导致只能读取,而无法写入新文件、新数据等操作。造成该问题的原因包括:磁盘老旧长期大量的读写、文件系统文件被破坏、磁盘碎片文件、异常断电、读写中断等等。
    以企业 CentOS 6, centos 7 Linux 为案例,来修复文件系统,步骤如下:
    (1) 远程备份本地其他重要数据,出现只读文件系统,需先备份其他重要数据,基于rsync|scp 远程备份,其中/data 为源目录,/data/backup/2019/为目标备份目录。
    rsync -av /data/ root@192.168.111.188:/data/backup/2019/
    (2) 可以重新挂载/系统,挂载命令如下,测试文件系统是否可以写入文件。
    mount -o remount,rw /
    (3) 如果重新挂载/系统无法解决问题,则需重启服务器,以 CD/DVD 光盘引导进入Linux Rescue 修复模式,如下两张图所示,光标选择“Troubleshooting”, 按 Enter 键,然后选择“Rescue a CentOS system”,按 Enter 键

    在这里插入图片描述
    在这里插入图片描述
    (4) 选择“1)Continue”继续操作,如图所示:

    在这里插入图片描述
    (5) 登录修复模式,执行如下命令,df –h 显示原来的文件系统,如下图所示:
    chroot /mnt/sysimage
    df -h
    在这里插入图片描述

    (6) 对有异常的分区进行检测并修复,根据文件系统类型,执行相应的命令如下:
    umount /dev/sda3
    fsck.ext4 /dev/sda3 –y
    (7) 修复完成之后,重启系统即可
    reboot

    七、Linux文件服务器企业实战
    运维和管理企业 Linux服务器,除了要熟练掌握 Linux系统本身的维护和管理之外,最
    重要的是熟练甚至精通 Linux系统安装配置各种应用软件,对软件进行调优以及针对软件
    在使用中遇到的各类问题,能够快速定位并解决。
    本章向读者介绍进程、线程、企业 Vsftpd服务器实战、匿名用户访问、系统用户访问及
    虚拟用户实战等内容。
    7.1、进程与线程的概念及区别
    Linux系统各种软件和服务存在于系统,必然会占用系统各种资源,系统资源是如何分配及调度的,本节将给读者展示系统进程、资源及调度相关的内容。
    进程( process)是计算机中的软件程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
    在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器。软件程序是对指令、数据及其组织形式的描述,面进程是程序的实体,通常而言,把运行在系统中的软件程序称之为进程。
    除了进程,读者通常会听到线程的概念,线程也被称为轻量级进程( lightweight process, LWP),是程序执行流的最小单元,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
    线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有操作系统资源,但是该线程可与同属进程的其他线程共享该进程所拥有的全部资源。
    程序、进程、线程三者区别如下。
    程序:程序并不能单独执行,是静止的,只有将程序加载到内存中,系统为其分配资源后才能够执行。
    进程:程序对一个数据集的动态执行过程,一个进程包含一个或者更多的线程,一个线程同时只能被一个进程所拥有,进程是分配资源的基本单位。进程拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率
    线程:线程是进程内的基本调度单位,线程的划分尺度小于进程,并发性更高,线程本身不拥有系统资源,但是该线程可与同属进程的其他线程共享该进程所拥有的全部资源。每一个独立的线程,都有一个程序运行的入口、顺序执行序列和程序的出口
    多进程:每个进程互相独立,不影响主程序的稳定性,某个子进程崩溃对其他进程没有影响,通过增加CPU可以扩充软件的性能,可以减少线程加锁/解锁的影响,极大提高性能。缺点是多进程逻辑控制复杂,需要和主程序交互,需要跨进程边界,进程之间上下文切换比线程之间上下文切换代价大。
    多线程:无须跨进程,程序逻辑和控制方式简单,所有线程共享该进程的内存和变量等。缺点是每个线程与主程序共用地址空间,线程之间的同步和加锁控制比较麻烦,一个线程的崩溃会影响到整个进程或者程序的稳定性。

    展开全文
  • Linux 磁盘管理详解--企业实战篇

    千次阅读 多人点赞 2021-09-14 10:29:54
    无论是windows 系统还是Linux 系统中,所有的文件最终都是存储在硬盘上的,都是在用文件系统管理,要想彻底搞清楚文件系统的管理机制,对磁盘的了解是必不可少的。 一、磁盘的认识 磁盘的分类 如果从存储数据...

     

    写在前面:

            无论是windows 系统还是Linux 系统中,所有的文件最终都是存储在硬盘上的,都是在用文件系统管理,要想彻底搞清楚文件系统的管理机制,对磁盘的了解是必不可少的。   

     一、磁盘的认识

    磁盘的分类

    如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD),机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

    机械硬盘(HDD)

    机械硬盘(HDD)是传统硬盘,为电脑主要的存储媒介之一。由一个或者多个铝制或者玻璃制成的磁性碟片,磁头,转轴,控制电机,磁头控制器,数据转换器,接口和缓存等几个部分组成。工作时,磁头悬浮在高速旋转的碟片上进行读写数据。机械硬盘是集精密机械、微电子电路、电磁转换为一体的电脑存储设备。

    机械硬盘的内部核心图:

     固态硬盘(SSD)

    固态硬盘和传统的机械硬盘最大的区别就是不再采用盘片进行数据存储,而采用存储芯片进行数据存储。固态硬盘的存储芯片主要分为两种:一种是采用闪存作为存储介质的;另一种是采用DRAM作为存储介质的。目前使用较多的主要是采用闪存作为存储介质的固态硬盘。

     固态硬盘内部核心图:

    机械硬盘与SSD固态对比首先差距最大的就是性能,也就是读写速度的差距。

    一般机械硬盘的都区委读取速度为150MB/s左右,而SATA SSD的读取速度能够达到600MB/s,NVMe M.2 SSD最高甚至可以达到3500MB/s以上。

           小记:生产环境下,在选用磁盘的类型上,一般都会有一个折中的考虑,如果存储数据量不是很大,偏重于计算型的场景,可以优先考虑选用SSD的磁盘,能很大的提升计算性能,反之,如果是大数据的存储场景,需要的存储就会很多,低价格的HDD盘就会节省很多成本,性能自然也就会有降低。                                       

    二、磁盘的使用

     磁盘的使用,也即是磁盘的管理,在整个系统中的使用中是起到很核心的作用的,磁盘管理好坏直接关系到整个系统的性能状况。

    2.磁盘分区

    1.1分区的作用:

    1. 分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁硬使用。
    2. 分区表是一个硬盘分区的索引,分区的信息都会写进分区表
    3. 多个分区可以防止数据的丢失,如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据,如果将用户数据和系统数据分开,其中数据盘的数据激增到极限,也不会影响系统的正常运行。
    4. 对磁盘根据文件大小的平均值进行不同区块大小来格式化分区,比如有很多2K的文件,而硬盘分区区块大小为6K,那么每存储一个文件将会浪费4K空间。合理的分区可以很大提高磁盘的使用率。

    2.2分区工具一【fdisk】

    fdisk是Linux下常用的磁盘分区工具。受mbr分区表的限制,fdisk工具只能给小于2TB的磁盘划分分区。如果使用fdisk对大于2TB的磁盘进行分区,虽然可以分区,但其仅识别2TB的空间,所以磁盘容量若超过2TB,就要使用parted分区工具(后面会讲)进行分区。

    【语法格式】

    fdisk [必要参数][选择参数]
    • -l 列出素所有分区表
    • -u 与 -l 搭配使用,显示分区数目

    操作菜单说明:

    • m :显示菜单和帮助信息
    • a :活动分区标记/引导分区
    • d :删除分区
    • l :显示分区类型
    • n :新建分区
    • p :显示分区信息
    • q :退出不保存
    • t :设置分区号
    • v :进行分区检查
    • w :保存修改
    • x :扩展应用,高级功能

    分区操作示例:

    1.使用fdisk -l可以查看新的硬盘sdb

     2.使用fdisk /dev/sdb命令对新磁盘进行分区,输入m查看可以使用的指令

     3.创建第一个分区:/dev/sdb1,大小为2GB。

    n 新建分区
    p 选择主分区(扩展分区e+主分区p<=4)< span>
    1 分区号(1,2,3,4)
    起始柱面:1
    结束柱面:+2G
    p 查看分区信息

     4.创建一个扩展分区:/dev/sdb2

     n 新建分区
    这里有了一个扩展分区,所以可以选择在扩展分区里划分逻辑分区l,或者继续新建主分区p。
    l 在扩展分区里划分逻辑分区(默认从分区号5开始)
    起始柱面:回车(因为是第一个逻辑分区,所以默认从扩展分区的起始柱面开始)
    结束柱面:+2G(不能超过该扩展分区的结束柱面)
    p 查看分区信息

     5.在扩展分区中创建逻辑分区:/dev/sdb5

    n 新建分区
    这里有了一个扩展分区,所以可以选择在扩展分区里划分逻辑分区l,或者继续新建主分区p。
    l 在扩展分区里划分逻辑分区(默认从分区号5开始)
    起始柱面:回车(因为是第一个逻辑分区,所以默认从扩展分区的起始柱面开始)
    结束柱面:+2G(不能超过该扩展分区的结束柱面 

     6.创建第二个逻辑分区:/dev/sdb6

     7.剩下磁盘空间再创建一个主分区(8G-10G),结尾出使用【w】会保存所有的操作【q】会直接退出不保存此次磁盘的分区操作。

    2.3 分区工具二【Parted】

    1 概要说明

    parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区,并且允许调整分区的大小。

    2 GNU手册说明

    parted是一个用于硬盘分区或调整分区大小的工具。使用它你可以创建、清除、调整、移动和复制ext2、ext3、linux-swap、FAT、FAT32和reiserfs分区;也能创建、调整和移动苹果系统的HFS分区;还能检测jfs、ntfs、ufs和xfs分区。该工具常用于为新安装的操作系统创建空间,重新分配硬盘使用情况,在将数据拷贝到新硬盘的时候也常常使用。

     【语法格式】

    用法:parted  [选项]  [设备]  [指令]
    将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。

    参数选项:

    • -h,   显示此求助信息
    • -l,   列出系统系统中所有的磁盘设备,和fdisk -l命令的作用差不多。
    • -m,   进入交互模式,如果后面不加设备则对第一个磁盘进行操作
    • -s,   脚本模式
    • -v,    显示版本
    • 设备:磁盘设备名称,如/dev/sda
    • 指令:如果没有给出“指令”,则parted将进入交互模式运行。
    • align-check       检查分区N的类型(min|opt)是否对齐
    • help          打印通用求助信息,或关于[指令]的帮助信息
    • mklabel        创建新的磁盘标签 (分区表)
    • mkpart        创建一个分区
    • name         给指定的分区命名
    • print              打印分区表,或者分区
    • quit           退出程序
    • rescue        修复丢失的分区
    • resizepart         调整分区大小
    • rm          删除分区
    • select          选择要编辑的设备,默认只对指定的设备操作,这里可以改变指定的设备
    • disk_set        更改选定设备上的标志
    • disk_toggle     切换选定设备上的标志状态
    • set          更改分区的标记
    • toggle          设置或取消分区的标记
    • unit          设置默认的单位
    • version        显示版本信息

    交互式操作示例:分区-磁盘 /dev/sdb

    后续操作:

    格式化分区:mkfs.xfs -f  /dev/sdb1

    创建挂载点:mkdir /data

    挂载磁盘:mount -o noatime,nodiratime /dev/sdb1 /data

    后续操作:

    mklabel gpt
    yes
    mklabel primary 0 500
    p
    mklabel logical 501 1000
    p
    quit

    非交互式操作示例:分区-格式化-挂载 磁盘:/dev/sdi

    [root@test ~]# parted  -s /dev/sdi mklabel gpt            ##对磁盘/dev/sdi进行分区
    [root@test ~]# parted  -s /dev/sdi mkpart primary 1 100%  ##指定分区类型和容量大小
    [root@test ~]# mkfs.xfs -f /dev/sdi1                      ##格式化磁盘
    meta-data=/dev/sdi1              isize=256    agcount=32, agsize=61042880 blks
             =                       sectsz=4096  attr=2, projid32bit=0
    data     =                       bsize=4096   blocks=1953372160, imaxpct=5
             =                       sunit=64     swidth=64 blks
    naming   =version 2              bsize=4096   ascii-ci=0
    log      =internal log           bsize=4096   blocks=521728, version=2
             =                       sectsz=4096  sunit=1 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    [root@test ~]# mkdir /hadoop11                                  ##创建挂载点
    [root@test ~]# mount -o noatime,nodiratime /dev/sdi1 /hadoop11  ##挂载盘
    [root@test ~]# df -h                                            ##查看挂载是否成功
    /dev/sdi1       7.3T   34M  7.3T   1% /hadoop11

    磁盘的开机自动挂载:

    一般磁盘 分区-->格式化-->挂载 之后都会配置一个开机自动挂载,否则下册机器自动重启之后,磁盘不会自动挂载,也就无法正常使用,所以需要将分区信息写到/etc/fstab文件中,实现开机自动挂载。

    操作方式:

    1.通过【blkid】命令查看磁盘的uuid,也是磁盘的唯一标识:

    [root@test ~]# blkid 
    /dev/sdi1: UUID="5a120f30-cfbe-4b70-b837-949f2054e654" TYPE="xfs"

    2.打开/etc/fstab文件,追加需要挂载的磁盘分区信息

               注意:/etc/fstab文件中已有内容不要动,将内容追加即可。

    vim /etc/fstab
    
    UUID=5a120f30-cfbe-4b70-b837-949f2054e654   /hadoop11   xfs   noatime,nodiratime 0    0

    内容说明:

    第1列是设备名或者卷标
    第2列是挂载点(也就是挂载目录)
    第3列是所要挂载设备的文件系统或者文件系统类型
    第4列是挂载选项,通常使用defaults就可以
    第5列设置是否使用dump备份,置0为不备份,置1,2为备份,但2的备份重要性比1小
    第6列设置是否开机的时候使用fsck检验所挂载的磁盘,置0为不检验,置1,2为检验,但置2盘比置1的盘晚检验。【线上一般都是设置为0】

    测试配置是否生效:

    可以手动先umount卸载已挂载好的磁盘,配置好上述文件之后,执行mount -a 执行命令 df -h 查看磁盘又重新挂载上去,则说明配置生效。

     小记:

    因为传统的MBR分区表格式,仅支持最大四个主分区,而且不可以格式化2TB以上的磁盘,因此,生产环境像大数据存储场景下,基本都是大磁盘比较多,所以parted工具的使用也会偏多一些,当然还有很多非大数据场景或者单盘容量本生就不大于2TB的,建议使用fdisk工作操作。

     分享一个自动化分区的脚本:【注意:需要根据线上环境微调部分参数】

    #!/bin/bash
    
    df -h|grep '/hadoop' && exit 1
    
    yum install parted kmod-xfs xfsprogs -y
    disk_num=`fdisk -l | grep 8001 | awk '{print $2}'| awk -F ':' '{print $1}'`
    NUM=0
    for i in $disk_num
    do
            parted  -s $i mklabel gpt
            parted  -s $i mkpart primary 1 100%
            mkfs.xfs -f ${i}1
     
            if [ $NUM -eq 0 ];then
                    TMP=""
            else
                    TMP=$NUM
            fi
     
            mkdir /hadoop${TMP}
            mount -o noatime,nodiratime ${i}1 /hadoop${TMP}
            uuid=`blkid ${i}1 |awk '{print $2}' |sed s#\"##g`
            echo "$uuid     /hadoop${TMP}   xfs     noatime,nodiratime 0       0">>/etc/fstab
            ((NUM++))
    done

    三、磁盘的运维

    1.查看磁盘使用情况 【df -h】

    [root@10-90-49-176-jhdxyjd ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       530G  1.3G  502G   1% /
    tmpfs           126G     0  126G   0% /dev/shm
    /dev/sdi1       7.3T   34M  7.3T   1% /hadoop11

    参数说明:

    第1列是设备名
    第2列是磁盘总容量大小
    第3列是已使用容量大小
    第4列是剩余容量大小
    第5列容量已使用百分比
    第6列挂载点目录名称

     2.查看磁盘负载状况 推荐命令【top】【iostat】

    [root@test ~]# top
    top - 14:58:05 up 15 days, 21:46,  2 users,  load average: 0.00, 0.00, 0.00
    Tasks: 1733 total,   1 running, 1731 sleeping,   1 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  264143368k total,  3548440k used, 260594928k free,    88548k buffers
    Swap:        0k total,        0k used,        0k free,   592176k cached
    

     参数说明:

    Cpu(s):  
    0.0%us :用户空间占用CPU百分比
    0.1%sy :内核空间占用CPU百分比
    0.0%ni  :用户进程空间内改变过优先级的进程占用CPU百分比
    99.9%id : 空闲CPU百分比
    0.0%wa :等待输入输出的CPU时间百分比,的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多
    0.0%hi 
    0.0%si
    0.0%st 

    小记:

    生产环境中对磁盘的运维工作基本上以下两类:

    1.磁盘容量使用过多,需要清理

    此时就需要结合du命令来查看本盘下具体哪个目录使用量过多,如果是可清理的文件就需要清理掉,如果不能清理,就需要对文件压缩和磁盘的扩容了。

    2.磁盘的读写出错

      此时最直接的表现就是磁盘不能读写,报错也很明显

    ls: cannot open directory .: Input/output error

    此时就需要定位问题,修复磁盘了。

      

    展开全文
  • Linux常用磁盘管理命令详解

    千次阅读 多人点赞 2022-03-04 09:46:49
    du命令用于查看文件和目录磁盘的使用空间。 命令语法:du [参数] [文件或目录名称] 参数说明: | 参数 | 说明 | |:--:|:--:| | -a | 列出所有的文件与目录容量。 | | -h | 以G、M、K为单位,返回容量。 | | -s | 列...

    du

    du命令用于查看文件和目录磁盘的使用空间。

    命令语法:du [参数] [文件或目录名称]

    参数说明:

    参数说明
    -a列出所有的文件与目录容量。
    -h以G、M、K为单位,返回容量。
    -s列出总量。
    -S列出不包括子目录下的总量。
    -k以KBytes为单位,返回容量。
    -m以MBytes为单位,返回容量。

    使用示例:

    1. 列出当前目录下的所有文件夹的容量。
    du
    

    效果如下图:

    1. 列出当前目录下的所有文件夹和文件的容量。
    du -a
    

    效果如下图:

    1. 列出当前目录下的所有文件夹和文件的容量,并以G、M、K格式显示容量。
    du -ah
    

    效果如下图:

    1. 列出根目录底下每个目录所占用的容量,并以MBytes单位显示容量。
    du -sm /*
    

    效果如下图:

    df

    df命令用于查看文件系统的磁盘空间占用情况。

    df与du命令不同点在于,df命令用于查看整个文件系统的磁盘空间占用情况,du命令用于查看文件和目录磁盘的使用空间。

    命令语法:df [参数] [目录或文件名]

    参数说明:

    参数说明
    -a列出所有的文件系统,包括系统特有的/proc等文件系统。
    -k以KBytes为单位,返回各文件系统容量。
    -m以MBytes为单位,返回各文件系统容量。
    -h以GBytes、MBytes、KBytes为单位,返回各文件系统容量。
    -H以M=1000K取代M=1024K的进位方式显示各文件系统容量。
    -T显示文件系统类型。
    -i显示inode信息。

    使用示例:

    1. 显示磁盘使用情况。
    df
    

    效果如下图:

    1. 以inode模式来显示磁盘使用情况。
    df -i
    

    效果如下图:

    1. 显示系统内的所有特殊文件格式、名称及磁盘使用情况。
    df -aT
    

    效果如下图:

    1. 以GBytes、MBytes、KBytes等格式显示各文件系统容量。

    执行如下命令,以GBytes、MBytes、KBytes等格式显示各文件系统容量。

    df -h
    

    效果如下图:

    fdisk

    fdisk命令用于磁盘分区。

    命令语法:fdisk [-l] 装置名称

    使用-l参数后输出后面装置名称的所有的分区内容。若仅有 fdisk -l时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

    使用示例:

    1. 列出系统所有装置的分区信息。
    fdisk -l
    

    效果如下图:

    1. 列出系统中的根目录所在磁盘,并查阅该硬盘内的相关信息。

    执行如下命令,找出根目录所在磁盘名:

    df /
    

    效果如下图:

    执行如下命令,对磁盘/dev/vda进行分区操作。

    fdisk /dev/vda
    

    温馨提示:对磁盘进行分区操作时,磁盘名不包含数字。

    效果如下图:

    输入m获取帮助。

    效果如下图:

    具体命令含义如下:

    命令含义
    a设置可引导标记
    b编辑 bsd 磁盘标签
    c设置 DOS 操作系统兼容标记
    d删除一个分区
    g创建一个空的GPT分区表
    G创建一个IRIX分区表
    1显示已知的文件系统类型
    m显示帮助菜单
    n新建分区
    o建立空白 DOS 分区表
    p显示分区列表
    q不保存退出
    s新建空白 SUN 磁盘标签
    t改变一个分区的系统 ID
    u改变显示记录单位
    v验证分区表
    w保存退出
    x附加功能(仅专家)

    输入p查看磁盘状态。

    效果如下图:

    输入q不存储任何操作并离开。


    竟然已经看到这里了,你我定是有缘人,留下你的点赞关注,他日必成大器。

    展开全文
  • Linux 操作系统中, 设备文件 是一种特殊类型的文件。这些文件绝大多数位于 /dev 目录下,用来表示 Linux 主机检测到的某个具体的硬件设备。 比如 /dev/sda 文件通常用来指代系统中的第一块硬盘。 Linux 操作...
  • linux磁盘分区详解.doc

    2021-08-30 16:40:57
    linux磁盘分区详解
  • 命令:mke2fs mke2fs [选项] 文件系统 磁盘盘符= 注释: 1、磁盘虽然分好区了,但是还不能用,还需要在这每一个分区上格式化,所谓格式化,其实就是安装文件系统,Windows下的文件系统有Fat32、NTFS,CentOS使用的...
  • Linux磁盘管理维护命令详解.pdf
  • 系统管理的重要任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文件无法存储的困扰。
  • Linux磁盘配额Quota配置详解
  • Linux磁盘分区挂载详解:从挂载、永久挂载、卸载、分区等全流程,本人亲测好用。
  • (一)、硬盘基本介绍 ...选择磁盘的文件类型在Linux系统中常见的类型有:xfs、swap和ext4 ,这三种。之后会根据磁盘的文件类型对磁盘进行格式化。最后需要对磁盘进行挂载操作。有很多人对挂载不是特别
  • linux磁盘分区详解

    万次阅读 多人点赞 2019-04-15 10:47:00
    1.磁盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也...
  • Linux中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。本文介绍了添加交换空间的技巧和一些常用的命令。
  • Linux磁盘分区详解(parted)

    千次阅读 2020-12-08 18:14:55
    分区是将一个硬盘驱动器分成若干个逻辑驱动器,能够把硬盘连续的区块当作一个独立的磁盘分开使用。 二、为什么要有多个分区? ◇ 防止数据丢失:如果系统只有一个分区,那么假如这个分区损坏,用户将会丢失所的...
  • 目录 一、Linux文件系统简介 1、磁盘概念 2、分区的概念 3、LVM 管理命令 4、 基本术语 二、给虚拟机增加磁盘 1、虚拟机添加新磁盘 2、查看新加的磁盘 三、服务器新建磁盘空间 1、新建分区(PP) 2、创建物理卷(PV...
  • linux磁盘分区详解

    2013-08-09 18:40:34
    linux磁盘分区详解,Centos下磁盘管理

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,398
精华内容 20,959
关键字:

linux 磁盘管理详解