Upgrading the Hardware

The small desktop machine was assembled in 2014 using budget retail components:

While the disks had already been upgraded the system lagged in speed compared to the bigger machine. I upgraded to the following components:

Vendor’s choices of the above come with substantial discounts. The Ryzen 5 3400g budget processor is on par with the 2015 top desktop processor i7 6700K: https://www.cpubenchmark.net/compare/Intel-i7-6700K-vs-AMD-Ryzen-5-3400G/2565vs3498

Switching the display from 1920x1200 to 3840x2160 forced switching from 60 Hz to 30 Hz. An upgrade resulted in:

erlangen:~ # inxi -aG
Graphics:  Device-1: AMD Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] vendor: Sapphire Limited driver: amdgpu 
           v: kernel bus ID: 01:00.0 chip ID: 1002:699f 
           Display: server: X.Org 1.20.9 compositor: kwin_x11 driver: amdgpu,ati unloaded: fbdev,modesetting,vesa 
           display ID: :0 screens: 1 
           Screen-1: 0 s-res: 3840x2160 s-dpi: 144 s-size: 677x381mm (26.7x15.0") s-diag: 777mm (30.6") 
           Monitor-1: HDMI-A-0 res: 3840x2160 hz: 60 dpi: 154 size: 632x360mm (24.9x14.2") diag: 727mm (28.6") 
           OpenGL: renderer: Radeon RX550/550 Series (POLARIS12 DRM 3.39.0 5.9.8-2-default LLVM 11.0.0) v: 4.6 Mesa 20.2.2 
           direct render: Yes 
erlangen:~ # 

“Hot on the heels of the release of the Radeon RX 580 and RX 570 launched earlier this week, AMD have released a new Polaris 12 GPU, the Radeon RX 550. It is a sub-$100 entry level GPU, targeted at those who want an inexpensive, low profile, low power and low performance component for mini desktop PCs or a minor upgrade on integrated GPUs.”


Steps performed:

  1. removed side panel and slot cover
  2. plugged in the graphics card
  3. put back the side panel
  4. moved the HDMI cable from the main board to the graphics card

Upgrade from the 6700K’s GPU to the Radeon RX550 worked without any tinkering; a pleasant experience!

Karl, it may pay to include the procedure needed to replace the system’s drive(s) with newer devices – more disk space – fewer ECC reports in the SMART output …

Whenever a component fails you replace it and you are done. However when a SSD or a HDD fails you got a problem. Uncle Carey tells you all: There Is No Such Thing As Back-Up Overkill! How I Protect My Client’s Data.

When it comes to upgrading your drives ATX main boards with their two M.2 and six SATA 6Gb/s connectors give you maximum flexibility at minimal costs.

Replacing HDDs by SSDs is highly rewarding and the most efficient upgrade for nearly every system. SATA SSD technology has matured and virtually every brand and model will give excellent performance at a moderate price. I prefer copying with rsync to cloning partitions.

The main board worked well with all distributions installed. However openSUSE Leap and Tumbleweed failed to suspend to RAM. Thus I sold it and bought a new one:

**3400G:~ #** inxi -zM
**Machine:   Type:** Desktop **Mobo:** ASUSTeK **model:** PRIME B450-PLUS **v:** Rev X.0x **serial:** <filter> **UEFI:** American Megatrends **v:** 2409  
           **date:** 12/02/2020  
**3400G:~ #**

Many thanks for hinting!

Ryzen with Vega graphics supports HDMI 2.0 -> 4K @ 60 Hz (@ 120 Hz with 4:2:0 subsampling).

1 x HDMI port, supporting a maximum resolution of 4096x2160@60(Note) Hz

  • Support for HDMI 2.0 version and HDCP 2.2.(Note)


  • Supports HDMI 2.0b with maximum resolution of 4096 x 2160 @ 60 Hz

You need cable with support for HDMI 2.0+.

The new 970 EVO has fourfold capacity at half the price of the 950 PRO. With only one m.2 slot being available I proceeded as follows:

  1. save old drive to iso file using Tumbleweed USB Stick.
  2. remove 950 PRO and install 970 EVO.
  3. install Tumbleweed on 970 EVO using default partitioning
  4. boot into USB stick, mount old partitions using “losetup --partscan” and "mount -o subvolid=5 /dev/loop0 … .
  5. use rsync for copying subvolumes
  6. adjust /etc/fstab for new UUIDs and subvolumes.
  7. reinstall grub

