Linux磁盘

发布时间 2023-12-21 17:47:14作者: qianyuzz

磁盘操作

分区状态查询

lsblk

( list block device ) 列出所有储存设备的意思

[root@localhost dev]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
└─sda3   8:3    0 75.9G  0 part /
sr0     11:0    1 1024M  0 rom  
  • NAME:就是设备的文件名啰!会省略 /dev 等前导目录!
  • MAJ:MIN:其实核心认识的设备都是通过这两个代码来熟悉的!分别是主要:次要设备 代码!
  • RM:是否为可卸载设备 (removable device),如光盘、USB 磁盘等等 SIZE:当然就是容量啰!
  • RO:是否为只读设备的意思
  • TYPE:是磁盘 (disk)、分区 (partition) 还是只读存储器 (rom) 等输出
  • MOUTPOINT:挂载点

blkid

列出UUID

[root@localhost dev]# blkid
/dev/sda3: UUID="0a0ee664-ef91-4281-a620-99b12cf52f4a" TYPE="xfs" 
/dev/sda1: UUID="e4224956-8e91-466e-b3a6-b65af7e29c88" TYPE="xfs" 
/dev/sda2: UUID="a90736f6-0884-4785-84ab-ea57abf791b0" TYPE="swap" 

parted

分区类型

[root@localhost dev]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     标志
 1      1049kB  316MB   315MB   primary  xfs             启动
 2      316MB   4477MB  4162MB  primary  linux-swap(v1)
 3      4477MB  85.9GB  81.4GB  primary  xfs

#范例一:列出 /dev/vda 磁盘的相关数据
[root@study ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk) # 磁盘的模块名称(厂商)
Disk /dev/vda: 42.9GB # 磁盘的总容量
Sector size (logical/physical): 512B/512B # 磁盘的每个逻辑/物理扇区容量
Partition Table: gpt # 分区表的格式 (MBR/GPT)
Disk Flags: pmbr_boot

Number   Start 	End 	Size 		File 	system Name Flags # 下面才是分区数据
1 	    1049kB 	3146kB 2097kB 	  bios_grub
2 	 	3146kB 	1077MB 1074MB 	    xfs
3 		1077MB 	33.3GB 32.2GB 	    lvm

分区

要注意的是:MBR 分区表请使用 fdisk 分区, GPT 分区 表请使用 gdisk 分区!

这里我的虚拟机添加了四个硬盘,但是lsblk没有出现。

解决方法是/sys/class/scsi_host/ 执行 echo "- - -" > host0/scan 解决。

[root@localhost dev]# fdisk -l

磁盘 /dev/sda:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c71d6

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     8744959     4064256   82  Linux swap / Solaris
/dev/sda3         8744960   167772159    79513600   83  Linux
[root@localhost dev]# cd /sys/class/scsi_host
[root@localhost scsi_host]# ls
host0  host1  host2
[root@localhost scsi_host]# echo "- - -" > host0/scan
[root@localhost scsi_host]# fdisk -l
[root@localhost scsi_host]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
└─sda3   8:3    0 75.9G  0 part /
sdb      8:16   0   16G  0 disk 
sdc      8:32   0   16G  0 disk 
sdd      8:48   0   16G  0 disk 
sde      8:64   0   16G  0 disk 
sr0     11:0    1 1024M  0 rom  

gdisk

[root@localhost scsi_host]#gdisk 设备名称

[root@localhost scsi_host]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help):   // 这里可以让你输入指令动作,可以按问号 (?) 来查看可用指令

Command (? for help): ?
b       back up GPT data to a file
c       change a partition's name
d       delete a partition
i       show detailed information on a partition
l       list known partition types
n       add a new partition
o       create a new empty GUID partition table (GPT)
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit
x       extra functionality (experts only)
?       print this menu

