Skip to main content

Configurar un servidor APF con netatalk en una Raspberry Pi

Introducción

Tras un rato con la configuración del NFS v4 para conectarme desde mi Macbook Pro a mi raspberrypi (linux conHypriot, he visto que al final perderé el tiempo, la velocidad no es muy agraciada, y encima se me olvidó un detalle, necesito una partición en un de mis discos atados a la raspberry que tengo formato hfsplus o apfs. A este punto no encontre nada sobre APFS para linux excepto un repositorio de github Apple File System for Linux y yo soy friki pero no idiota como para perder mi tiempo, y menos cuando una de las particiones va a ser mi Time Machine o backup.

Metodología

Debemos realizar los siguientes pasos: Instalar el soporte de HPFS+ Instalar soporte netatalk para poder comunicarnos con el protocolo de red de Apple. Particionar el disco con parted ya que el disco de Time Machine debe estar formateado y montado como una unidad HPFS+ Modificar el fichero de montaje fstab para que sea permanente Editar la configuración de netatalk

Después ya podremos comprobar el trabajo realizado.

En el ejemplo vamos a usar un disco de 5TB con dos particiones, una para hpfs+ y xfs

Soporte HPFS+

Actualización del sistema de paquetes

sudo apt-get update
sudo apt-get upgrade

Instalación de paquetes para HPFS+

Sin ellos no podremos dar soporte a nuestro linux para que lea y escriba en un sistema de ficheros HPFS+

sudo apt-get install hfsplus hfsutils hfsprogs gdisk

Crear una particion HPFS+

Primero necesitamos crear una partición para usar con dicho sistema de ficheros.

En mi caso voy a formatear un disco duro de 5TB en dos particiones. Una para xfs y otra para *hpfs+

Es un disco que actualmente tenía dos particiones, una reservada que no borre y otra xfs. En el proceso voy a eliminar las dos particiones para luego crear dos particiones conforme a mis deseos, usando parted

Más información Parted mejor que fdisk

❯ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  134MB   134MB                Microsoft reserved partition  msftres
 2      135MB   6001GB  6001GB  xfs          BACKUP5T

(parted) rm 2
(parted) rm 1
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) quit
Information: You may need to update /etc/fstab.

❯ sudo parted -s /dev/sdb mkpart backupt3t 0% 50%
❯ sudo parted -s /dev/sdb mkpart timemachine 50% 100%

❯ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name         Flags
 2      1049kB  3001GB  3001GB               backup3t
 1      3001GB  6001GB  3001GB               timemachine

(parted) quit

Que bien que ahora podemos formatear las dos particiones.

❯ sudo mkfs.hfsplus /dev/sdb2
Initialized /dev/sdb2 as a 2795 GB HFS Plus volume
❯ sudo mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=183141312 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=732565248, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=357697, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Crear las particiones de montaje

Creamos las particiones de montaje para ambos sistemas, y ya que van a aser usadas en un entorno personal le damos los permisos adecuados

❯ sudo mkdir /timemachine
❯ sudo mkdir /backup3t

Probar el montaje manual

Primero probamos manualmente el montaje, y luego pasaremos a el montaje automático en cada reinicio.

Aconsejado cuando hacemos cosas con nuevos dispositivos, y sistemas de ficheros, para liberarnos de problemas en el montaje automático.

