Cerebro Seco

Se faciliter la vie informatique sans sacrifier ses principes!

Aller au contenu | Aller au menu | Aller à la recherche

Qu'y a-t-il dans un Western Digital MyBook Live?

Ce petit disque dur réseau est ma plus récente acquisition. Je voulais un serveur de stockage très simple doté d'une bonne capacité et entièrement sous mon contrôle, alors quand un modèle de 1Tio est tombé en promotion à un prix dérisoire, je l'ai pris. Une belle surprise m'attendait dedans.

C'était un peu un achat impulsif vu que je n'avais pas pris le temps de chercher les critiques dessus (chose faite depuis lurette pourtant, Ganesh T S en a publié une tout à fait décente sur AnandTech). La belle surprise, c'est que ce petit disque, sous un emballage sans prétention, cache en fait une distribution Debian, et qui dit Linux en général dit compatibilité avec les outils les plus standards qui soient. Qu'on s'entende, les tenants du logiciel libre vont quand même être déçus, ce disque réseau contenant un mix de logiciels propriétaires et libres.

Mais avant tout, comme je ne tenais pas à flinguer la garantie, je me suis appliqué à déterminer ce qu'il y avait dedans sans pour autant le démonter. En premier lieu, j'ai donc activé l'interface SSH à l'adresse http://MYBOOKLIVEIP/UI/SSH, puis loggué avec les codes par défaut: root / welc0me. Comme on travaille en root, il faut faire très attention à ce qu'on rentre! Une erreur, et le disque ne redémarrera jamais!

CPU

Un tour avec la commande

# cat /proc/cpuinfo

révèle que la machine contient un APM82181 à 800MHz, un CPU PowerPC, comme les Mac d'avant la transition à Intel en 2006, et 256Mio de RAM. Il existe un autre outil pour avoir davantage de détails techniques sur la RAM, dmidecode, donnant notamment le nombre de puces, le fabricant, etc.

processor    : 0
cpu        : APM82181
clock        : 800.000008MHz
revision    : 28.131 (pvr 12c4 1c83)
bogomips    : 1600.00
timebase    : 800000008
platform    : PowerPC 44x Platform
model        : amcc,apollo3g
Memory        : 256 MB

Comme beaucoup de ces machines, il contient d'autres fonctions et connexions cachées qui ont été désactivées car jugées inutiles pour une application à la maison, comme le montre le datasheet.

Disque dur

Le disque dur a été détaillé par:

# hdparm -I /dev/sda
/dev/sda:

ATA device, with non-removable media
Model Number: WDC WD10EUCX-63YZ1Y0
Serial Number: WD-WMC0S0465166
Firmware Revision: 51.0AB52
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 1953525168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 953869 MBytes
device size with M = 1000*1000: 1000204 MBytes (1000 GB)
cache/buffer size = 16384 KBytes
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, with device specific minimum
R/W multiple sector transfer: Max = 16 Current = 0
Recommended acoustic management value: 128, current value: 128
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
SET_MAX security extension
* Automatic Acoustic Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
Media Card Pass-Through
* General Purpose Logging feature set
* 64-bit World wide name
* URG for READ_STREAM[_DMA]_EXT
* URG for WRITE_STREAM[_DMA]_EXT
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* NCQ priority information
DMA Setup Auto-Activate optimization
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[7]
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
178min for SECURITY ERASE UNIT. 178min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50014ee2b1645b18
NAA : 5
IEEE OUI : 0014ee
Unique ID : 2b1645b18
Checksum: correct

et révèle un WDC WD10EUCX-63YZ1Y0, de 16Mio de cache sur un lien 6Gbps, tournant à 5400trs/min (et non pas à vitesse variable) (obtenu en croisant ce doc et celui-là). On est d'accord que ça casse pas la baraque question performance, mais ce n'est pas le but de l'appareil après tout. C'est plutôt fait pour être aussi silencieux que possible et limiter les pertes thermiques, vu que le boîtier n'a pas de ventilateur. Selon la doc de chez Western, il serait conçu pour les applications de surveillance 24/7 et d'enregistreur HD, donc du travail constant à basse intensité. Pour autant, il peut monter jusqu'à 110Mio/s de transfert dans des conditions optimales, soit 0,88Gbps. Un peu limite, on en convient, et en situation où il serait le seul "bottleneck" du réseau, on atteint 80Mio/s en tirant fort. Faut pas se plaindre pour du premier prix.