这里常用的是:

  • p : 打印出这个磁盘的分区信息

    Command (? for help): p
    Disk /dev/sdb: 33554432 sectors, 16.0 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 617ABFCC-4E7D-4D6B-8AC0-396387CA9493
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 33554398
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 33554365 sectors (16.0 GiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
    

    Number:分区编号,1 号指的是 /dev/vda1 这样计算。

    Start(sector):每一个分区的开始扇区号码位置

    End(sector):每一个分区的结束扇区号码位置,与 start 之间可以算出分区的总容量

    Size:就是分区的容量了

    Code:在分区内的可能的文件系统类型。Linux 为 8300,swap 为 8200。不过这个项目 只是一个提示而已,不见得真的代表此分区内的文件系统喔!

    Name:文件系统的名称等等。

  • n : 新增分区

  • d : 删除分区

  • q : 退出不保存

  • w : 保存并退出

新增一个磁盘
Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-33554398, default = 2048) or {+-}size{KMGTP}:    #默认按回车就好
Last sector (2048-33554398, default = 33554398) or {+-}size{KMGTP}: +1g  #添加1G,如果默认则是全部用完容量
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):   			#默认按回车是linux文件系统,输入L是显示所有文件信息
Changed type of partition to 'Linux filesystem'

添加完之后打印分区信息:

Command (? for help): p
Disk /dev/sdb: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 617ABFCC-4E7D-4D6B-8AC0-396387CA9493
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 2048-sector boundaries
Total free space is 31457213 sectors (15.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem

如果是更改正在使用的磁盘,则 w 保存的时候不会马上更新;有两种方法更新,第一种是重启,第二种是使用partprobe来更新。

[root@study ~]# partprobe -s   //显示显示摘要和分区
删除一个分区:

我这里只有一个分区(改成创建的),就直接删除了那一个,如果有多个会进行选择。

Command (? for help): d
Using 1

Command (? for help):

万分注意!不要去处理一个正在使用中的分区。

fidsk

MBR的最大容量是2TB,在慢慢淘汰。

fdisk 跟 gdisk 使用的方式几乎一样!只是一个使用 ? 作为指令提示数据,一个使用 m 作为提示这样而已。

磁盘格式化

也是创建文件系统

格式化的指令非常的简单,那就是make filesystemmkfs这个指令。

现在我有两个分区磁盘,均为初始化。

[root@localhost scsi_host]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              标志
 1      1049kB  1074MB  1073MB               Linux filesystem
 2      1075MB  2147MB  1073MB               Linux filesystem

mkfs.xfs

-f 选项来强制覆盖并创建一个 XFS 文件系统,这会清除设备上的所有数据。

[root@localhost scsi_host]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65472 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=261888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost scsi_host]# blkid /dev/sdb1
/dev/sdb1: UUID="12e53dd8-982b-4d94-9405-721c1addae8c" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="cb3d364c-ecdf-4f97-b69f-42722a013bdf" 

执行完使用blkid可以发现TYPE变成看了 xsf 了。

[root@localhost scsi_host]# blkid /dev/sdb1
/dev/sdb1: UUID="12e53dd8-982b-4d94-9405-721c1addae8c" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="cb3d364c-ecdf-4f97-b69f-42722a013bdf" 
[root@localhost scsi_host]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              标志
 1      1049kB  1074MB  1073MB  xfs          Linux filesystem
 2      1075MB  2147MB  1073MB               Linux filesystem

mkfs.ext4

同样的

[root@localhost scsi_host]# mkfs.ext4 /dev/sdb2 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@localhost scsi_host]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              标志
 1      1049kB  1074MB  1073MB  xfs          Linux filesystem
 2      1075MB  2147MB  1073MB  ext4         Linux filesystem

mkfs

mkfs 其实是个综合指令而已,当我们使用 mkfs -t xfs 时,它就会跑去找 mkfs.xfs 相关的参数 给我们使用! 如果想要知道系统还支持哪种文件系统的格式化功能,直接按 [tabl] 就很清楚 了!

[root@localhost scsi_host]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    

mke2fs