El comando de abajo, formateara la partición con las siguientes características (disponible la ayuda man de man mkfs.hfsplus

  • s Que creará un formato sensitivo al caso (distinguir mayúsculas de minúsculas)
  • v nombre del volumen

Lo de Apple y las mayusculas y minusculas es que no me entra. Un sistema UNIX como es MacOSX basado en Darwin, en el que coexiste con otros UNIX, que por defecto te instala un sistema sin distinción de caso.

La opción J Crearía el volumen con un fichero de diario o journal en este caso de 512M (máximo). Yo lo considero necesario pues en caso de un problema con el disco en un reinicio, corte de electricidad, es una garantía muy fuerte de que se recuperara la información, y en backups basados en rsync como los es el Time Machine, es más que necesario por la cantidad tan gigante de información que se genera en el journal. Lamentablemente a la fecha no conozco soporte para instalar el journal ya que al montaje, el disco se haria indisponible por un problema de permisos sobre el journal.

❯ sudo mkfs.hfsplus -s -v timemachine /dev/sdb1
Initialized /dev/sdb1 as a 2795 GB HFS Plus volume

❯ sudo fsck.hfsplus /dev/sdb1
** /dev/sdb1
** Checking HFS Plus volume.
** Detected a case-sensitive catalog.
** Checking Extents Overflow file.
** Checking Catalog file.
** Checking Catalog hierarchy.
** Checking volume bitmap.
** Checking volume information.
** The volume timemachine appears to be OK.

Montaje hfsplus manual

Montaje automatizado de los discos

Una vez montado podemos ver las opciones del montaje que estarán disponibles en el /etc/mtab

/dev/sdb1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 0

Editamos el fichero /etc/fstab

❯ sudo cat /etc/fstab |grep time
/dev/sdb1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 1

Con ellas ya tenemos una idea de que poner en el /etc/fstab

Obtención del UUID

Suelo montar las particiones con UUID y con más razón cuando son discos externos, ya que un cambio, eliminación de dispositivo, error, en un reinicio puede cambiar las letras del dispositivo.

> sudo  blkid

Comando blkid

Edición del fstab

UUID=6bc6f79f-c74f-35a1-b226-092396e3fed1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 1
UUID=c0f66c48-3a78-4c1a-bc7f-6d4ad854f284 /backup3t xfs  rw,noquota,nofail  0  1

Configuración de netatalk

Una buen guía de netatalk es la Guia de Archlinux | Netatalk aunque es bueno darse una leída al propio proyecto Netatalk

Abajo mi configuración

❯ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
; mimic model = TimeCapsule6,106
 log level = default:warn
 log file = /var/log/afpd.log
 hosts allow = 192.168.1.0/24
 spotlight = yes

; [Homes]
; basedir regex = /home

[Pirate]
path = /home/pirate
valid users = pirate

[Backup10t]
path = /backup10t
valid users = pirate

[Backup3t]
path = /backup3t
valid users = pirate

[My Time Machine Volume]
path = /timemachine
time machine = yes

Reiniciar netatatalk con sudo systemctl restart netatalk ya tendremos disponibles nuestras particiones en el mac a través de las unidades de red.

Nota: El reinicio de netatalk tras algún cambio o el inicio por primera vez, tardará dependiendo de la cantidad de contenidos de las unidades compartidas configuradas.

Montaje de las particiones

Ya está, ya solo tenemos conectarnos al servidor y montar nuestras particiones.

Desde el Finder > Ir > Conectarse a un servidor (⌘)

Conectarse a un servidor APF Conectarse  un volumen de un servidor APF

NOTA: La primera vez que se conecta a un servidor APF tardará un buen rato en terminar la conexión. Sé paciente, sobre todo si tus discos o particiones APF tiene un gran volumen de ficheros y enlaces, ya que este sistema de red, tiene una especie de journal, que tiene que completar. No te desesperes, en mi caso la primera vez tardó casi 10 minutos, ya que el disco backup10t tiene casi 8TB de backups con rsync de más de 2 años, lo que hace que su número de inodos usados en enlaces duros sea muy elevado.

Configurar Time Machine

Ahora ya podemos configurar nuestro Time Machine Preferencias > Time Machine y disfrutar delo aprendido.

Configurar Time Machine

Disclaimer o descargo de responsabilidad

Esto es un documento tipo “Yo lo hice así y me funciono”. Eso supone que cuando menos tienes conocimientos, gustas de leer la documentación y tratar de entenderla. Que eres un forofo de las copias de seguridad y que por supuesto, eres consciente de que si haces algo mal la puedes liar. No me vengas luego con llantos. Si te pasa algo yo no soy el culpable. ¿Entendido? Que los disfrutes.

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.