Partitions & montage

Liste des partitions

# parted -l
Model: ATA WDC WD10EUCX-63Y (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
3 15.7MB 528MB 513MB linux-swap(v1) primary
1 528MB 2576MB 2048MB ext3 primary raid
2 2576MB 4624MB 2048MB ext3 primary raid
4 4624MB 1000GB 996GB ext4 primary


Model: Unknown (unknown)
Disk /dev/md1: 2048MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number Start End Size File system Flags
1 0.00B 2048MB 2048MB ext3

Apparemment, quatre partitions, dans l'ordre du disque: swap, une paire de RAID, et une grande. Mais que viennent foutre deux partoches RAID, alors qu'il n'y a qu'un seul disque ? Et puis quid de ce petit trou de 15Mio en tête de disque? Ce n'est pas expliqué en détail, mais ça contiendrait le MBR et de "l'espace libre".

Configuration RAID

# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md1 : active raid1 sda2[1] sda1[0]
      1999808 blocks [2/2] [UU]
     
unused devices: <none>

Une petite explication s'impose, pour les n00b du RAID logiciel comme moi: les personalities sont les modes actuellement supportés par le noyau Linux. Celle commençant par md indique bien sûr de quel lecteur il s'agit (multiple devices, indique que c'est un lecteur constitué de plusieurs disques), comme montré par la commande précédente, qui est ici actif en mode RAID1, et constitué des lecteurs logiques sda1 et sda2. À noter que les grappes arrêtées ne sont pas censées être visibles! Le double UU indique que les deux partitions sont utilisées et fonctionnent correctement, et il n'y a pas de partition en attente pour prendre le relais (Ligne unused devices).

Quelques détails supplémentaires:

# mdadm --detail /dev/md1
/dev/md1:
        Version : 0.90
  Creation Time : Sat Feb  1 02:33:11 2014
     Raid Level : raid1
     Array Size : 1999808 (1953.27 MiB 2047.80 MB)
  Used Dev Size : 1999808 (1953.27 MiB 2047.80 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Fri Apr 25 12:13:07 2014
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : da788eee:cd5abaef:ac088234:d9687473 (local to host MyBookLive)
         Events : 0.28132

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8        2        1      active sync   /dev/sda2

La version 0.90 correspond à celle du superblock, et le positionne en fin de lecteur…Non, je ne sais pas non plus ce que ça veut dire, sinon un risque accru pour les données (?). Bon c'est vrai, en théorie, on peut monter en RAID deux partitions du même disque physique, et un RAID1 suppose un lecteur logique unique qui tolère les pannes, dans ce cas des pannes de partitions, corruptions diverses, mais pas les pannes de matériel ; il faudrait deux lecteurs physiques distincts.

Montage

# mount 
/dev/md1 on / type ext3 (rw,noatime,nodiratime,barrier=1)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755,size=5M)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=5M)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
tmpfs on /tmp type tmpfs (rw,size=100M)
/var/log on /var/log.hdd type none (rw,bind)
ramlog-tmpfs on /var/log type tmpfs (rw,size=20M)
/dev/sda4 on /DataVolume type ext4 (rw,noatime,nodiratime)
/DataVolume/cache on /CacheVolume type none (rw,bind)
/DataVolume/shares on /shares type none (rw,bind)
/DataVolume/shares on /nfs type none (rw,bind)
none on /sys/kernel/security type securityfs (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)

Bon là y'a pas mal de trucs qui m'échappent quand même. De ce que je pige: le multiple device, soit le lecteur logique RAID1, représente la racine / de l'arborescence. Les dossiers partagés contenus dans /DataVolume résident en fait sur une partition séparée, la sda4, ce qui laisse à penser qu'une panne sur les autres partitions ne niquera pas les données pour autant, même si elles sont inaccessibles. Évidemment les sda1 et sda2 ne sont pas montées directement.

Espace occupé

# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/md1      ext3    1.9G  718M  1.1G  40% /
tmpfs        tmpfs    5.0M     0  5.0M   0% /lib/init/rw
udev         tmpfs     10M  6.7M  3.4M  67% /dev
tmpfs        tmpfs    5.0M     0  5.0M   0% /dev/shm
tmpfs        tmpfs    100M  4.6M   96M   5% /tmp
ramlog-tmpfs tmpfs     20M  6.8M   14M  34% /var/log
/dev/sda4     ext4    924G  342G  583G  37% /DataVolume

Interface réseau

Un peu insatisfait des résultats sommaires, je suis tombé sur cet article de UnixMen indiquant l'existence de hwinfo pour obtenir absolument tout sur son système, peut-être même un peu trop…

Installation, version courte:

# apt-get install hwinfo
…Y…

Version longue.

Les réglages réseau révèlent une configuration qui m'échappe un peu, pour tout dire:

# hwinfo --short --network

network interface:
lo Loopback network interface
eth0 Ethernet network interface
tunl0 Network Interface
gre0 Network Interface
sit0 Network Interface

Hein? Quatre cartes réseau? Voyons voir…

# hwinfo --network
> hal.1: read hal dataprocess 12466: arguments to dbus_move_error() were incorrect, assertion "(dest) == NULL || !dbus_error_is_set ((dest))" failed in file dbus-errors.c line 278.
This is normally a bug in some application using the D-Bus library.
libhal.c 3483 : Error unsubscribing to signals, error=The name org.freedesktop.Hal was not provided by any .service files
> hal.1: read hal dataprocess 12466: arguments to dbus_move_error() were incorrect, assertion "(dest) == NULL || !dbus_error_is_set ((dest))" failed in file dbus-errors.c line 278.
This is normally a bug in some application using the D-Bus library.
libhal.c 3483 : Error unsubscribing to signals, error=The name org.freedesktop.Hal was not provided by any .service files
04: None 00.0: 10700 Loopback                                  
  [Created at net.124]
  Unique ID: ZsBS.0NPNTtaUSp9
  SysFS ID: /class/net/lo
  Hardware Class: network interface
  Model: "Loopback network interface"
  Device File: lo
  Link detected: yes
  Config Status: cfg=new, avail=yes, need=no, active=unknown

05: None 00.0: 10701 Ethernet
  [Created at net.124]
  Unique ID: usDW.vnwWAn0UAo4
  SysFS ID: /class/net/eth0
  SysFS Device Link: /devices/plb.0/opb.4/4ef600c00.ethernet
  Hardware Class: network interface
  Model: "Ethernet network interface"
  Driver: "emac"
  Device File: eth0
  HW Address: 00:90:a9:bf:4c:37
  Link detected: yes
  Config Status: cfg=new, avail=yes, need=no, active=unknown

06: None 00.0: 10780 Network Interface
  [Created at net.124]
  Unique ID: OgUs.09FQm1g+2zD
  SysFS ID: /class/net/tunl0
  Hardware Class: network interface
  Model: "Network Interface"
  Device File: tunl0
  Config Status: cfg=new, avail=yes, need=no, active=unknown

07: None 00.0: 10780 Network Interface
  [Created at net.124]
  Unique ID: wtHE.09FQm1g+2zD
  SysFS ID: /class/net/gre0
  Hardware Class: network interface
  Model: "Network Interface"
  Device File: gre0
  Config Status: cfg=new, avail=yes, need=no, active=unknown

08: None 00.0: 10781 Network Interface
  [Created at net.124]
  Unique ID: wl2P.vZmZTx5+mx8
  SysFS ID: /class/net/sit0
  Hardware Class: network interface
  Model: "Network Interface"
  Device File: sit0
  Config Status: cfg=new, avail=yes, need=no, active=unknown
# dmesg | grep eth0

eth0: EMAC-0 /plb/opb/ethernet@ef600c00, MAC 00:90:a9:bf:4c:37
eth0: found BCM54610 Gigabit Ethernet PHY (0x01)
eth0: link is up, 1000 FDX, pause enabled
eth0: no IPv6 routers present

Déjà, l'interface réseau principale serait donc une BCM54610. Je reconnais bien eth0 et lo, mais voyons les trois autres…

# ethtool -i eth0
driver: ibm_emac
version: 3.54
firmware-version:
bus-info: PPC 4xx EMAC-0 /plb/opb/ethernet@ef600c00
# ethtool eth0
Settings for eth0:
    Supported ports: [ MII ]
    Supported link modes:   10baseT/Full
                            100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Full
                            100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: MII
    PHYAD: 1
    Transceiver: external
    Auto-negotiation: on
    Link detected: yes
# ethtool tunl0
Settings for tunl0:
No data available
# ethtool gre0                                
Settings for gre0:
No data available
# ethtool sit0
Settings for sit0:
No data available

# ethtool -i tunl0
Cannot get driver information: Operation not supported
# ethtool -i gre0
Cannot get driver information: Operation not supported
# ethtool -i sit0
Cannot get driver information: Operation not supported

Après recherche, ce seraient des interfaces créées pour gérer des tunnels. Il existerait aussi d'autres méthodes pour obtenir des informations sur les interfaces réseau, mais elles sont non testées.

Système d'exploitation

Après l'obligatoire mise à jour du firmware fourni par Western Digital, en jetant un œil avec
# cat /etc/debian_version
on voit que son système d'exploitation est Debian 5.0.4 "Lenny", dont les mises à jour de sécurité sont arrêtées depuis deux ans. Hum pas très sécuritaire tout ça, sera-t-il possible de la tenir à jour sans bricker le disque? Cette page recommande de ne mettre à jour que ce qui est nécessaire après avoir mis un hold sur udev (dont les fonctions sont elles-mêmes dispos ici).

Créer des copies de sauvegarde de la configuration

Sitôt sorti de sa boîte il serait sage de créer des copies de configuration, après activation de SSH bien sûr. Cette page décrit comment faire. Ils indiquent l'avoir fait en retirant le disque de son boîtier, ce que je n'ai pas fait pour conserver la garantie, mais pourra servir en cas de récupération d'un autre disque. La même page indique comment faire. Il faudra adapter un petit peu vu qu'on parle ici de MyBook Live, mais pas du modèle Duo.

Configuration du serveur AFP

Plusieurs se souviendront à quel point il est compliqué de mettre en place un serveur AFP-Netatalk qui fonctionne sans souci. Donc ici reproduite la configuration parfaitement fonctionnelle de WD:

# nano /etc/netatalk/afp.conf
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
uam list = uams_guest.so,uams_clrtxt.so,uams_dhx2.so
save password = no
unix charset = UTF8
use sendfile = yes
zeroconf = no
guest account = nobody
include = /etc/nas/afp_share.conf

et

# nano /etc/nas/afp_share.conf

[Public]
path = /shares/Public
ea = auto
convert appledouble = no
stat vol = no
file perm = 664
directory perm = 775

[SmartWare]
path = /shares/SmartWare
ea = auto
convert appledouble = no
stat vol = no
file perm = 664
directory perm = 775

[TimeMachineBackup]
path = /shares/TimeMachineBackup
ea = auto
convert appledouble = no
stat vol = no
file perm = 664
directory perm = 775

[TimeMachine]
path = /shares/TimeMachine
time machine = yes
ea = auto
convert appledouble = no
stat vol = no
file perm = 664
directory perm = 775
[Cuby]
path = /shares/Cuby
ea = auto
convert appledouble = no
stat vol = no
file perm = 664
directory perm = 775
valid users = Cuby,                                                    
rwlist = Cuby,

Configuration du serveur FTP

On parle de VSFTPd.

ftpd_banner="Welcome to MyBookLive"
listen=yes
listen_port=21
accept_timeout=60
connect_timeout=60
data_connection_timeout=300
max_clients=0
max_per_ip=0
xferlog_enable=YES
hide_ids=YES
dirlist_enable=YES
download_enable=YES
use_localtime=YES
write_enable=YES
file_open_mode=0755
local_enable=YES
local_umask=02
local_max_rate=0
anon_root=/shares
check_shell=NO
chroot_local_user=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/user_list
vsftpd_log_file=/var/log/vsftpd.log
anonymous_enable=NO
anon_mkdir_write_enable=NO
anon_upload_enable=NO
anon_world_readable_only=YES
anon_other_write_enable=NO
no_anon_password=YES
anon_max_rate=0
anon_umask=077
#share_acl_enable=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=5000
pasv_max_port=5099

La bidouille matérielle

WD MyBook Live UART Port

APM82181_USB.pdf. (Tiré de http://mybookworld.wdfiles.com/local--files/mybook-live/APM82181_USB.pdf)

GuruPlug JTAG, une interface JTAG pour en savoir encore plus sur son bidule.

À quoi ça ressemble dedans un MBL.

Surprise, il y a bien une puce USB à l'intérieur, mais elle ne semble pas branchée.

La bidouille logicielle

Pour les prudents et les paresseux, un package commercial pour installer des fonctions additionnelles.

Complete debricking guide (draft), peut aussi servir si vous installez in disque dur plus gros à l'intérieur.

Comment activer le WebDAV.

Renforcer l'accès SSH. Indispensable pour l'accès à distance!