linux磁盘知识学习

[TOC]

linux raid 操作总结

配置RAID方案

在Linux中配置RAID

  1. 安装mdadm工具:mdadm是管理Linux软件RAID的标准工具。首先,需要确保已经安装了它。在基于Debian的系统上,可以使用sudo apt-get install mdadm命令安装。对于基于RPM的系统,使用sudo yum install mdadm。
  2. 创建RAID阵列:使用mdadm命令创建RAID阵列。

例如,要创建一个RAID 1阵列,使用以下命令:

bash 复制代码
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

这里,/dev/md0是新创建的RAID设备,level=1指定了RAID级别为1,raid-devices=2表示有两个设备参与RAID,最后/dev/sda1和/dev/sdb1是参与RAID的两个分区。

  1. 格式化和挂载RAID设备:创建RAID后,您需要格式化RAID设备,然后挂载它以便使用。

例如:

bash 复制代码
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid

在其他设备上配置RAID

在非Linux系统或硬件RAID中,配置步骤会有所不同。通常,硬件RAID通过在启动时进入RAID卡的配置界面来设置。对于其他操作系统(如Windows),您可能需要使用特定的管理工具或控制面板选项来配置RAID。

确认是什么RAID级别

在Linux中,您可以使用以下命令来确认RAID级别:

shell 复制代码
cat /proc/mdstat

mdadm --detail /dev/md0

这些命令会显示当前配置的RAID阵列的详细信息,包括它的级别(例如,RAID 0、RAID 1、RAID 5等)。

cat /proc/mdstat 输出示例

ini 复制代码
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid1 sda1[0] sdb1[1]
      1953382464 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
  • Personalities:列出了系统支持的RAID类型。
  • md0:当前活跃的RAID设备名称。
  • active raid1 sda1[0] sdb1[1]:表示md0是一个活跃的RAID 1阵列,包含两个分区(或磁盘):sda1和sdb1。
  • 1953382464 blocks super 1.2 [2/2] [UU]:显示阵列的大小(以块计),使用的元数据版本(1.2),阵列中有2个盘(2/2)都是正常工作状态([UU]表示两个盘都是Up状态)。
  • unused devices: :表示没有未使用的设备。

mdadm --detail /dev/md0输出示例

