Selfmade NAS -- Intel D510MO DualCore Atom as silent Storage Server

Posted at — Oct 23, 2010

Selfmade NAS: Intel D510MO

I frequently run out of space and since notebook times have arrived, i was always shocked about the bad performance of external usb storage. With luck, i get around 10 to 12 MB/s. That leads to eSata or FireWire, but you pay like twice, or at least a 50 extra just for 2 different connectors, and that’s a lot at today’s GB/$ prices for hard disk storage. And probably it still sucks, you can’t tell for true if you read the reviews about NAS solutions, ..
Finally Intel’s dual core atoms have arrived and seem to deliver enough bang for your bucks to hold up as storage and media streamer, passive cooled, so silent and only taking like 15W plus an extra 3-5W for each HDD. The hard thing is finding a fitting power supply with ATX connector that delivers under 80W. The best seems to be some DC-DC converter like these picoPSU. Hook it up with a simple 12V notebook power supply and everything is fine! And no noisy fan anywhere!


So, that’s what it’s like:
Intel D510MO as a NAS

FreeBSD Compability:

FreeBSD works well on D510Mo. Just hardware video (Intel GMA 3150) is currently not supported, so no 2D/3D acceleration. VESA starts up X, but don’t use that either, so it doesn’t matter, ..
For those that care, a full dmesg at the end!
Performance wise, this little thing rocks! I’ve been rsync’ing files for half a day now, doing a total of 250GB now and the CPU is at 30°C. The cooler is barely hand warm, and my 1,5TB WD green carrier could do 90mb/s sequential, benchmarks say. But I don’t get that much from the client,.. TrueCrypt on a crappy 2,5” USB HDD delivers around 10MB/s.
And as a last note, ZFS ist simply stunning. I’ve vever set up encryption and filesystem structures that fast! If you have no old hardware lying around booting Freebsd over PXE is explained here!
Current prices for hardware are in a comment at the end!

Power Consumption:

PicuPSU has finally arrived. Its stunning, no noises ad so tiny! Even the 80W version is working properly. At first, I was a bit scared about power peaks during the disks spin up. The manual says 7A at peak load for less then 60 seconds should work. I guess, that’s more then enough for 2 disks, since I even turned on ‘delayed boot up’ in the BIOS.
Unfortunately, I’ve only got a digital multimeter with TrueRMS, thus I wouldn’t count on the correctness of the given values, since they are really not made for measuring switching power supplies, but well, ..

It is:



[xen@neon ~    ]$ bonnie++ 
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP   4G   142  99 90137  38 27737  23   345  99 116274  28  86.5   3
Latency             58332us     652ms     567ms   35276us   26432us    1174ms
Version  1.96       ------Sequential Create------ --------Random Create--------      -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 15498  75 +++++ +++ 20542  99 13725  74 +++++ +++ +++++ +++
Latency             52105us      50us     286ms     136ms      66us      73us
[xen@neon ~]$

dd read/write


[xen@neon ~]$ dd if=/dev/zero of=/var/test1 bs=1M count=4096
4096+0 records in
4096+0 records out
4294967296 bytes transferred in 42.388695 secs (101323414 bytes/sec) (96,62 mb/s)


[root@neon /var]# dd if=/dev/urandom of=test2 bs=1M count=4096
[root@neon /var]# dd if=test2 of=/dev/zero bs=1M
4096+0 records in
4096+0 records out
4294967296 bytes transferred in 36.031761 secs (119199484 bytes/sec) (133,67 mb/s)


[xen@neon ~]$ dmesg 
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012 amd64
CPU: Intel(R) Atom(TM) CPU D510   @ 1.66GHz (1662.72-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x106ca  Family = 6  Model = 1c  Stepping = 10
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
  TSC: P-state invariant, performance statistics
real memory  = 2147483648 (2048 MB)
avail memory = 2028912640 (1934 MB)
Event timer "LAPIC" quality 400
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s) x 2 HTT threads
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP/HT): APIC ID:  1
 cpu2 (AP): APIC ID:  2
 cpu3 (AP/HT): APIC ID:  3