创建磁盘分区上的“etc2/etc3”文件系统

mke2fs /dev/hda1

卷标

比如这有题:使用mkfs为一个现有的分区赋予一个卷标DATA,使用e2label为一个现有的分区显示和设置新卷标DATA2。

使用

mkfs -L DATA /dev/sdb1
e2label /dev/sdb2 DATA2

mkfs

设置前:

[root@localhost scsi_host]# blkid /dev/sdb1
/dev/sdb1: UUID="12e53dd8-982b-4d94-9405-721c1addae8c" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="cb3d364c-ecdf-4f97-b69f-42722a013bdf" 

设置后:

[root@localhost scsi_host]# mkfs -L DATA /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=DATA
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成

[root@localhost scsi_host]# blkid /dev/sdb1
/dev/sdb1: LABEL="DATA" UUID="ce95c48c-82f9-4b27-9854-a6cccc667382" TYPE="ext2" PARTLABEL="Linux filesystem" PARTUUID="cb3d364c-ecdf-4f97-b69f-42722a013bdf" 

e2label

[root@localhost scsi_host]# e2label /dev/sdb2 DATA2
[root@localhost scsi_host]# blkid /dev/sdb2
/dev/sdb2: LABEL="DATA2" UUID="f2ec44b4-b0c6-4d35-a453-a4e7697a97b0" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="acc4b809-5974-4ee0-a130-3fc47505a608" 

可以发现多出了 LABEL 标签。

文件系统检验和统计

wipefs

可以用来清除磁盘或分区上的文件系统或签名信息。

wipefs -a /dev/sdb
[root@localhost tmp]# wipefs -a /dev/sdb
/dev/sdb:4 个字节已擦除,位置偏移为 0x00001000 (linux_raid_member):fc 4e 2b a9
/dev/sdb:8 个字节已擦除,位置偏移为 0x3fffffe00 (gpt):45 46 49 20 50 41 52 54
/dev/sdb:2 个字节已擦除,位置偏移为 0x000001fe (PMBR):55 aa
/dev/sdb: calling ioclt to re-read partition table: 成功
[root@localhost tmp]# wipefs -a /dev/sdc
/dev/sdc:4 个字节已擦除,位置偏移为 0x00001000 (linux_raid_member):fc 4e 2b a9
[root@localhost tmp]# wipefs -a /dev/sdd
/dev/sdd:4 个字节已擦除,位置偏移为 0x00001000 (linux_raid_member):fc 4e 2b a9

xfs_repair

当有 xfs 文件系统错乱才需要使用这个指令.

[root@study ~]# xfs_repair [-fnd] 设备名称
选项与参数:
-f :后面的设备其实是个文件而不是实体设备
-n :单纯检查并不修改文件系统的任何数据 (检查而已)
-d :通常用在单人维护模式下面,针对根目录 (/) 进行检查与修复的动作!很危险!不要随便使用

fsck

linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它:

fsck -y /dev/hda2

如果不知道哪里的问题直接执行fsck

tune2fs

tune2fs 是一个 Linux 命令行工具,用于调整 ext2、ext3 或 ext4 文件系统的参数和属性。它允许你修改文件系统的各种设置,例如更改文件系统的 UUID、标签、最大挂载次数、检查间隔等。

一些常见的 tune2fs 命令示例包括:

  • 更改文件系统标签sudo tune2fs -L NEW_LABEL /dev/sdXY
  • 更改最大挂载次数sudo tune2fs -c MAX_MOUNT_COUNT /dev/sdXY
  • 更改检查间隔sudo tune2fs -i INTERVAL /dev/sdXY
  • 显示文件系统信息sudo tune2fs -l /dev/sdXY

df

列出文件系统的整体磁盘使用量

df 显示整个文件系统的总体情况,而 du 则显示指定文件或目录的磁盘使用情况的详细信息。

[root@study ~]# df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i :不用磁盘容量,而以 inode 的数量来显示