yaml 复制代码
/dev/md0:
           Version : 1.2
     Creation Time : Sun Apr  4 12:34:56 2021
        Raid Level : raid1
        Array Size : 1953382464 (1862.89 GiB 2000.26 GB)
     Used Dev Size : 1953382464 (1862.89 GiB 2000.26 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Apr 11 15:00:01 2024
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

              Name : hostname:0  (local to host hostname)
              UUID : a1b2c3d4:e5f6g7h8:i9j0k1l2:m3n4o5p6
            Events : 12345

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sda1
       1       8       33        1      active sync   /dev/sdb1

这个输出提供了关于/dev/md0 RAID设备的详细信息,包括其版本、创建时间、RAID级别、数组大小、设备状态等。

  • Raid Level:显示RAID级别为raid1。
  • Array Size:显示数组的总大小。
  • Raid Devices:显示参与RAID的设备数量。
  • Active Devices:显示当前活跃(工作正常)的设备数量。
  • Failed Devices、Spare Devices:分别显示失败和备用的设备数量。

下面的列表提供了每个参与RAID的设备的状态和位置信息,例如/dev/sda1和/dev/sdb1都处于"active sync"状态,意味着它们正在同步数据。

如何确认设备是否做了RAID

  1. 在Linux中:使用上述cat /proc/mdstat或mdadm --detail /dev/md0命令不仅可以查看RAID级别,还可以确认是否配置了RAID。
  2. 在Windows中:可以通过"磁盘管理"工具查看磁盘配置情况,如果有RAID配置,通常会显示为动态磁盘或者有相关的RAID标识。
  3. 在BIOS/UEFI中:对于硬件RAID,通常需要在计算机启动时进入BIOS/UEFI设置界面,在那里可以查看和配置RAID设置。

其他方式

fdisk

fdisk -l(其中-l是小写的L)命令确实可以在Linux中用来查看所有已连接存储设备的分区情况,包括硬盘驱动器、固态驱动器以及设置为RAID的设备。它主要用于显示分区信息,而不直接显示RAID配置详情。

使用fdisk -l查看RAID情况

当您运行fdisk -l时,如果系统中配置了软件RAID,您可能会看到类型为"Linux raid auto"的分区,这表明这些分区被用作RAID设备的一部分。例如:

bash 复制代码
Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1          2048 1953523711 1953521664  931G fd Linux raid autodetect
/dev/sdb1          2048 1953523711 1953521664  931G fd Linux raid autodetect

这里,/dev/sda1和/dev/sdb1都被标记为"Linux raid autodetect",这意味着它们被配置为RAID的一部分。

使用限制

fdisk -l能提供一定的信息,但它不会告诉RAID的级别(如RAID 0、RAID 1等),也不会提供关于RAID阵列当前状态的详细信息。

对于这些更具体的信息,需要使用专门的工具,如:

  1. mdadm:对于软件RAID,mdadm --detail /dev/mdX(其中/dev/mdX是您的RAID设备)将提供关于特定RAID阵列的详细信息,包括其级别、状态、参与的设备等。
  2. 硬件RAID管理工具:对于硬件RAID,通常需要使用特定于制造商的管理软件或固件界面来查看和管理RAID配置。

lsblk

  • lsblk(列出块设备)是一个列出所有可用块设备的命令,包括它们的挂载点和分区。它提供了一个很好的设备层次结构视图,可以帮助识别哪些设备是RAID阵列的一部分。
  • 使用示例
bash 复制代码
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,TYPE
  • NAME: 设备的名称。
  • FSTYPE: 文件系统类型。
  • SIZE: 设备的大小。
  • MOUNTPOINT: 设备的挂载点。
  • TYPE: 设备类型(如磁盘、分区、lvm等)。
  • 输出结果示例
bash 复制代码
NAME   FSTYPE     SIZE MOUNTPOINT TYPE
sda             931.5G            disk
├─sda1 ext4       500M /boot      part
├─sda2             1G [SWAP]      part
└─sda3 ext4     930G   /          part
sdb             931.5G            disk
├─sdb1             931.5G            part
md0    ext4       931G            raid1
  • sda 和 sdb 是系统中存在的两个磁盘,大小均为931.5G。
  • sda1, sda2, sda3 是sda磁盘上的分区。其中,sda1是一个500M的ext4文件系统,挂载在/boot;sda2是一个1G的交换分区;sda3是一个930G的ext4文件系统,挂载在根目录(/)。
  • sdb1 是sdb磁盘上的一个分区,大小为931.5G,但没有使用(未格式化或未挂载)。
  • md0 是一个RAID设备,使用ext4文件系统,大小为931G。它的类型被标记为raid1,说明它是一个RAID 1阵列。这个设备可能由sdb1和另一个未在此列表中显示的分区组成。

parted

  • parted是一个功能强大的磁盘分区和管理工具,可以用来创建、调整、复制和删除硬盘驱动器上的分区。
  • 使用示例:运行sudo parted -l可以列出所有磁盘的分区表,包括RAID设备。
bash 复制代码
sudo parted -l

这条命令会列出所有检测到的磁盘及其分区表的信息。-l选项是--list的简写,用于显示当前所有磁盘的分区信息。

  • 输出结果示例
ini 复制代码
Model: ATA Samsung SSD 860 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  538MB   537MB   fat32        EFI System Partition  boot, esp
 2      538MB   1000GB  999GB   ext4         Linux filesystem

Model: Linux Software RAID Array (md)
Disk /dev/md0: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  2000GB  2000GB  ext4
  • 第一部分显示了一个名为ATA Samsung SSD 860的SSD磁盘(/dev/sda),大小为1000GB。它使用GPT分区表,并且有两个分区:
    • 分区1:大小为537MB,使用FAT32文件系统,是EFI系统分区(用于启动),具有boot, esp标志。
    • 分区2:大小为999GB,使用ext4文件系统,是Linux文件系统分区。
  • 第二部分显示了一个软件RAID数组(/dev/md0),大小为2000GB。它使用loop分区表,并且有一个大分区:
    • 分区1:占据整个RAID数组的空间,大小为2000GB,使用ext4文件系统。

lshw

  • lshw(硬件列表)是一个显示你的系统硬件配置的工具,对于识别与RAID相关的硬件信息特别有用。
  • 使用示例:sudo lshw -class disk -class storage可以显示存储设备和控制器的信息。
bash 复制代码
sudo lshw -class disk -class storage

这个命令会列出所有的磁盘和存储控制器的信息。-class disk指定了只显示磁盘类别的硬件,-class storage则是指定显示存储控制器类别的硬件。

  • 输出结果示例
yaml 复制代码
  *-storage
       description: SATA controller
       product: 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller
       vendor: Intel Corporation
       physical id: 1f.2
       bus info: pci@0000:00:1f.2
       logical name: scsi0
       logical name: scsi1
       version: 05
       width: 32 bits
       clock: 66MHz
       capabilities: storage ahci_1.0 emulated
       configuration: driver=ahci latency=0
       resources: irq:27 ioport:f0d0(size=8) ioport:f0c0(size=4) ioport:f0b0(size=8) ioport:f0a0(size=4) ioport:f060(size=32) memory:f7c06000-f7c067ff

  *-disk
       description: ATA Disk
       product: SSDSC2BW240A3L
       vendor: Intel
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda
       version: DC32
       serial: XXXXXXXX
       size: 223GiB (240GB)
       capabilities: partitioned partitioned:dos
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=000beef1

  *-disk
       description: ATA Disk
       product: WDC WD10EZEX-08M2NA0
       vendor: Western Digital
       physical id: 0.1.0
       bus info: scsi@1:0.0.0
       logical name: /dev/sdb
       version: 1A01
       serial: XXXXXXXX
       size: 931GiB (1TB)
       capabilities: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=5 guid=XXXXXXXX logicalsectorsize=512 sectorsize=512
  • 存储控制器:列出了一个SATA控制器,包含了制造商、型号、物理ID、总线信息、驱动信息等。这些信息有助于识别系统中使用的存储接口类型。

  • 磁盘:显示了两个ATA磁盘,分别是一个223GiB的Intel SSD和一个931GiB的Western Digital硬盘。对于每个磁盘,lshw列出了产品型号、供应商、物理ID、总线信息、逻辑名称(如/dev/sda)、大小以及其他配置细节。

lsscsi

  • lsscsi列出SCSI设备(或ATA/ATAPI设备)的信息,可以用来识别连接到系统的所有SCSI/ATA设备,包括RAID控制器。
  • 使用示例:简单地运行lsscsi可以列出所有SCSI设备。
bash 复制代码
lsscsi

这个命令将会列出系统中所有已识别的SCSI设备,包括硬盘、光驱等。

  • 输出结果示例
ini 复制代码
[0:0:0:0]    disk    ATA      Samsung SSD 850  2B6Q  /dev/sda 
[1:0:0:0]    cd/dvd  HL-DT-ST DVDRAM GH24NSC0  LK00  /dev/sr0 
[2:2:0:0]    disk    LSI      MR9271-4i        3.24  /dev/sdb 
[2:2:1:0]    disk    LSI      MR9271-4i        3.24  /dev/sdc 
  • [0:0:0:0] disk ATA Samsung SSD 850 /dev/sda:这一行表示系统中有一个ATA接口的Samsung SSD 850固态硬盘,设备文件是/dev/sda。[0:0:0:0]是设备的SCSI地址,表示它连接在SCSI总线0, 设备号0, LUN号0。
  • [1:0:0:0] cd/dvd HL-DT-ST DVDRAM GH24NSC0 /dev/sr0:这一行表示有一个HL-DT-ST品牌的DVDRAM光驱,设备文件是/dev/sr0,连接在SCSI总线1, 设备号0, LUN号0。
  • [2:2:0:0] disk LSI MR9271-4i /dev/sdb 和 [2:2:1:0] disk LSI MR9271-4i /dev/sdc:这两行表示通过LSI品牌的MR9271-4i RAID控制器连接的两个磁盘设备,分别对应设备文件/dev/sdb和/dev/sdc。这可能是一个RAID阵列的一部分。

smartctl

  • smartctl是SMART硬盘监控分析和报告工具的一部分,用于打印磁盘健康状况、测试等。它对于检查RAID阵列中磁盘的健康状态非常有用。
  • 使用示例:sudo smartctl -a /dev/sda显示指定硬盘的所有SMART信息,包括健康状态。
bash 复制代码
sudo smartctl -a /dev/sda
  • sudo:由于smartctl需要访问硬件级别的信息,通常需要超级用户权限来运行。
  • smartctl:就是要执行的命令本身。
  • -a:这个选项告诉smartctl显示所有可用的SMART信息,包括磁盘健康状况、所有收集到的SMART属性等。
  • /dev/sda:指定要检查的设备。在这个例子中,/dev/sda是第一个SATA硬盘。如果您想检查另一个硬盘,比如第二个硬盘(通常是/dev/sdb),只需相应地更改这个参数。
  • 输出结果示例
yaml 复制代码
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   083   064   006    Pre-fail  Always       -       124345
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       8854
...
SMART Overall-Health Self-Assessment Test result: PASSED
  • Raw_Read_Error_Rate, Reallocated_Sector_Ct, Power_On_Hours 等行显示了不同的SMART属性。每个属性都有一个"VALUE"(当前值)、"WORST"(最差值)、以及"THRESH"(阈值)。如果"VALUE"低于"THRESH",可能表示磁盘有故障。
  • RAW_VALUE列显示了原始读取的数据,对于不同的属性这些数据代表的意义不同。
  • 最后,"SMART Overall-Health Self-Assessment Test result: PASSED"表示磁盘通过了健康自评测试。如果这里显示"FAILED",则意味着磁盘可能即将出现故障,应该尽快备份数据并考虑更换磁盘。

blkid

  • blkid命令用于查找/打印块设备的UUID、文件系统类型等属性。
  • 使用示例:运行sudo blkid可以显示系统中所有块设备的UUID和文件系统类型,包括RAID分区。
bash 复制代码
sudo blkid
  • sudo:由于blkid可能需要特定的权限来访问某些设备信息,使用sudo可以以超级用户权限运行该命令。

  • blkid:是要执行的命令本身。

  • 主要输出信息

    • UUID:每个文件系统的唯一标识符。UUID对于确保/etc/fstab文件中的挂载条目在系统重启后依然正确非常重要,因为设备名称(如/dev/sda1)可能会变化。

    • TYPE:文件系统类型(如ext4、xfs、ntfs)。

    • LABEL:如果设备有标签(Label),这个标签也会被显示出来。

  • 输出结果示例
ini 复制代码
/dev/sda1: UUID="5f96cafa-e0a7-4a4c-b9a2-2b3e5c8a9676" TYPE="ext4" PARTUUID="00b204d0-01"
/dev/sda2: UUID="I9MkHV-vgN8-Jik6-LAts-Hien-jvge-Q2fCtR" TYPE="LVM2_member" PARTUUID="00b204d0-02"
/dev/mapper/ubuntu--vg-root: UUID="b3f9bc2a-88cb-45f2-b77e-2c37t4e4f6a7" TYPE="ext4"
/dev/mapper/ubuntu--vg-swap_1: UUID="3d3961b4-6e64-4c9d-a8d5-ffd3badb9d0d" TYPE="swap"
  • /dev/sda1 和 /dev/mapper/ubuntu--vg-root 是类型为ext4的分区,它们拥有各自的UUID。

  • /dev/sda2 是一个LVM物理卷,其类型为LVM2_member。

  • /dev/mapper/ubuntu--vg-swap_1 是一个交换分区(swap),也有其独特的UUID。

不同命令使用场景

1.fdisk

  • 使用场景:fdisk主要用于磁盘分区。当你需要创建新的分区、删除旧的分区或者查看磁盘分区表时,fdisk是一个非常合适的工具。它支持MBR(主引导记录)分区表。
  • 示例场景:安装新硬盘后,使用fdisk来初始化硬盘并创建分区。

2.mdadm

  • 使用场景:mdadm是管理Linux软件RAID的工具。当你需要创建、监控、管理或故障排除软件RAID阵列时,这个工具非常有用。
  • 示例场景:创建一个RAID 5阵列以提高数据冗余和读取性能;或者当一个RAID阵列的一个磁盘发生故障时,使用mdadm来添加替换磁盘并重建数据。

3.lsblk

  • 使用场景:lsblk用于列出所有可用的块设备信息,包括它们的挂载点和分区。这对于快速查看系统中的磁盘和分区结构非常有用。
  • 示例场景:在挂载新硬盘之前,确认硬盘的设备名称(如/dev/sdb)。

4.parted

  • 使用场景:parted是一个功能强大的磁盘分区和管理工具,支持大于2TB的磁盘和GPT(GUID分区表)。当你需要处理大容量磁盘或需要GPT分区表时,这个工具比fdisk更合适。
  • 示例场景:在一块大于2TB的新硬盘上创建GPT分区。

5.lshw

  • 使用场景:lshw用于显示系统的硬件配置信息。当你需要详细了解系统中各个硬件组件的信息时,这个命令非常有用。
  • 示例场景:在购买二手服务器之前,检查其硬件配置以确保所有组件都符合预期。

6.sscsi

  • 使用场景:lsscsi用于列出系统中所有SCSI设备的信息。这对于识别和管理SCSI设备特别有用,例如硬盘、固态硬盘和光驱。
  • 示例场景:确认新安装的SCSI硬盘是否被系统识别。

7.smartctl

  • 使用场景:smartctl用于检查和监控存储设备(如硬盘和固态硬盘)的健康状况。当你需要预防性地监控存储设备的健康状态,以避免数据丢失时,这个工具非常有用。
  • 示例场景:定期检查服务器上硬盘的健康状态,及时发现潜在的硬盘故障。

8.blkid

  • 使用场景:blkid用于查找和打印块设备的UUID、文件系统类型等属性。当你需要在脚本中自动挂载磁盘或在/etc/fstab文件中指定挂载点时,这个命令非常有用。
  • 示例场景:在系统启动时自动挂载一个外部USB驱动器,通过其UUID来确保正确识别和挂载。
相关推荐
上海文顺负载箱5 分钟前
如何评估焊机测试负载均衡性能
运维·负载均衡
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
2739920291 小时前
Ubuntu20.04 安装build-essential问题
linux
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
华为云PaaS服务小智1 小时前
华为大咖说 | 浅谈智能运维技术
运维·华为·华为云
zhd15306915625ff3 小时前
化工厂主要涉及的自动化备件有哪些?
运维·自动化·化工厂
Jason-河山3 小时前
利用API返回值实现商品信息自动化更新:技术与实践
运维·自动化
wowocpp4 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu