在RHEL7上 使用 Intel NVMe+LVM+XFS时大块读的性能问题

RHEL7中XFS文件系统在LVM和Intel NVMe设备上的大块读取性能不佳,此问题在直接使用NVMe设备的XFS或EXT4上未出现。通过RHSA-2018:3083更新解决,优化了stripwidth设置。

RHEL7: Large block read performance issue with XFS+LVM with Intel NVMe

https://access.redhat.com/solutions/3406851

 SOLUTION 已验证 - 已更新 2019年二月28日23:06 - 

English 

环境

  • Red Hat Enterprise Linux 7
  • XFS on a LVM Logical Volume
  • NVMe storage

问题

  • Large block reads from a XFS file system backed by a LVM Logical Volume on a Intel NVMe device are under performing.
  • This behavior is not observed on a XFS file system directly on the NVMe device.
  • Reads from a EXT4 file system on a Logical Volume do not exhibit this behavior.

决议

Red Hat Enterprise Linux 7

  • This issue has been resolved with the errata RHSA-2018:3083 for the package(s) kernel-3.10.0-957.el7 or later.

根源

  • File systems were not being created with optimal strip width at time of creation. This is because # mkfs.xfs was not receiving accurate information from opt_io hint.
  • chunk_sectors are now properly reported to io_min and io_opt.
  • This now resolves the performance degradation.

诊断步骤

  • Results from testing

Raw

XFS+LVM:

   READ: bw=319MiB/s (335MB/s), 319MiB/s-319MiB/s (335MB/s-335MB/s), io=37.4GiB (40.2GB), run=120001-120001msec
   READ: bw=321MiB/s (336MB/s), 321MiB/s-321MiB/s (336MB/s-336MB/s), io=37.6GiB (40.3GB), run=120001-120001msec

XFS+LVM+MQ

# cat /sys/module/dm_mod/parameters/use_blk_mq 
Y

   READ: bw=321MiB/s (337MB/s), 321MiB/s-321MiB/s (337MB/s-337MB/s), io=37.6GiB (40.4GB), run=120001-120001msec


XFS:  Without LVM

   READ: bw=1178MiB/s (1235MB/s), 1178MiB/s-1178MiB/s (1235MB/s-1235MB/s), io=138GiB (148GB), run=120001-120001msec
   READ: bw=1067MiB/s (1119MB/s), 1067MiB/s-1067MiB/s (1119MB/s-1119MB/s), io=125GiB (134GB), run=120001-120001msec

EXT4: Without LVM

   READ: bw=1156MiB/s (1212MB/s), 1156MiB/s-1156MiB/s (1212MB/s-1212MB/s), io=135GiB (145GB), run=120001-120001msec

EXT4+LVM:

   READ: bw=1026MiB/s (1076MB/s), 1026MiB/s-1026MiB/s (1076MB/s-1076MB/s), io=120GiB (129GB), run=120002-120002msec