将 /etc 下面的可用的磁盘容量以易读的容量格式显示

[root@study ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.3G 6.8G 33% /
# 这个范例比较有趣一点啦,在 df 后面加上目录或者是文件时, df
# 会自动的分析该目录或文件所在的 partition ,并将该 partition 的容量显示出来,
# 所以,您就可以知道某个目录下面还有多少容量可以使用了! ^_^

du

评估文件系统的磁盘使用量(常用在推估目录所占容量)

直接输入 du 没有加任何选项时,则 du 会分析目前所在目录

[root@study ~]# du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

挂载操作

挂载

挂载点是目录, 而这个目录是进入磁盘分区 (其实是文件系统啦!)的入口就。

  • 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
  • 单一目录不应该重复挂载多个文件系统;
  • 要作为挂载点的目录,理论上应该都是空目录才是。

如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之 后,原目录下的东西就会暂时的消失。

挂载使用的指令是mount,单纯的输入 mount 会显示目前挂载的信息。

/dev/sdb1 挂在 /tmp/file 之下。

[root@localhost scsi_host]# mkdir /tmp/file1
[root@localhost scsi_host]# mount /dev/sdb1 /tmp/file1/

也可以使用 UUID 来挂载

[root@localhost scsi_host]mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs

mount --bind 的功能,可以将某个目录挂载到其他目录去。

[root@localhost scsi_host]mount --bind /var /data/var

/data/var 就是进入 /var 的意思

卸载

[root@study ~]# umount [-fn] 设备文件名或挂载点
选项与参数:
-f :强制卸载!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-l :立刻卸载文件系统,比 -f 还强!
-n :不更新 /etc/mtab 情况下卸载。

光盘挂载

[root@study ~]# blkid
.....(前面省略).....
/dev/sr0: UUID="2015-04-01-00-21-36-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@study ~]# mkdir /data/cdrom
[root@study ~]# mount /dev/sr0 /data/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[root@study ~]# df /data/cdrom
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sr0 7413478 7413478 0 100% /data/cdrom
# 怎么会使用掉 100% 呢?是啊!因为是 DVD 啊!所以无法再写入了啊!

自动挂载

/etc/fstab中配置文件自动挂载。

<设备> <挂载点> <文件系统类型> <挂载选项> <备份频率> <自检顺序>
  • <设备>:指定要挂载的设备或分区,可以是设备名(如 /dev/sda1)或 UUID。
  • <挂载点>:指定挂载的目标目录。
  • <文件系统类型>:文件系统类型,比如 ext4ntfs 等。
  • <挂载选项>:挂载选项,比如 defaultsnoautororw 等。
  • <备份频率>:用于 dump 命令的备份频率设置。
  • <自检顺序>:用于 fsck 命令的自检顺序设置。

示例:

UUID=12345678-9abc-def0-1234-56789abcdef0 /mnt/data ext4 defaults 0 2

这个示例将文件系统的 UUID 为 12345678-9abc-def0-1234-56789abcdef0 的分区挂载到 /mnt/data 目录上,文件系统类型为 ext4,使用默认挂载选项,并在备份和自检时按照约定的频率执行。

RAID磁盘阵列

RAID 0(条带化存储)

RAID 0连续以位或字节为单位进行分割数据,将数据分段存储在各个硬盘中,n块硬盘并行读/写数据,因此具有很高的数据传输率,可以达到单个硬盘的N倍,但它没有数据冗余;分散的存储在两个磁盘上。

特点:
(1)最少需要两块磁盘

(2)数据条带分布式

(3)没有冗余,性能最佳(不存储镜像、校验信息)

(4)不能应用于对数据安全性要求高的场合

RAID 1(镜像存储)

通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据;在一个磁盘上存储,另一个磁盘备份。

特点:
(1)最少需要两块磁盘

(2)提供数据冗余(提供备份)

(3)性能好

(4)N(偶数)块硬盘组成镜像,容量为N/2

RAID 5

  • N (N>=3) 块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储
  • N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高;
  • (N-1) /N磁盘利用率(有一块是用来校验的);
  • 可靠性高,允许坏1块盘,不影响所有数据

特点:

(1)最少3块磁盘

(2)数据条带形式分布

(3)以奇偶校验作冗余

(4)适合多读少写的情景,是性能与数据冗余最佳的折中方案

mdadm

使用 mdadm 来构建磁盘阵列。

安装:

yum install -y mdadm
创建 RAID1

使用 mdadm 命令创建 RAID1

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

这里 /dev/md0 是你将要创建的 RAID1 设备名称,--level=1 表示 RAID1 级别,--raid-devices=2 表示两个磁盘。

查看RAID状态:使用 cat /proc/mdstat 来检查 RAID 创建状态,确保 RAID1 创建成功。

格式化RAID1:使用 mkfs 命令格式化 /dev/md0

创建 RAID5
sudo mdadm --create /dev/md1 --level=5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

这里 /dev/md1 是你将要创建的 RAID5 设备名称,--level=5 表示 RAID5 级别,--raid-devices=4 表示四个磁盘。

查看RAID状态:使用 cat /proc/mdstat 来检查 RAID 创建状态,确保 RAID5 创建成功。

格式化RAID5:使用 mkfs 命令格式化 /dev/md1

挂载RAID5:创建一个目录,例如 /mnt/raid5,并将 RAID5 挂载到这个目录上。

对于删除操作,你可以使用 mdadm --stop /dev/mdX 命令停止 RAID 设备,然后使用 mdadm --zero-superblock 清除 RAID 元数据信息,最后使用 mdadm --remove 移除要删除的 RAID 设备。

LVM卷

识别新添加的硬盘:使用 lsblkfdisk -l 确认新添加的硬盘设备,例如 /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde 等。

创建物理卷(Physical Volumes,PV):将这四个硬盘设备转换为 LVM 物理卷:

[root@localhost tmp]# pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.
  Physical volume "/dev/sde" successfully created.

如果出现 Device /dev/sdb excluded by a filter.则使用wipefs -a /dev/sdb进行清理。

这将把 /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde 四个设备创建为 LVM 物理卷。

创建卷组(Volume Group,VG):使用 vgcreate 命令创建一个卷组并将这四个物理卷添加到卷组中:

[root@localhost ~]# vgcreate my_vg /dev/sdb /dev/sdc /dev/sdd /dev/sde
  Volume group "my_vg" successfully created

这个例子中,my_vg 是卷组的名称,/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde 是你创建的物理卷路径。

创建逻辑卷(Logical Volume,LV):使用 lvcreate 命令创建一个逻辑卷,它将位于卷组内:

[root@localhost ~]# lvcreate -n my_lv -l 100%FREE my_vg
Logical volume "my_lv" created.

这个命令创建了一个名为 my_lv,占用所有可用空间的逻辑卷,位于 my_vg 卷组内。

格式化逻辑卷:使用 mkfs 命令对逻辑卷进行格式化,例如:

[root@localhost ~]# mkfs.ext4 /dev/my_vg/my_lv
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4194304 inodes, 16773120 blocks
838656 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2164260864
512 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

这个例子中使用了 ext4 文件系统进行格式化,你可以根据需要选择其他文件系统类型。

挂载逻辑卷:创建一个目录并将逻辑卷挂载到这个目录:

mkdir /mnt/my_mount_point
mount /dev/my_vg/my_lv /mnt/my_mount_point

以上命令将逻辑卷挂载到 /mnt/my_mount_point 目录上。需要注意,这只是一个临时挂载点示例,你可以选择其他挂载点。

这些步骤将四个硬盘创建为一个 LVM 卷:它们被转换为物理卷,然后被组合到一个卷组中,并在卷组内创建了一个占用所有可用空间的逻辑卷,最后被格式化并挂载到指定的目录。请根据实际需求调整参数。