ioapic0: Changing APIC ID to 8
ioapic0 <Version 2.0> irqs 0-23 on motherboard
lapic0: Forcing LINT1 to edge trigger
kbd1 at kbdmux0
acpi0: <INTEL MOPNV10J> on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
cpu2: <ACPI CPU> on acpi0
cpu3: <ACPI CPU> on acpi0
atrtc0: <AT realtime clock> port 0x70-0x71,0x74-0x77 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed03fff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
acpi_button0: <Sleep Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0x20c0-0x20c7 mem 0xf0200000-0xf027ffff,0xe0000000-0xefffffff,0xf0100000-0xf01fffff irq 16 at device 2.0 on pci0
agp0: <Intel Pineview SVGA controller> on vgapci0
agp0: aperture size is 256M, detected 8188k stolen memory
hdac0: <Intel 82801G HDA Controller> mem 0xf0280000-0xf0283fff irq 22 at device 27.0 on pci0
pcib1: <ACPI PCI-PCI bridge> at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
re0: <RealTek 8168/8111 B/C/CP/D/DP/E/F PCIe Gigabit Ethernet> port 0x1000-0x10ff mem 0xf0004000-0xf0004fff,0xf0000000-0xf0003fff irq 16 at device 0.0 on pci1
re0: Using 1 MSI-X message
re0: Chip rev. 0x28000000
re0: MAC rev. 0x00000000
miibus0: <MII bus> on re0
rgephy0: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 1 on miibus0
rgephy0:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
re0: Ethernet address: 70:71:bc:3c:1d:76
pcib2: <ACPI PCI-PCI bridge> at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> at device 28.2 on pci0
pci3: <ACPI PCI bus> on pcib3
pcib4: <ACPI PCI-PCI bridge> at device 28.3 on pci0
pci4: <ACPI PCI bus> on pcib4
uhci0: <Intel 82801G (ICH7) USB controller USB-A> port 0x2080-0x209f irq 23 at device 29.0 on pci0
uhci0: LegSup = 0x2f00
usbus0 on uhci0
uhci1: <Intel 82801G (ICH7) USB controller USB-B> port 0x2060-0x207f irq 19 at device 29.1 on pci0
uhci1: LegSup = 0x2f00
usbus1 on uhci1
uhci2: <Intel 82801G (ICH7) USB controller USB-C> port 0x2040-0x205f irq 18 at device 29.2 on pci0
uhci2: LegSup = 0x2f00
usbus2 on uhci2
uhci3: <Intel 82801G (ICH7) USB controller USB-D> port 0x2020-0x203f irq 16 at device 29.3 on pci0
uhci3: LegSup = 0x2f00
usbus3 on uhci3
ehci0: <Intel 82801GB/R (ICH7) USB 2.0 controller> mem 0xf0284400-0xf02847ff irq 23 at device 29.7 on pci0
usbus4: EHCI version 1.0
usbus4 on ehci0
pcib5: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci5: <ACPI PCI bus> on pcib5
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
ahci0: <Intel ICH7 AHCI SATA controller> port 0x20b8-0x20bf,0x20cc-0x20cf,0x20b0-0x20b7,0x20c8-0x20cb,0x20a0-0x20af mem 0xf0284000-0xf02843ff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.10 with 4 3Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich1: <AHCI channel> at channel 1 on ahci0
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
ppc0: <Parallel port> port 0x378-0x37f irq 7 on acpi0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/16 bytes threshold
ppbus0: <Parallel port bus> on ppc0
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
ctl: CAM Target Layer loaded
p4tcc0: <CPU Frequency Thermal Control> on cpu0
p4tcc1: <CPU Frequency Thermal Control> on cpu1
p4tcc2: <CPU Frequency Thermal Control> on cpu2
p4tcc3: <CPU Frequency Thermal Control> on cpu3
Timecounters tick every 1.000 msec
hdacc0: <Realtek ALC662 HDA CODEC> at cad 2 on hdac0
hdaa0: <Realtek ALC662 Audio Function Group> at nid 1 on hdacc0
pcm0: <Realtek ALC662 (Analog)> at nid 20 and 24,25,26 on hdaa0
pcm1: <Realtek ALC662 (Front Analog Headphones)> at nid 27 on hdaa0
pcm2: <Realtek ALC662 (Onboard Digital)> at nid 30 on hdaa0
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 12Mbps Full Speed USB v1.0
usbus3: 12Mbps Full Speed USB v1.0
usbus4: 480Mbps High Speed USB v2.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ugen1.1: <Intel> at usbus1
uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen2.1: <Intel> at usbus2
uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
ugen3.1: <Intel> at usbus3
uhub3: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus3
ugen4.1: <Intel> at usbus4
uhub4: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus4
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub3: 2 ports with 2 removable, self powered
uhub4: 8 ports with 8 removable, self powered
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <WDC WD15EARS-00MVWB0 51.0AB51> ATA-8 SATA 2.x device
ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad4
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <WDC WD15EARS-00MVWB0 51.0AB51> ATA-8 SATA 2.x device
ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 1430799MB (2930277168 512 byte sectors: 16H 63S/T 16383C)
ada1: Previously was known as ad6
lapic1: Forcing LINT1 to edge trigger
SMP: AP CPU #1 Launched!
lapic3: Forcing LINT1 to edge trigger
SMP: AP CPU #3 Launched!
lapic2: Forcing LINT1 to edge trigger
SMP: AP CPU #2 Launched!
Trying to mount root from ufs:/dev/ada0p2 \[rw\]...
cryptosoft0: <software crypto> on motherboard
GEOM_ELI: Device ada0p8.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI:     Crypto: software
GEOM_NOP: Device ada0p8.eli.nop created.
GEOM_ELI: Device ada1p8.eli created.
GEOM_ELI: Encryption: AES-XTS 256
GEOM_ELI:     Crypto: software
GEOM_NOP: Device ada1p8.eli.nop created.
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
            to enable, add "vfs.zfs.prefetch\_disable=0" to /boot/loader.conf.
ZFS filesystem version 5
ZFS storage pool version 28