Dalam mengelola server Orthanc PACS di lingkungan rumah sakit atau klinik, pertumbuhan data DICOM (CT-Scan, MRI, X-Ray) terjadi sangat cepat. Mengandalkan partisi statis biasa akan menyulitkan ekspansi kapasitas di masa depan karena berisiko membutuhkan downtime atau migrasi ulang jutaan file.
Solusi terbaik di tingkat sistem operasi adalah menggabungkan Hardware RAID (untuk proteksi kegagalan fisik) dengan LVM (Logical Volume Manager) di Linux. Dengan arsitektur ini, kapasitas dari beberapa Virtual Disk dapat digabung menjadi satu pool besar, dipisah antara database dan file DICOM, serta dapat diperbesar secara online kapan saja.
Arsitektur Storage
Pada skenario ini, sistem memiliki dua block device hasil konfigurasi Hardware RAID. Pada fisiknya memiliki 1862.5 GB x 4 Slot (vd_os) dan 3725.5 GB x 2 slot (vd_data)
-
/dev/sdb(~3.6 TB): Disk utama yang sudah terinstal sistem operasi secara non-LVM (sdb1/boot/efi,sdb2/,sdb3swap) dan masih memiliki ruang kosong sekitar 3.5 TB. -
/dev/sda(~3.6 TB): Virtual Disk kedua yang masih kosong utuh.
Kedua sumber ruang tersebut digabung ke dalam satu Volume Group (vg_orthanc), lalu dipecah menjadi dua Logical Volume (LV) terpisah:
-
lv_mysql_orthanc(100 GB): Khusus untuk direktori data database MySQL/Percona (indeks PACS). -
lv_orthanc(~6.94 TB): Khusus untuk penyimpanan fisik file.dcmOrthanc (mengambil 98% dari sisa ruang bebas dan menyisakan 2% cadangan di Volume Group).
Mengapa database dan storage DICOM dipisah LV-nya?
Jika suatu saat penyimpanan file DICOM penuh hingga 100%, database MySQL tidak akan ikut macet atau corrupt karena gagal menulis transaction log. Selain itu, backup atau LVM snapshot database bisa dilakukan secara independen.
1. Membuat Partisi Sisa pada Disk OS (/dev/sdb4)
Langkah pertama adalah mengalokasikan ruang kosong di ujung /dev/sdb menjadi partisi ke-4 dengan flag LVM. Pastikan titik awal (start) sesuai dengan titik akhir partisi ke-3 (111GB pada output parted /dev/sdb unit GB print):
parted -a optimal /dev/sdb mkpart primary 111GB 100% parted /dev/sdb set 4 lvm on partprobe /dev/sdb Verifikasi:
parted /dev/sdb unit GB print Pastikan baris nomor 4 muncul mulai dari 111GB hingga 4000GB dengan flag lvm.
2. Membuat Physical Volume (PV) & Volume Group (vg_orthanc)
Inisialisasi partisi sisa disk OS (/dev/sdb4) dan seluruh disk kosong (/dev/sda tanpa perlu dipartisi) menjadi Physical Volume, lalu satukan ke dalam Volume Group vg_orthanc:
pvcreate /dev/sdb4 /dev/sda vgcreate vg_orthanc /dev/sdb4 /dev/sda Verifikasi:
vgs Pastikan vg_orthanc terdaftar dengan PV = 2 dan total VSize sekitar 7.17t.
3. Membagi Menjadi 2 Logical Volume (Database & DICOM)
Buat dua Logical Volume secara terpisah di dalam vg_orthanc:
# 1. LV Database MySQL/Percona (100 GB) lvcreate -L 100G -n lv_mysql_orthanc vg_orthanc # 2. LV Storage DICOM Orthanc (98% dari sisa ruang bebas) lvcreate -l 98%FREE -n lv_orthanc vg_orthanc Verifikasi:
lvs Pastikan lv_mysql_orthanc (100.00g) dan lv_orthanc (<6.94t) berstatus aktif (-wi-a-----).
4. Mengecek Sisa Cadangan 2% di Volume Group
Penggunaan 98%FREE menyisakan sekitar 2% ruang bebas (free extents) di dalam Volume Group. Cadangan ini berfungsi untuk membuat LVM snapshot darurat atau memperbesar ukuran lv_mysql_orthanc sewaktu-waktu tanpa perlu mengecilkan partisi DICOM.
Untuk melihat secara pasti berapa GB sisa ruang tersebut:
vgs --units g Atau untuk tampilan detail PE (Physical Extents):
vgdisplay vg_orthanc | grep -E "VG Size|Alloc PE|Free PE" Pada kolom VFree (atau baris Free PE / Size), akan terlihat kapasitas cadangan sekitar 144.60g (~144.6 GiB).
5. Format Filesystem XFS & Buat Direktori Mount
Orthanc menyimpan jutaan file DICOM kecil hingga menengah dalam struktur direktori heksadesimal bercabang (00 hingga ff). XFS sangat direkomendasikan dibanding ext4 karena performa penanganan jutaan inode yang jauh lebih cepat serta dukungan ekspansi kapasitas secara online yang stabil.
mkfs.xfs -L mysql_orthanc /dev/vg_orthanc/lv_mysql_orthanc mkfs.xfs -L orthanc_data /dev/vg_orthanc/lv_orthanc mkdir -p /mnt/mysql-orthanc mkdir -p /mnt/orthanc-data Ambil masing-masing UUID perangkat menggunakan blkid:
blkid /dev/vg_orthanc/* 6. Pasang Permanen di /etc/fstab & Set Permission
Daftarkan kedua UUID ke dalam /etc/fstab dengan opsi noatime (mencegah penulisan timestamp akses setiap kali gambar dibuka) dan logbufs=8 untuk mengoptimalkan performa jurnal XFS:
UUID=<uuid-lv-mysql-orthanc> /mnt/mysql-orthanc xfs defaults,noatime,logbufs=8 0 2 UUID=<uuid-lv-orthanc> /mnt/orthanc-data xfs defaults,noatime,logbufs=8 0 2 Terapkan konfigurasi mount dan atur kepemilikan (ownership) direktori sesuai dengan UID kontainer Docker (UID 999 untuk MySQL/Percona dan UID 1000 untuk osimis/orthanc):
systemctl daemon-reload mount -a chown -R 999:999 /mnt/mysql-orthanc chown -R 1000:1000 /mnt/orthanc-data Verifikasi Akhir:
df -hT /mnt/mysql-orthanc /mnt/orthanc-data Pastikan kedua direktori ter-mount sebagai xfs dengan kapasitas 100G dan 7.0T.
Bonus: Ekspansi Kapasitas di Masa Depan (Tanpa Downtime)
Ketika kapasitas penyimpanan DICOM mulai penuh dan Anda menambahkan Virtual Disk baru (misal terbaca sebagai /dev/sdc), perluasan kapasitas dapat dilakukan secara online tanpa mematikan kontainer Orthanc:
pvcreate /dev/sdc vgextend vg_orthanc /dev/sdc lvextend -l +98%FREE -r /dev/vg_orthanc/lv_orthanc Flag -r (--resizefs) akan otomatis menjalankan xfs_growfs secara langsung sehingga kapasitas baru langsung terbaca oleh sistem.

