Test NVMe

This commit is contained in:
Sergey Mazein
2025-12-30 12:20:11 +03:00
parent 20387fe60b
commit 7d0fa7dd36
+33 -54
View File
@@ -12,7 +12,7 @@
```bash ```bash
qm list qm list
pct list pct list
systemctl stop pvedaemon pve-cluster pve-storage pveproxy systemctl stop pvedaemon pve-cluster pveproxy
``` ```
--- ---
@@ -28,63 +28,40 @@ lsof +D /var/lib/vz
``` ```
и заверши эти процессы. и заверши эти процессы.
# создать том заново на всей свободной области
# создать том заново на всей свободной области
lvcreate -n data -l 100%FREE vg0
mkfs.xfs -f -s size=4096 -l size=256m -n size=4096 /dev/vg0/data
# подключить
mkdir -p /var/lib/vz
echo '/dev/vg0/data /var/lib/vz xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 2' >> /etc/fstab
mount -a
# XFS с адекватными настройками
mkfs.xfs -f -s size=4096 -l size=256m -n size=4096 /dev/vg0/data
# подключить
mkdir -p /var/lib/vz
echo '/dev/vg0/data /var/lib/vz xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 2' >> /etc/fstab
mount -a
mkfs.xfs -f -m reflink=1,crc=1 -l size=1536m,version=2,lazy-count=1 -n size=4096 -d su=512k,sw=8,agcount=64 /dev/vg0/data
--- ---
### 3. Пересоздай файловую систему XFS ### 3. Пересоздай файловую систему XFS
Оптимальные параметры для RAID0 с chunk = 1 Mb и 6 дисков для блокчейнов: Оптимальные параметры для RAID0 с chunk = 1 Mb и 6 дисков для блокчейнов:
```bash ```bash
mkfs.xfs -f -s size=4096 -l size=256m -n size=4096 -d su=1m,sw=6 /dev/vg0/data mkfs.xfs -f -s size=4096 -l size=1g -n size=4096 -d su=1m,sw=6 /dev/md3
``` ```
--- Проверка, что XFS «увидел» выравнивание:
### 4. Смонтируй том обратно
```bash ```bash
mount /dev/vg0/data /var/lib/vz xfs_info /dev/md3 | egrep 'sunit|swidth|sectsz'
# Ожидаем: sunit=256 (256 * 4K = 1MiB), swidth=1536 (768 * 4K = 3MiB), sectsz=4096
= sectsz=4096 attr=2, projid32bit=1
= sunit=256 swidth=1536 blks
= sectsz=4096 sunit=1 blks, lazy-count=1
``` ```
--- ```bash
### 5. Обнови `/etc/fstab`
Добавь (или замени существующую) строку:
```
/dev/vg0/data /var/lib/vz xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 2
```
добавить автоматически и применить
```
mkdir -p /var/lib/vz mkdir -p /var/lib/vz
UUID=$(blkid -s UUID -o value /dev/vg0/data) UUID=$(blkid -s UUID -o value /dev/md3)
echo "UUID=$UUID /var/lib/vz xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 2" >> /etc/fstab echo "UUID=$UUID /var/lib/vz xfs defaults,noatime,inode64,logbufs=8,logbsize=256k 0 2" >> /etc/fstab
```
```bash
nano /etc/fstab
```
```bash
mount -a mount -a
``` ```
### 6. Перезапусти службы Proxmox ### 6. Перезапусти службы Proxmox
```bash ```bash
systemctl start pve-cluster pvedaemon pve-storage pveproxy systemctl start pve-cluster pvedaemon pveproxy
``` ```
--- ---
@@ -109,8 +86,8 @@ df -h /var/lib/vz
``` ```
= sunit=256 swidth=1536 blks = sunit=256 swidth=1536 blks
= sectsz=4096 sunit=1 blks, lazy-count=1 = sectsz=4096 sunit=1 blks, lazy-count=1
Filesystem Size Used Avail Use% Mounted on Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-data 21T 410G 21T 2% /var/lib/vz /dev/md3 21T 410G 21T 2% /var/lib/vz
``` ```
----- -----
@@ -141,9 +118,8 @@ systemctl status irqbalance
``` ```
```bash ```bash
echo 4096 | sudo tee /sys/block/md1/queue/read_ahead_kb echo 4096 | sudo tee /sys/block/md3/queue/read_ahead_kb
for d in /sys/block/nvme*n1/queue/read_ahead_kb; do echo 2048 | sudo tee "$d"; done for d in /sys/block/nvme*n1/queue/read_ahead_kb; do echo 2048 | sudo tee "$d"; done
systemctl enable --now irqbalance
``` ```
💾 3. Применение постоянных значений 💾 3. Применение постоянных значений
@@ -154,18 +130,18 @@ cat >/usr/local/sbin/raid-tuning.sh <<'EOF'
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
# RAID-масив(ы): ставим 4 MiB # RAID массив(ы): 4 MiB readahead
for f in /sys/block/md*/queue/read_ahead_kb; do [ -e /sys/block/md3/queue/read_ahead_kb ] && echo 4096 > /sys/block/md3/queue/read_ahead_kb
[ -e "$f" ] && echo 4096 > "$f"
done
# NVMe-диски: ставим 2 MiB # NVMe диски: 2 MiB readahead + scheduler=none
for f in /sys/block/nvme*n1/queue/read_ahead_kb; do for d in /sys/block/nvme*n1; do
[ -e "$f" ] && echo 2048 > "$f" [ -e "$d/queue/read_ahead_kb" ] && echo 2048 > "$d/queue/read_ahead_kb"
[ -e "$d/queue/scheduler" ] && echo none > "$d/queue/scheduler"
done done
EOF EOF
chmod +x /usr/local/sbin/raid-tuning.sh chmod +x /usr/local/sbin/raid-tuning.sh
``` ```
@@ -173,7 +149,8 @@ chmod +x /usr/local/sbin/raid-tuning.sh
cat >/etc/systemd/system/raid-tuning.service <<'EOF' cat >/etc/systemd/system/raid-tuning.service <<'EOF'
[Unit] [Unit]
Description=RAID/NVMe tuning Description=RAID/NVMe tuning
After=local-fs.target After=mdadm-raid.service local-fs.target
Wants=mdadm-raid.service
[Service] [Service]
Type=oneshot Type=oneshot
@@ -183,11 +160,13 @@ RemainAfterExit=yes
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
``` ```
```bash ```bash
systemctl daemon-reload systemctl daemon-reload
systemctl enable --now raid-tuning.service systemctl enable --now raid-tuning.service
systemctl enable --now fstrim.timer
systemctl status raid-tuning.service --no-pager systemctl status raid-tuning.service --no-pager
``` ```
```bash ```bash