<think>好的,我需要帮助用户将多个NVMe磁盘合并并挂载到他们的Linux用户家目录。首先,我得考虑合并磁盘的不同方法,比如LVM、RAID或者使用存储池技术如合并文件系统(例如Btrfs或ZFS)。用户提到了NVMe磁盘,所以性能可能是一个重要因素,可能需要选择支持条带化以提升速度的方案。 根据引用中的内容,用户之前可能已经了解过基本的磁盘挂载步骤,比如使用`mkdir`创建目录,`mount`命令挂载,以及通过`lsblk -f`检查挂载状态[^1]。但合并多个磁盘需要更高级的配置。引用[2]提到多块硬盘挂载到同一目录需要修改分区类型,这可能涉及到RAID或LVM的设置。同,引用[4]讨论了分区、格式化和自动挂载的步骤,包括编辑`/etc/fstab`实现永久挂载,这在此问题中也是关键步骤。 首先,用户需要确认磁盘是否已经被系统识别。可以使用`fdisk -l`或`lsblk`来查看NVMe磁盘,如引用[3]中的例子显示`/dev/nvme0n2`是新添加的磁盘。接下来,可能需要使用LVM来合并这些磁盘。步骤可能包括创建物理卷(PV)、卷组(VG)和逻辑卷(LV),然后格式化并挂载到目标目录,比如家目录下的某个路径。 另外,引用[5]提到了多路径绑定,但用户的问题是关于合并存储空间,可能更相关的是LVM或RAID配置。需要注意的是,RAID0可以提供更大的容量和更好的性能,但没有冗余,而LVM更灵活,允许动态调整卷大小。 用户的家目录通常位于`/home/username`,直接挂载到这里可能需要谨慎,避免覆盖现有数据。建议创建一个子目录,比如`/home/username/data`,然后将合并后的存储挂载到此处。同,确保在`/etc/fstab`中添加条目以实现开机自动挂载,如引用[4]中提到的自动挂载配置。 可能的问题包括分区类型的选择(例如使用gdisk创建GPT分区)、文件系统类型(如ext4、XFS或Btrfs),以及处理已有数据的备份措施。此外,如果用户希望家目录本身位于合并的存储上,可能需要更复杂的步骤,比如迁移家目录,但这风险较高,需谨慎操作。 最后,需要验证挂载是否成功,使用`df -h`或`lsblk`检查挂载点,并测试写权限是否正确设置,确保用户有访问权限。</think>### 分步指南:合并多个NVMe磁盘并挂载到用户家目录 #### 方法一:使用LVM合并磁盘 1. **识别NVMe磁盘** ```bash lsblk | grep nvme # 确认磁盘路径(如/dev/nvme0n1、/dev/nvme1n1) ``` 2. **创建物理卷(PV)** ```bash sudo pvcreate /dev/nvme0n1 /dev/nvme1n1 # 将所有NVMe磁盘初始化为LVM物理卷[^4] ``` 3. **创建卷组(VG)** ```bash sudo vgcreate nvme_vg /dev/nvme0n1 /dev/nvme1n1 # 合并为名为"nvme_vg"的卷组 ``` 4. **创建逻辑卷(LV)** ```bash sudo lvcreate -n merged_data -l 100%FREE nvme_vg # 使用全部空间创建逻辑卷 ``` 5. **格式化并挂载** ```bash sudo mkfs.xfs /dev/nvme_vg/merged_data # 推荐高性能文件系统如XFS sudo mkdir /home/username/merged_storage # 创建挂载目录 sudo mount /dev/nvme_vg/merged_data /home/username/merged_storage ``` 6. **配置永久挂载** ```bash echo '/dev/mapper/nvme_vg-merged_data /home/username/merged_storage xfs defaults 0 0' | sudo tee -a /etc/fstab[^4] ``` #### 方法二:使用RAID0合并(高性能但无冗余) 1. **安装mdadm工具** ```bash sudo apt install mdadm # Ubuntu/Debian sudo yum install mdadm # CentOS/RHEL ``` 2. **创建RAID0阵列** ```bash sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1 ``` 3. **格式化与挂载** ```bash sudo mkfs.ext4 /dev/md0 sudo mkdir /home/username/raid_storage sudo mount /dev/md0 /home/username/raid_storage ``` 4. **持久化配置** ```bash sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf echo '/dev/md0 /home/username/raid_storage ext4 defaults 0 0' | sudo tee -a /etc/fstab ``` #### 验证操作 ```bash df -h | grep storage # 查看挂载容量 lsblk # 确认逻辑卷/RAID结构 sudo chown username:username /home/username/*_storage # 设置用户权限 ``` ### 注意事项 1. **数据安全**:RAID0和LVM均无数据冗余,建议定期备份重要数据 2. **性能优化**:NVMe建议使用XFS或EXT4带`-E lazy_itable_init=0`参数 3. **家目录整合**:若需直接替换家目录,建议: ```bash sudo usermod -d /home/username/new_home username # 修改用户家目录路径 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值