为什么不按照 sfdisk 或 fdisk 命令的顺序打印磁盘列表

为什么不按照 sfdisk 或 fdisk 命令的顺序打印磁盘列表

我们在最近几天在一台 Redhat 机器(版本 7.2)上注意到了这个问题

我们注意到磁盘的顺序不符合正确顺序

注意-sda 是操作系统

而是按如下顺序从小到大排序:

/dev/sdb
/dev/sdc
/dev/sdd
.
.

我们得到以下顺序

/dev/sdd   
/dev/sdc   
/dev/sdb  
.
.

fdisk 命令示例

# fdisk -l | grep sd
Disk /dev/sda: 161.1 GB, 161061273600 bytes, 314572800 sectors
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   314572799   156773376   8e  Linux LVM
Disk /dev/sdd: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdf: 2147 MB, 2147483648 bytes, 4194304 sectors

sfdisk 命令示例

#  sfdisk -s
/dev/sda: 157286400
/dev/sdd:   2097152
/dev/sdc:   2097152
/dev/sdb:   2097152
/dev/sde:   2097152
/dev/sdf:   2097152
/dev/mapper/vg00-lv_root:  20496384
/dev/mapper/vg00-lv_swap:  16351232
/dev/mapper/vg00-lv_var: 104857600
 total: 309477376 blocks

但从 lsblk 我们可以看到正确的顺序

#  lsblk
NAME             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0                2:0    1     4K  0 disk
sda                8:0    0   150G  0 disk
├─sda1             8:1    0   500M  0 part /boot
└─sda2             8:2    0 149.5G  0 part
├─vg00-lv_root 253:0    0  19.6G  0 lvm  /
├─vg00-lv_swap 253:1    0  15.6G  0 lvm  [SWAP]
└─vg00-lv_var  253:2    0   100G  0 lvm  /var
sdb                8:16   0     2G  0 disk
sdc                8:32   0     2G  0 disk
sdd                8:48   0     2G  0 disk /db_info
sde                8:64   0     2G  0 disk
sdf                8:80   0     2G  0 disk
sr0               11:0    1  1024M  0 rom

所以请指教为什么我们从 sfdisk 和 fdisk 获得不同顺序的磁盘?但从 lsblk 我们得到正确的顺序

这个问题对我们来说非常重要,因为我们有脚本需要从命令 sfdisk / fdisk 中获取输入,如果脚本以错误的顺序获取磁盘,那么脚本就会使用错误的磁盘创建文件系统

相关内容