{"id":1064,"date":"2026-10-19T14:40:34","date_gmt":"2026-10-19T11:40:34","guid":{"rendered":"https:\/\/oraclius.com.tr\/?p=1064"},"modified":"2026-10-20T10:31:54","modified_gmt":"2026-10-20T07:31:54","slug":"object-storage-nedir-linux-8-uzerinde-aistor-free-ile-kurulum-ve-kullanim","status":"publish","type":"post","link":"https:\/\/oraclius.com.tr\/tr\/object-storage-nedir-linux-8-uzerinde-aistor-free-ile-kurulum-ve-kullanim\/","title":{"rendered":"Object Storage Nedir? Linux 8 \u00dczerinde AIStor Free ile Kurulum ve Kullan\u0131m"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Dosyalar\u0131 depolaman\u0131n tek yolu bir dosya sistemi de\u011fil. Object Storage; yedekleme, log ar\u015fivi, medya, veri g\u00f6l\u00fc ve uygulama i\u00e7erikleri gibi alanlarda fiili standart haline geldi. Bu yaz\u0131da \u00f6nce temel kavramlar\u0131 anlat\u0131yor, ard\u0131ndan Oracle Linux 8 \u00fczerinde tek d\u00fc\u011f\u00fcml\u00fc, \u00e7ok diskli bir AIStor Free kurup <code>rclone<\/code> ve <code>mc<\/code> ile kullan\u0131yoruz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. \u00dc\u00e7 depolama modeli<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th><\/th><th>Blok<\/th><th>Dosya<\/th><th>Nesne<\/th><\/tr><tr><td>Birim<\/td><td>Sabit boyutlu blok<\/td><td>Dizin i\u00e7inde dosya<\/td><td>Anahtar\u0131 olan nesne<\/td><\/tr><tr><td>Eri\u015fim<\/td><td>SAN\/iSCSI, i\u015fletim sistemi dosya sistemi koyar<\/td><td>NFS\/SMB, POSIX<\/td><td>HTTP API (S3)<\/td><\/tr><tr><td>G\u00fc\u00e7l\u00fc yan\u0131<\/td><td>D\u00fc\u015f\u00fck gecikme, rastgele I\/O<\/td><td>Payla\u015f\u0131m, tan\u0131d\u0131k semantik<\/td><td>\u00d6l\u00e7ek, dayan\u0131kl\u0131l\u0131k, basit API<\/td><\/tr><tr><td>Tipik kullan\u0131m<\/td><td>Veritaban\u0131 veri dosyalar\u0131<\/td><td>Ortak klas\u00f6rler<\/td><td>Yedek, log, medya, veri g\u00f6l\u00fc<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Object Storage\u2019da dizin hiyerar\u015fisi, <code>rename<\/code> veya dosyan\u0131n ortas\u0131na yazma yoktur. Nesne yaz\u0131l\u0131r, okunur, silinir veya yeniden yaz\u0131l\u0131r. Bu k\u0131s\u0131t, \u00f6l\u00e7eklenebilirli\u011fin bedelidir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. S3 kavramlar\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Object Storage d\u00fcnyas\u0131n\u0131n fiili standard\u0131 Amazon\u2019un <strong>S3 API<\/strong>\u2019sidir. \u00c7o\u011fu \u00fcr\u00fcn bu API\u2019yi konu\u015fur, bu y\u00fczden bu b\u00f6l\u00fcmdeki kavramlar \u00fcr\u00fcn ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bucket:<\/strong> Nesnelerin kapsay\u0131c\u0131s\u0131. Eri\u015fim ve ya\u015fam d\u00f6ng\u00fcs\u00fc kurallar\u0131 genellikle bucket seviyesinde tan\u0131mlan\u0131r.<\/li>\n\n\n\n<li><strong>Nesne ve anahtar (key):<\/strong> Her nesnenin bucket i\u00e7inde benzersiz bir anahtar\u0131 vard\u0131r, \u00f6rne\u011fin <code>raporlar\/2026\/10\/19\/rapor-0001.csv.gz<\/code>. Dizin yoktur: <code>\/<\/code> s\u0131radan bir karakterdir, ara\u00e7lar onu \u201cklas\u00f6r gibi\u201d g\u00f6stermek i\u00e7in kullan\u0131r.<\/li>\n\n\n\n<li><strong>Prefix:<\/strong> Anahtar\u0131n ba\u015f k\u0131sm\u0131. Listelemeyi prefix ile daralt\u0131r\u0131z. Bu y\u00fczden anahtar tasar\u0131m\u0131 \u00f6nemlidir: <code>kaynak\/yyyy\/mm\/dd\/hh\/<\/code> gibi zaman tabanl\u0131 bir yap\u0131, \u201c\u015fu saatin nesnelerini listele\u201d sorgusunu ucuz yapar.<\/li>\n\n\n\n<li><strong>Metadata:<\/strong> Nesneyle birlikte saklanan anahtar-de\u011fer \u00e7iftleri (i\u00e7erik t\u00fcr\u00fc, \u00f6zel etiketler vb.).<\/li>\n\n\n\n<li><strong>Versioning:<\/strong> A\u00e7\u0131l\u0131rsa \u00fczerine yaz\u0131lan veya silinen nesnenin eski s\u00fcr\u00fcmleri korunur. Yanl\u0131\u015fl\u0131kla silmeye kar\u015f\u0131 koruma sa\u011flar ama kapasite harcar.<\/li>\n\n\n\n<li><strong>Atomik g\u00f6r\u00fcn\u00fcrl\u00fck:<\/strong> Bir nesne, y\u00fckleme tamamlanana kadar okuyucuya g\u00f6r\u00fcnmez. Dosya aktar\u0131m protokollerindeki \u201cdosya yar\u0131m m\u0131?\u201d belirsizli\u011fi burada yoktur.<\/li>\n\n\n\n<li><strong>Multipart upload:<\/strong> B\u00fcy\u00fck dosyalar par\u00e7alara b\u00f6l\u00fcn\u00fcp paralel y\u00fcklenir, sonunda \u201ctamamla\u201d \u00e7a\u011fr\u0131s\u0131yla birle\u015ftirilir. AWS S3\u2019te par\u00e7a boyutu ve say\u0131s\u0131 i\u00e7in s\u0131n\u0131rlar vard\u0131r; S3 uyumlu \u00fcr\u00fcnlerde bu s\u0131n\u0131rlar farkl\u0131 olabilir, \u00fcr\u00fcn\u00fcn dok\u00fcman\u0131na bak.<\/li>\n\n\n\n<li><strong>ETag ve checksum:<\/strong> Tek par\u00e7al\u0131 y\u00fcklemede ETag genellikle i\u00e7eri\u011fin MD5\u2019idir. <strong>Multipart y\u00fcklemede ETag i\u00e7eri\u011fin MD5\u2019i de\u011fildir<\/strong>, par\u00e7a \u00f6zetlerinden t\u00fcretilmi\u015f bir de\u011ferdir ve b\u00fct\u00fcnl\u00fck do\u011frulamas\u0131 i\u00e7in g\u00fcvenilmemelidir. S3 API\u2019si ek checksum algoritmalar\u0131n\u0131 (CRC32, CRC32C, SHA-1, SHA-256) destekler; \u00fcr\u00fcnlerin bunu ne kadar destekledi\u011fini kontrol et.<\/li>\n\n\n\n<li><strong>Lifecycle kurallar\u0131:<\/strong> \u201c30 g\u00fcnden eski nesneleri sil\u201d gibi otomatik kurallar. Retention y\u00f6netimini script yazmadan yapman\u0131 sa\u011flar.<\/li>\n\n\n\n<li><strong>Presigned URL:<\/strong> S\u00fcreli, imzal\u0131 bir ba\u011flant\u0131yla kimlik bilgisi payla\u015fmadan tek bir nesneye eri\u015fim vermek.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">3. Veri koruma: replikasyon ve erasure coding<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Object Storage \u00fcr\u00fcnleri veriyi ucuz s\u00fcr\u00fcc\u00fclere yayar, bu y\u00fczden s\u00fcr\u00fcc\u00fc ve d\u00fc\u011f\u00fcm ar\u0131zas\u0131na dayan\u0131kl\u0131l\u0131k yaz\u0131l\u0131m\u0131n i\u015fidir. \u0130ki temel y\u00f6ntem var.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Replikasyon:<\/strong> Her nesnenin birden fazla kopyas\u0131 tutulur (genellikle 3). Basit ve h\u0131zl\u0131 okur, ama kapasite verimi %33\u2019e d\u00fc\u015fer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Erasure coding (EC):<\/strong> Nesne <code>k<\/code> veri par\u00e7as\u0131na b\u00f6l\u00fcn\u00fcr, <code>m<\/code> e\u015flik (parity) par\u00e7as\u0131 hesaplan\u0131r. Toplam <code>k+m<\/code> par\u00e7a farkl\u0131 s\u00fcr\u00fcc\u00fclere da\u011f\u0131t\u0131l\u0131r. Herhangi <code>m<\/code> par\u00e7a kaybedilse bile nesne geri kurulabilir.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Y\u00f6ntem<\/th><th>Kapasite verimi<\/th><th>Dayanabilece\u011fi kay\u0131p<\/th><\/tr><tr><td>3\u00d7 replikasyon<\/td><td>%33<\/td><td>2 kopya<\/td><\/tr><tr><td>EC 2+2<\/td><td>%50<\/td><td>2 par\u00e7a<\/td><\/tr><tr><td>EC 4+2<\/td><td>%67<\/td><td>2 par\u00e7a<\/td><\/tr><tr><td>EC 8+4<\/td><td>%67<\/td><td>4 par\u00e7a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ayn\u0131 kapasite verimini veren iki EC d\u00fczeninden <code>8+4<\/code> daha fazla ar\u0131zaya dayan\u0131r ama daha fazla s\u00fcr\u00fcc\u00fc ve d\u00fc\u011f\u00fcm gerektirir. EC\u2019nin dezavantaj\u0131, \u00e7ok say\u0131da k\u00fc\u00e7\u00fck nesnede verimsiz olmas\u0131 ve ar\u0131za sonras\u0131 yeniden kurman\u0131n CPU ve a\u011f harcamas\u0131d\u0131r. B\u00fcy\u00fck, bir kez yaz\u0131lan nesneler i\u00e7in EC genellikle do\u011fru tercihtir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Ne zaman uygun, ne zaman de\u011fil?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uygun:<\/strong> B\u00fcy\u00fck ve yaz\u0131ld\u0131ktan sonra de\u011fi\u015fmeyen dosyalar, \u00e7ok say\u0131da nesne, \u00f6l\u00e7e\u011fin b\u00fcy\u00fcyece\u011fi durumlar, birden fazla istemcinin ayn\u0131 veriye HTTP \u00fczerinden eri\u015fmesi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uygun de\u011fil:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Veritaban\u0131 veri dosyalar\u0131 veya d\u00fc\u015f\u00fck gecikmeli rastgele I\/O gerektiren her \u015fey (bu blok depolaman\u0131n i\u015fi).<\/li>\n\n\n\n<li>POSIX semanti\u011fi bekleyen uygulamalar: atomik <code>rename<\/code>, dosyaya append, dosya kilitleme. S3\u2019te <code>rename<\/code> yoktur, kopyala ve sil yap\u0131l\u0131r.<\/li>\n\n\n\n<li>\u00c7ok s\u0131k g\u00fcncellenen k\u00fc\u00e7\u00fck nesneler.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Lab ortam\u0131 ve \u00fcr\u00fcn se\u00e7imi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yaz\u0131da <strong>MinIO AIStor Free<\/strong> kullan\u0131yorum. Bilmen gereken noktalar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MinIO\u2019nun community s\u00fcr\u00fcm\u00fc art\u0131k yaln\u0131zca kaynak kod olarak da\u011f\u0131t\u0131l\u0131yor ve depo ar\u015fivlendi. Resm\u00ee yol AIStor: tek d\u00fc\u011f\u00fcml\u00fc <strong>AIStor Free<\/strong> ve da\u011f\u0131t\u0131k, destekli <strong>AIStor Enterprise<\/strong>.<\/li>\n\n\n\n<li>AIStor Free, <strong>tek d\u00fc\u011f\u00fcm tek s\u00fcr\u00fcc\u00fc<\/strong> ve <strong>tek d\u00fc\u011f\u00fcm \u00e7ok s\u00fcr\u00fcc\u00fc<\/strong> desenlerini destekler. Bu yaz\u0131daki 4 diskli kurulum ikincisidir ve erasure coding\u2019i g\u00f6sterebilmemizi sa\u011flar. \u00c7ok d\u00fc\u011f\u00fcml\u00fc k\u00fcme Free kapsam\u0131nda de\u011fildir.<\/li>\n\n\n\n<li>\u00c7al\u0131\u015fmas\u0131 i\u00e7in bir <strong>lisans anahtar\u0131<\/strong> gerekir. Ge\u00e7erli lisans y\u00fcklenene kadar S3 i\u015flemleri engellenir; y\u00f6netim API\u2019si ve konsol eri\u015filebilir kal\u0131r.<\/li>\n\n\n\n<li>Free lisans\u0131n kullan\u0131m ko\u015fullar\u0131 ve kimlerin alabilece\u011fi de\u011fi\u015febilir. \u0130ndirmeden \u00f6nce lisans s\u00f6zle\u015fmesini oku. Bu yaz\u0131daki S3 kavramlar\u0131 ve <code>rclone<\/code> kullan\u0131m\u0131 ise herhangi bir S3 uyumlu \u00fcr\u00fcnde aynen ge\u00e7erlidir.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lab sanal makinesi:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Bile\u015fen<\/th><th>De\u011fer<\/th><\/tr><tr><td>\u0130\u015fletim sistemi<\/td><td>Oracle Linux 8<\/td><\/tr><tr><td>CPU \/ RAM<\/td><td>2 vCPU \/ 8 GB<\/td><\/tr><tr><td>Disk 1<\/td><td>\u0130\u015fletim sistemi (<code>\/dev\/sda<\/code>)<\/td><\/tr><tr><td>Disk 2\u20135<\/td><td>4 adet 10 GB bo\u015f disk (<code>\/dev\/sdb<\/code>\u2013<code>\/dev\/sde<\/code>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Disk adlar\u0131n\u0131 <code>lsblk<\/code> ile kontrol et, kendi ortam\u0131nda farkl\u0131 olabilir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Disklerin haz\u0131rlanmas\u0131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Object Storage \u00fcr\u00fcnleri dosya sistemi olarak genellikle XFS \u00f6nerir. Her diski ayr\u0131 formatlay\u0131p ayr\u0131 ba\u011fl\u0131yoruz. RAID kullanm\u0131yoruz, dayan\u0131kl\u0131l\u0131\u011f\u0131 yaz\u0131l\u0131m sa\u011flayacak.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk\nsudo mkfs.xfs -f -L DISK1 \/dev\/sdb\nsudo mkfs.xfs -f -L DISK2 \/dev\/sdc\nsudo mkfs.xfs -f -L DISK3 \/dev\/sdd\nsudo mkfs.xfs -f -L DISK4 \/dev\/sde\nsudo mkdir -p \/mnt\/disk1 \/mnt\/disk2 \/mnt\/disk3 \/mnt\/disk4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\/etc\/fstab<\/code> dosyas\u0131na ekle:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LABEL=DISK1 \/mnt\/disk1 xfs defaults,noatime 0 2\nLABEL=DISK2 \/mnt\/disk2 xfs defaults,noatime 0 2\nLABEL=DISK3 \/mnt\/disk3 xfs defaults,noatime 0 2\nLABEL=DISK4 \/mnt\/disk4 xfs defaults,noatime 0 2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/mnt\/disk1\nmkdir \/mnt\/disk2\nmkdir \/mnt\/disk3\nmkdir \/mnt\/disk4\n\n\nsudo mount -a\ndf -h | grep \/mnt\/disk<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servis kullan\u0131c\u0131s\u0131n\u0131 olu\u015fturup disklerin sahipli\u011fini veriyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo useradd -r -s \/sbin\/nologin minio-user\nsudo chown -R minio-user:minio-user \/mnt\/disk1 \/mnt\/disk2 \/mnt\/disk3 \/mnt\/disk4<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. AIStor Free kurulumu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lisans anahtar\u0131:<\/strong> \u00dcreticinin indirme sayfas\u0131ndan \u00fccretsiz lisans anahtar\u0131n\u0131 al ve sunucuya <code>\/opt\/minio\/minio.license<\/code> olarak kaydet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/opt\/minio\n# lisans dosyas\u0131n\u0131 \/opt\/minio\/minio.license olarak kaydet\nsudo chown -R minio-user:minio-user \/opt\/minio\nsudo chmod 600 \/opt\/minio\/minio.license<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sunucu ikili dosyas\u0131:<\/strong> \u00dcreticinin h\u0131zl\u0131 ba\u015flang\u0131\u00e7 dok\u00fcman\u0131ndaki indirme adresini kullan\u0131yoruz. RPM paketi de mevcut; onu tercih edersen kurulum dok\u00fcman\u0131ndaki ad\u0131mlar\u0131 izle.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo curl -L https:\/\/dl.min.io\/aistor\/minio\/release\/linux-amd64\/minio -o \/usr\/local\/bin\/minio\nsudo chmod +x \/usr\/local\/bin\/minio\nminio --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ortam dosyas\u0131<\/strong> (<code>\/etc\/default\/minio<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MINIO_VOLUMES=\/mnt\/disk{1...4}\nMINIO_OPTS='--license \/opt\/minio\/minio.license --console-address :9001'\nMINIO_ROOT_USER=minioadmin-lab\nMINIO_ROOT_PASSWORD=LabIcinGucluParola123!<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Burada <code>{1...4}<\/code> (\u00fc\u00e7 nokta) \u00fcreticinin kendi g\u00f6sterimidir; kabu\u011fun <code>{1..4}<\/code> geni\u015fletmesi de\u011fildir. Dosyay\u0131 koru:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 600 \/etc\/default\/minio<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>systemd servisi<\/strong> (<code>\/etc\/systemd\/system\/minio.service<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=MinIO AIStor\nAfter=network-online.target\nWants=network-online.target\n\n&#91;Service]\nUser=minio-user\nGroup=minio-user\nEnvironmentFile=\/etc\/default\/minio\nExecStart=\/usr\/local\/bin\/minio server $MINIO_OPTS $MINIO_VOLUMES\nRestart=always\nLimitNOFILE=1048576\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable --now minio\nsudo journalctl -u minio -f<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcreticinin dok\u00fcman\u0131nda belirtildi\u011fi gibi servis yeniden ba\u015flatmada kendili\u011finden a\u00e7\u0131lmaz; yukar\u0131daki <code>enable<\/code> bunu sa\u011fl\u0131yor. G\u00fcnl\u00fckte 4 s\u00fcr\u00fcc\u00fcn\u00fcn bulundu\u011funu ve lisans\u0131n kabul edildi\u011fini g\u00f6rmelisin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>G\u00fcvenlik duvar\u0131:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo firewall-cmd --permanent --add-port=9000\/tcp --add-port=9001\/tcp\nsudo firewall-cmd --reload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>9000<\/code> S3 API, <code>9001<\/code> web konsoludur. Taray\u0131c\u0131dan <code>http:\/\/SUNUCU_IP:9001<\/code> adresine girip root kullan\u0131c\u0131yla oturum a\u00e7abilirsin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. \u0130stemci ara\u00e7lar\u0131: mc ve rclone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130ki ara\u00e7 kullanaca\u011f\u0131z. <code>mc<\/code> (\u00fcreticinin istemcisi) y\u00f6netim i\u015fleri i\u00e7in, <code>rclone<\/code> ise \u00fcr\u00fcn ba\u011f\u0131ms\u0131z veri aktar\u0131m\u0131 i\u00e7in.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mc:<\/strong> \u00dcreticinin dok\u00fcman\u0131ndaki istemci kurulum b\u00f6l\u00fcm\u00fcnden g\u00fcncel indirme adresini al. Klasik adres \u015f\u00f6yleydi; de\u011fi\u015fmi\u015fse dok\u00fcmana bak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo curl -L curl -fL https:\/\/dl.min.io\/aistor\/mc\/release\/linux-amd64\/mc -o \/usr\/local\/bin\/mc\nsudo chmod +x \/usr\/local\/bin\/mc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>rclone:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/rclone.org\/install.sh | sudo bash\nrclone version<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">9. Bucket, kullan\u0131c\u0131 ve yetki<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Root kimli\u011fini g\u00fcnl\u00fck i\u015flerde kullanmamak i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturuyoruz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mc alias set lab http:\/\/127.0.0.1:9000 minioadmin-lab LabIcinGucluParola123!\nmc mb lab\/lab-bucket\nmc admin user add lab labuser LabKullaniciParola123!\nmc admin policy attach lab readwrite --user labuser\nmc admin info lab<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bu <code>readwrite<\/code> politikas\u0131 t\u00fcm bucket\u2019lar\u0131 kapsar. Ger\u00e7ek bir ortamda yaln\u0131zca ilgili bucket\u2019a izin veren \u00f6zel bir politika yazmal\u0131s\u0131n. Komut s\u00f6zdizimi s\u00fcr\u00fcmler aras\u0131nda de\u011fi\u015febilir; hata al\u0131rsan <code>mc admin --help<\/code> \u00e7\u0131kt\u0131s\u0131na bak.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. rclone ile kullan\u0131m<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yap\u0131land\u0131rma dosyas\u0131:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/.config\/rclone\ncat > ~\/.config\/rclone\/rclone.conf &lt;&lt;'EOF'\n&#91;lab]\ntype = s3\nprovider = Minio\naccess_key_id = labuser\nsecret_access_key = LabKullaniciParola123!\nendpoint = http:\/\/127.0.0.1:9000\nEOF<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">type = s3 provider = Minio access_key_id = labuser secret_access_key = LabKullaniciParola123 endpoint = http:\/\/127.0.0.1:9000 EOF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rastgele test dosyalar\u0131 \u00fcretip y\u00fckleyelim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/testdata\nfor i in 1 2 3; do head -c 10M \/dev\/urandom &gt; ~\/testdata\/dosya$i.bin; done\nhead -c 60M \/dev\/urandom &gt; ~\/testdata\/buyuk.bin\n\nrclone copy ~\/testdata lab:lab-bucket\/test\/ -P\nrclone lsl lab:lab-bucket\/test\/\nrclone check ~\/testdata lab:lab-bucket\/test\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rclone check<\/code> yerel ve uzak i\u00e7eri\u011fi kar\u015f\u0131la\u015ft\u0131r\u0131r. \u0130\u00e7erik b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ba\u011f\u0131ms\u0131z olarak da do\u011frulayabilirsin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sha256sum ~\/testdata\/dosya1.bin\nrclone cat lab:lab-bucket\/test\/dosya1.bin | sha256sum<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130ki \u00f6zet ayn\u0131 olmal\u0131. Di\u011fer g\u00fcnl\u00fck komutlar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rclone ls lab:lab-bucket\nrclone sync ~\/testdata lab:lab-bucket\/senkron\/\nrclone delete lab:lab-bucket\/test\/dosya2.bin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dikkat: <code>rclone sync<\/code> hedefi kaynakla ayn\u0131 yapar ve hedefte fazla olan nesneleri <strong>siler<\/strong>. \u00d6nce <code>--dry-run<\/code> ile dene.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Multipart upload denemesi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rclone<\/code> varsay\u0131lan olarak yaln\u0131zca b\u00fcy\u00fck dosyalarda multipart kullan\u0131r. E\u015fi\u011fi d\u00fc\u015f\u00fcrerek 60 MB\u2019l\u0131k dosyay\u0131 par\u00e7alara b\u00f6lmeye zorlayal\u0131m:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rclone copy ~\/testdata\/buyuk.bin lab:lab-bucket\/multipart\/ --s3-upload-cutoff 5M --s3-chunk-size 5M -vv<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131da dosyan\u0131n par\u00e7alar halinde y\u00fcklendi\u011fini g\u00f6receksin. Tamamlanmam\u0131\u015f (yar\u0131m kalm\u0131\u015f) multipart y\u00fcklemeleri \u015f\u00f6yle listeleyebilirsin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mc ls --incomplete lab\/lab-bucket<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y\u00fckleme ortas\u0131nda Ctrl+C ile kesersen yar\u0131m kalan par\u00e7alar\u0131n nas\u0131l g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc burada g\u00f6r\u00fcrs\u00fcn. Bu kavram \u00f6nemlidir: yar\u0131m y\u00fckleme <strong>nesne olarak g\u00f6r\u00fcnmez<\/strong>, ama depolama alan\u0131 t\u00fcketebilir. \u00dcreticiler genellikle bunlar\u0131 temizleyen lifecycle kurallar\u0131 sunar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">12. Versioning ve lifecycle<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>mc version enable lab\/lab-bucket\nrclone copy ~\/testdata\/dosya1.bin lab:lab-bucket\/surum\/\nhead -c 10M \/dev\/urandom &gt; ~\/testdata\/dosya1.bin\nrclone copy ~\/testdata\/dosya1.bin lab:lab-bucket\/surum\/\nmc ls --versions lab\/lab-bucket\/surum\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ayn\u0131 anahtara iki kez yazd\u0131\u011f\u0131n i\u00e7in iki s\u00fcr\u00fcm g\u00f6receksin. \u015eimdi bir lifecycle kural\u0131 ekleyelim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mc ilm rule add --expire-days 30 --prefix gecici\/ lab\/lab-bucket\nmc ilm rule ls lab\/lab-bucket<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bu kural <code>gecici\/<\/code> alt\u0131ndaki nesneleri 30 g\u00fcn sonra siler. Lifecycle taramalar\u0131 d\u00fczenli aral\u0131klarla \u00e7al\u0131\u015f\u0131r, an\u0131nda de\u011fil. Versioning a\u00e7\u0131kken \u201csil\u201d i\u015flemi bir silme i\u015fareti (delete marker) olu\u015fturur; eski s\u00fcr\u00fcmlerin temizlenmesi i\u00e7in ayr\u0131 kural gerekir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">13. Erasure coding\u2019i do\u011frulama ve s\u00fcr\u00fcc\u00fc ar\u0131zas\u0131 testi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6nce durumu g\u00f6relim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mc admin info lab<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c7\u0131kt\u0131da 4 s\u00fcr\u00fcc\u00fcn\u00fcn \u00e7evrimi\u00e7i oldu\u011funu ve erasure set bilgisini g\u00f6r\u00fcrs\u00fcn. Parity say\u0131s\u0131 s\u00fcr\u00fcme ve yap\u0131land\u0131rmaya g\u00f6re de\u011fi\u015febilir; 4 s\u00fcr\u00fcc\u00fcl\u00fc kurulumda yayg\u0131n d\u00fczen 2 veri + 2 parity\u2019dir. \u00c7\u0131kt\u0131daki de\u011feri kendi ortam\u0131nda do\u011frula.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u015eimdi bir ar\u0131zay\u0131 taklit edelim. <strong>Bu test yaln\u0131zca lab i\u00e7indir, ger\u00e7ek ortamda yapma.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sha256sum ~\/testdata\/buyuk.bin\nsudo rm -rf \/mnt\/disk3\/lab-bucket\nrclone cat lab:lab-bucket\/multipart\/buyuk.bin | sha256sum<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bir s\u00fcr\u00fcc\u00fcdeki bucket verisi silinmi\u015f olmas\u0131na ra\u011fmen nesne eksiksiz okunmal\u0131 ve \u00f6zetler e\u015fle\u015fmeli; \u00e7\u00fcnk\u00fc eksik par\u00e7alar di\u011fer s\u00fcr\u00fcc\u00fclerdeki veri ve parity\u2019den yeniden hesaplan\u0131r. Sonras\u0131nda g\u00fcnl\u00fckten (<code>journalctl -u minio<\/code>) ve <code>mc admin info lab<\/code> \u00e7\u0131kt\u0131s\u0131ndan yeniden kurma (healing) durumunu izle. Healing davran\u0131\u015f\u0131 ve komutlar\u0131 s\u00fcr\u00fcmler aras\u0131nda farkl\u0131l\u0131k g\u00f6sterebilir; kendi s\u00fcr\u00fcm\u00fcn\u00fcn dok\u00fcman\u0131na bak.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">14. S\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S3 komutlar\u0131 hata veriyor, konsol a\u00e7\u0131l\u0131yor:<\/strong> Lisans y\u00fcklenmemi\u015f veya ge\u00e7ersiz olabilir. G\u00fcnl\u00fc\u011fe bak.<\/li>\n\n\n\n<li><strong>Sunucu ba\u015flam\u0131yor, s\u00fcr\u00fcc\u00fc hatas\u0131:<\/strong> Ba\u011flama noktalar\u0131n\u0131n <code>minio-user<\/code> sahipli\u011finde ve ger\u00e7ekten ba\u011fl\u0131 oldu\u011funu kontrol et (<code>df -h<\/code>). Ba\u011fl\u0131 olmayan bir dizin k\u00f6k dosya sistemini kullan\u0131r ve \u00fcr\u00fcnler bunu reddedebilir.<\/li>\n\n\n\n<li><strong>D\u0131\u015far\u0131dan ba\u011flan\u0131lam\u0131yor:<\/strong> <code>firewall-cmd --list-ports<\/code> ile 9000 ve 9001\u2019i kontrol et.<\/li>\n\n\n\n<li><strong>\u0130mza hatalar\u0131:<\/strong> Sunucu ve istemci saatleri aras\u0131nda fark varsa S3 imzalar\u0131 reddedilir. <code>chronyc tracking<\/code> ile saati do\u011frula.<\/li>\n\n\n\n<li><strong>SELinux:<\/strong> Servis \u00e7al\u0131\u015fmazsa <code>ausearch -m avc -ts recent<\/code> ile engelleme olup olmad\u0131\u011f\u0131na bak.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">15. \u00dcretime ge\u00e7erken dikkat edilecekler<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TLS:<\/strong> Lab\u2019da HTTP kulland\u0131k. Ger\u00e7ek ortamda mutlaka TLS kullan.<\/li>\n\n\n\n<li><strong>Da\u011f\u0131t\u0131k kurulum:<\/strong> Tek d\u00fc\u011f\u00fcm, d\u00fc\u011f\u00fcm ar\u0131zas\u0131na kar\u015f\u0131 koruma sa\u011flamaz. D\u00fc\u011f\u00fcm d\u00fczeyinde dayan\u0131kl\u0131l\u0131k i\u00e7in \u00e7ok d\u00fc\u011f\u00fcml\u00fc bir s\u00fcr\u00fcm ve lisans gerekir; Free lisans bunu kapsamaz.<\/li>\n\n\n\n<li><strong>Yetkilendirme:<\/strong> Her uygulama i\u00e7in ayr\u0131 kullan\u0131c\u0131 ve bucket\u2019a \u00f6zel politika.<\/li>\n\n\n\n<li><strong>\u0130zleme:<\/strong> \u00dcr\u00fcnlerin \u00e7o\u011fu Prometheus uyumlu metrik sunar; kapasite, s\u00fcr\u00fcc\u00fc durumu ve lisans s\u00fcresini izle.<\/li>\n\n\n\n<li><strong>Yedekleme:<\/strong> Object Storage\u2019\u0131n dayan\u0131kl\u0131l\u0131\u011f\u0131 yedek de\u011fildir. Yanl\u0131\u015fl\u0131kla silmeye ve mant\u0131ksal hataya kar\u015f\u0131 versioning, nesne kilidi veya ayr\u0131 bir kopya d\u00fc\u015f\u00fcn.<\/li>\n\n\n\n<li><strong>\u00dcr\u00fcn se\u00e7imi:<\/strong> Se\u00e7erken \u015funlara bak: S3 uyumlulu\u011fu, multipart ve ek checksum deste\u011fi, koruma y\u00f6ntemleri, \u00f6l\u00e7ekleme modeli, izleme ve lisans maliyeti.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sonu\u00e7<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Object Storage, b\u00fcy\u00fck ve de\u011fi\u015fmeyen veri i\u00e7in \u00f6l\u00e7eklenebilir, dayan\u0131kl\u0131 ve HTTP \u00fczerinden eri\u015filebilen bir depolama modeli sunar. Bu yaz\u0131da kavramlar\u0131 g\u00f6rd\u00fck, Oracle Linux 8 \u00fczerinde 4 diskli bir AIStor Free kurduk, bucket ve kullan\u0131c\u0131 olu\u015fturduk, <code>rclone<\/code> ile y\u00fckleme ve do\u011frulama yapt\u0131k, multipart, versioning ve lifecycle\u2019\u0131 denedik ve bir s\u00fcr\u00fcc\u00fc kayb\u0131n\u0131 taklit ettik. \u00d6\u011frendi\u011fin S3 kavramlar\u0131 ve <code>rclone<\/code> komutlar\u0131, kulland\u0131\u011f\u0131n \u00fcr\u00fcn de\u011fi\u015fse de ge\u00e7erli kal\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Object Storage, b\u00fcy\u00fck ve de\u011fi\u015fmeyen veri i\u00e7in \u00f6l\u00e7eklenebilir, dayan\u0131kl\u0131 ve HTTP \u00fczerinden eri\u015filebilen bir depolama modeli sunar. Bu yaz\u0131da kavramlar\u0131 g\u00f6rd\u00fck, Oracle Linux 8 \u00fczerinde 4 diskli bir AIStor Free kurduk, bucket ve kullan\u0131c\u0131 olu\u015fturduk, rclone ile y\u00fckleme ve do\u011frulama yapt\u0131k, multipart, versioning ve lifecycle\u2019\u0131 denedik ve bir s\u00fcr\u00fcc\u00fc kayb\u0131n\u0131 taklit ettik. \u00d6\u011frendi\u011fin S3 kavramlar\u0131 ve rclone komutlar\u0131, kulland\u0131\u011f\u0131n \u00fcr\u00fcn de\u011fi\u015fse de ge\u00e7erli kal\u0131r.<\/p>\n","protected":false},"author":1,"featured_media":1068,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-1064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel-en"],"_links":{"self":[{"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/comments?post=1064"}],"version-history":[{"count":2,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1064\/revisions"}],"predecessor-version":[{"id":1067,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1064\/revisions\/1067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/media\/1068"}],"wp:attachment":[{"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/media?parent=1064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/categories?post=1064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oraclius.com.tr\/tr\/wp-json\/wp\/v2\/tags?post=1064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}