Debian/Ubuntu Sistemlerde MinIO Object Storage Kurulumu ve Servis Dosyası Oluşturma

Doğukan Eren
HAVELSAN

--

Bulut ortamları için nesne tabanlı depolama birimi olarak kullanılan açık kaynak kodlu Minio paketinin kurulumunu ve servis haline getirilmesini içeren bu dokümanda, tekil veya çoklu disk ile servisin yönetilmesini içermektedir.

1. Kurulum

MinIO kurulumu için gerekli olan debian paketini aşağıdaki bağlantıdan indirebilir ve kurabilirsiniz.


wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240131202033.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

İndirilen paket, Şubat 2024 itibarıyla güncel sürümdür. İlerleyen sürümler paket değişikliği gösterebilir. Aşağıdaki bağlantıdan son sürüm kontrol edilebilir.

https://min.io/download#/linux

2. Konfigürasyon

MinIO, çalışabilmek için en az bir diske ihtiyaç duymaktadır. Kendi diski (işletim sisteminin çalıştığı) üzerinde veya harici takılan diskler üzerinde çalışabilmektedir.

2.1. Disk İşlemleri

MinIO dosyalarının yer alacağı dizini oluşturalım ve eklediğimiz diski oraya mount edelim, formatlayalım ve kullanıma hazırlayalım.

 mkdir /data

mkfs.ext4 /dev/sdb

mount /dev/sdb /data

NOT: Yukarıda gördüğünüz sdb alanını eklediğiniz veya kullanmak istediğiniz diskin adı ile değiştirebilirsiniz. Diski ayırt etmek için fdisk komutunu kullanılabilir veya “ls /dev/ | grep sd” komutunu kullanarak diskleri listeleyebilirsiniz. Burada PCI Express gibi farklı yöntemlerle eklenen disklerin isimlendirilmelerinin de farklı olduğunu söylemekte fayda var.

2.2. Yapılandırma İşlemleri

2.2.1. Yapılandırma Dosyasını Oluşturma

MinIO servisi için gerekli olacak olan ayarların tutulduğu yapılandırma dosyasını oluşturalım.

echo -e "MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=Passw0rd..
MINIO_VOLUMES=\"/data\"
MINIO_OPTS=\"--console-address :9001\"" | sudo tee /etc/default/minio

Not: Birden fazla disk kullanarak minio kurulmak isteniliyorsa MINIO_VOLUMES alanı aşağıdaki gibi değiştirilebilir.

MINIO_VOLUMES="/data{1...4}"
# Burada data1 den data4'e kadar disk olduğu seneryo örneklenmiştir.

2.2.2. Kullanıcı ve İzinlerin Atanması

Servis dosyasında belirteceğimiz kullanıcının kullanacağı dizinlerde çalışabilmesi için gerekli izinleri aşağıdaki gibi sağlayabiliriz.

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /data

Not: Eğer birden fazla disk varsa onlar için de yetki tanımlaması yapılacaksa ve MinIO yapılandırma dosyasına eklenmelidir.

3. Servis Dosyası Oluşturma ve Netice

Servis dosyamızı aşağıdaki istediğimiz bir editör ile aşağıdaki gibi düzenleyelim.


nano /etc/systemd/system/minio.service

veya

vi /etc/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

Servis dosyamızı oluşturduktan sonra aşağıdaki komutu kullanarak servisimizi başlatabiliriz.

systemctl restart minio.service
systemctl enable minio.service

Sunucumuzun IP adresini ve portunu (9000) tarayıcımıza yazdığımızda MinIO arayüzü ile karşılaşmayı umuyoruz.

--

--