Installing Tumbleweed first and rsyncing has some advantages.

  1. thorough testing of the drive using a pristine system with default partitioning
  2. fast update through rsync; less than one minute real time

Default partitioning:

**erlangen:~ #** fdisk -l /dev/nvme0n1              
**Disk /dev/nvme0n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors**
Disk model: Samsung SSD 970 EVO Plus 2TB             
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: gpt 
Disk identifier: F5B232D0-7A67-461D-8E7D-B86A5B4C6C10 

**Device        ****  Start****       End****   Sectors**** Size****Type**
/dev/nvme0n1p1    2048    1050623    1048576  512M EFI System 
/dev/nvme0n1p2 1050624 3907029134 3905978511  1.8T Linux filesystem 
**erlangen:~ #**

File systems:

**erlangen:~ #** lsblk -f /dev/nvme0n1            
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS 
├─nvme0n1p1 vfat   FAT32       19CF-0B54                             510.4M     0% /boot/efi 
└─nvme0n1p2 btrfs              0e58bbe5-eff7-4884-bb5d-a0aac3d8a344    1.5T    17% /var 
**erlangen:~ #**

Changed entries are marked in bold. Home has been converted from ext4 partition to btrfs subvolume.

**erlangen:~ #** cat /etc/fstab  
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /                       btrfs  defaults                      0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /var                    btrfs  subvol=/@/var                 0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344 ** /usr/local              btrfs  subvol=/@/usr/local           0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /srv                    btrfs  subvol=/@/srv                 0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /root                   btrfs  subvol=/@/root                0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /opt                    btrfs  subvol=/@/opt                 0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /home                   btrfs  **subvol=/@/home**                0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /boot/grub2/x86_64-efi  btrfs  subvol=/@/boot/grub2/x86_64-efi  0  0 
UUID=**0e58bbe5-eff7-4884-bb5d-a0aac3d8a344**  /boot/grub2/i386-pc     btrfs  subvol=/@/boot/grub2/i386-pc  0  0 
UUID=**19CF-0B54**                             /boot/efi               vfat   defaults                      0  0 
UUID=5605f149-34a7-4301-9bf3-f1f177e35ed6  /home-SSD               ext4   data=ordered                  0  0 
UUID=f5177cae-4082-44ed-9471-b99030f06866  /HDD                    ext4   noauto                        0  0 
UUID=6914-84F3                             /GARMIN                 vfat   user,noauto                   0  0 
UUID=0267-906F                             /GARMIN-KART            vfat   user,noauto                   0  0 
UUID=0e58bbe5-eff7-4884-bb5d-a0aac3d8a344  /.snapshots             btrfs  subvol=/@/.snapshots          0  0 
LABEL=FR735                                /FR735                  vfat   user,noauto                   0  0 
UUID=2f0030b8-7257-4cba-be3e-b33154cda052  /WD25                   ext4   noauto                        0  0 
//fritz.box/FRITZ.NAS                      /fritz.box              cifs   noauto,username=ftpuser,vers=1.0  0  0 
**erlangen:~ #**

Rsync commands for subvolumes:

time **rsync** -a /mnt/C/@/.snapshots/1709/snapshot/ /mnt/B/@/.snapshots/1/snapshot/ 
time **rsync** -a /mnt/C/@/var/ /mnt/B/@/var/ 
time **rsync** -a /mnt/C/@/root/ /mnt/B/@/root/ 
time **rsync** -a /mnt/C/@/opt/ /mnt/B/@/opt/ 
[FONT=monospace]time **rsync** -a /mnt/C/@/srv/ /mnt/B/@/srv/ 
time **rsync** -a /mnt/C/@/usr/local/ /mnt/B/@/usr/local/
[/FONT]time **rsync** -a /mnt/A/temporary/ /mnt/B/@/home/

Disk Space:

