Quiero crear un zfs raidz2 con 4 discos. Sé que esto "desperdiciará" al menos el 50% del espacio, pero mi objetivo es lograr una alta tolerancia contra fallas del disco. No se recomienda usar 5 discos para raidz2 y 6 discos son demasiado costosos e innecesarios para mí. Tendré discos de 3 TB (o tal vez 4 TB), todos los cuales tienen sectores de 4k con emulación de 512 bytes.
He leído muchas cosas sobre zfs y raidz2 y estoy empezando a confundirme.
¿Debo particionar los discos? Leí que es una buena idea crear particiones para que el sistema operativo sepa que el disco no está vacío. La partición también puede ayudar a alinear sectores de 4k.
¿GPT o MBR?Hasta donde tengo entendido, GPT es imprescindible para discos de 3 TB (y más).
¿Cómo debo crear la partición?¿Esto me dará particiones correctamente alineadas?
sudo parted --align optimal /dev/sdX mklabel gpt mkpart primary 1 0% 3TB
Pregunta adicional: ¿qué tamaño tendrá la partición creada mkpart primary 1 0% 3TB
? Lo será 3*10^12 - 4096 byte
?
Mi intención no es utilizar el tamaño completo del disco, sino limitarme a 3 TB para poder reemplazar una unidad defectuosa por un modelo diferente.
¿Lo necesito ashift=12
si tengo particiones alineadas?¿Es inútil? ¿Me hace daño de alguna manera?
¿Qué pasa con el tamaño de la tira?¿Necesito modificarlo? ¿Qué pasa si uso 5 discos en lugar de 4 discos?
¿Hay algo más que debería considerar?
Respuesta1
Debe configurar ashift manualmente si su disco informa valores incorrectos, que es el caso de todos los discos dentro del período de transición (4K internamente, 512 lógicamente): los discos anteriores informan los 512 correctos, los discos posteriores informan los 4k correctos. Por supuesto, siempre puede especificarlo, simplemente sobrescribe lo que el propio disco informaría/sugeriría al sistema.
Si no está seguro, también puede crear un grupo, anotar el tamaño utilizable, luego destruirlo, establecer ashift en todos los discos en 12, crearlo nuevamente y comparar los tamaños. Si son iguales, sus discos son honestos acerca de su contenido.
Particionar discos sólo debería ser necesario si sus discos no se reconocen correctamente o si desea tener tamaños más pequeños de lo posible.
Respuesta2
ZFS en Linux particionará los discos automáticamente. Antes no hacía esto. Se verá así:
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 2E55AB8A-8B22-494E-A971-B6D639BA14B1
Device Start End Sectors Size Type
/dev/sdb1 2048 1953507327 1953505280 931.5G Solaris /usr & Apple ZFS
/dev/sdb9 1953507328 1953523711 16384 8M Solaris reserved 1
Además, probablemente utilizará el ashift
valor correcto automáticamente. Mi SSD tiene 13, el HDD anterior tiene 12, como se esperaba.
Simplemente haz lo siguiente:
zpool create tank raidz2 sda sdb sdc sdd
Luego verifique zdb
que ashift
parezca correcto.