**erlangen:~ #** btrfs filesystem usage -T /            
    Device size:                   1.82TiB 
    Device allocated:            315.02GiB 
    Device unallocated:            1.51TiB 
    Device missing:                  0.00B 
    Used:                        313.40GiB 
    Free (estimated):              1.51TiB      (min: 1.51TiB) 
    Free (statfs, df):             1.51TiB 
    Data ratio:                       1.00 
    Metadata ratio:                   1.00 
    Global reserve:              423.16MiB      (used: 0.00B) 
    Multiple profiles:                  no 

                  Data      Metadata System               
Id Path           single    DUP      DUP      Unallocated 
-- -------------- --------- -------- -------- ----------- 
 1 /dev/nvme0n1p2 313.01GiB  2.00GiB  8.00MiB     1.51TiB 
-- -------------- --------- -------- -------- ----------- 
   Total          313.01GiB  2.00GiB  8.00MiB     1.51TiB 
   Used           312.20GiB  1.20GiB 64.00KiB             
**erlangen:~ #**

No thoughts on using a 4096 sector size?

I think btrfs doesn’t care about 512 sector size:

[FONT=monospace]**erlangen:~ #** stat /home/karl/Downloads/openSUSE-Tumbleweed-NET-x86_64-Snapshot20211122-Media.iso  
  File: /home/karl/Downloads/openSUSE-Tumbleweed-NET-x86_64-Snapshot20211122-Media.iso 
  Size: 196083712       Blocks: 382976     IO Block: **4096**   regular file 
Device: 0,43    Inode: 494983      Links: 1 
Access: (0644/-rw-r--r--)  Uid: ( 1000/    karl)   Gid: (  100/   users) 
Access: 2021-11-25 07:54:59.421710311 +0100 
Modify: 2021-11-24 20:07:20.030433488 +0100 
Change: 2021-11-25 07:54:59.777713191 +0100 
 Birth: 2021-11-25 07:54:59.421710311 +0100 
**erlangen:~ #** stat -f /home/karl/Downloads/openSUSE-Tumbleweed-NET-x86_64-Snapshot20211122-Media.iso  
  File: "/home/karl/Downloads/openSUSE-Tumbleweed-NET-x86_64-Snapshot20211122-Media.iso" 
    ID: b5051b4f2c2feac6 Namelen: 255     Type: btrfs 
Block size: **4096**       Fundamental block size: **4096 **
Blocks: Total: 488247313  Free: 405624591  Available: 405312070 
Inodes: Total: 0          Free: 0 
**erlangen:~ #**[/FONT]

The default is 4096 for btrfs (AFAIK xfs and ext4 need to be set manually)…

btrfs inspect-internal dump-super /dev/nvme0n1p2 | grep sectorsize

sectorsize		4096

To enlarge slack and cell write counts?

Host erlangen got new components:

**erlangen:~ #** inxi -zMCm 
**Machine:   Type:** Desktop **Mobo:** Micro-Star **model:** B550-A PRO (MS-7C56) **v:** 1.0 **serial:** <filter> **UEFI:** American Megatrends LLC. 
           **v:** A.50 **date:** 01/15/2021 
**Memory:    RAM:****total:** 31.27 GiB **used:** 2.9 GiB (9.3%) 
           **Array-1:****capacity:** 128 GiB **slots:** 4 **EC:** None 
           **Device-1:** DIMM 0 **size:** No Module Installed 
           **Device-2:** DIMM 1 **size:** 16 GiB **speed:** 3200 MT/s 
           **Device-3:** DIMM 0 **size:** No Module Installed 
           **Device-4:** DIMM 1 **size:** 16 GiB **speed:** 3200 MT/s 
**CPU:       Info:** 6-Core **model:** AMD Ryzen 5 5600X **bits:** 64 **type:** MT MCP **cache:****L2:** 3 MiB 
           **Speed:** 3280 MHz **min/max:** 2200/3700 MHz **Core speeds (MHz):****1:** 3280 **2:** 3146 **3:** 2879 **4:** 2873 **5:** 2874 **6:** 3595 **7:** 2879 
           **8:** 2877 **9:** 3596 **10:** 2879 **11:** 2872 **12:** 3598 
**erlangen:~ #**