OSTree ভিত্তিক পাইন, আলপাইন লিনাক্স
কি নির্বাচন করা ওএস আপনার সার্ভারে রান করা সুবিধাজনক এবং পরিচিতির বিষয়। সুবিধার অর্থ হল আপনি এমন কিছু চান যা আপনাকে যতটা সম্ভব কম ঝামেলা দেয়, পরিচিতি মানে আপনি পছন্দ করবেন না আপনার প্রয়োজন না হলে অতিরিক্ত জিনিস শিখতে।
আমার সার্ভার গুলো পোষা প্রাণীতাই আমি কিছু সময় পরপর কিছু কমান্ড ম্যানুয়ালি জারি করছি, এবং সম্পূর্ণ অটোমেশনের প্রয়োজন নেই।
চেষ্টা করার পর CoreOS এক বছরের জন্য আমি আমার নিজের সরলীকরণে স্যুইচ করেছি ডিস্ট্রো আলপাইন উপর ভিত্তি করে এবং অস্ট্রি.
আলপাইনের এই সংস্করণটি থেকে ইঙ্গিত নেয় ফ্ল্যাটকার এবং প্রকল্প-পরমাণু এবং এটি একটি পঠনযোগ্য রুট ফাইল-সিস্টেম হিসাবে ইনস্টল করা হবে যা আপডেটগুলি পারমাণবিকভাবে ঘটছে, অর্থাৎ তারা সফল হয় অথবা সিস্টেমটি আগের অবস্থায় ফিরে যায়। সিস্টেমের পক্ষে এটি সম্ভব হওয়ার জন্য সর্বদা কমপক্ষে থাকতে হবে দুটি স্ন্যাপশট রিলিজ করা ফাইল-সিস্টেম সংস্করণ, স্টোরেজে উপলব্ধ।
কোন পরিবেশে সিস্টেম চলবে? আমি টার্গেট করলাম ওভিজেড এবং [KVM], কিন্তু সাধারণভাবে আপনি বলতে পারেন পাত্রে এবং ভার্চুয়াল মেশিন প্রধান পার্থক্য হচ্ছে যে কন্টেইনারগুলি তাদের নিজস্ব কার্নেল চালায় না, বিশেষ করে তাদের বুট প্রক্রিয়া নেই, তারা সরাসরি কল করে এটা সিস্টেম (যা উদাহরণস্বরূপ aDockerfile
এটি দ্বারা সংজ্ঞায়িত করা হবেCMD
অথবাENTRYPOINT
বিবৃতি), যা রাজকীয় গাছের ব্যবস্থাপনার জন্য দায়ী যা কন্টেইনারটি সচল রাখবে (একটি স্বাভাবিক অধিবেশনের মতো, যদি init প্রক্রিয়াটি মারা যায়, তবে কন্টেইনারটি বন্ধ হয়ে যায়)। এছাড়াও পাত্রে সিস্টেম knobs কনফিগার করতে পারে না, এবং ক্ষমতা অতিরিক্ত সীমাবদ্ধতা থাকতে পারে।
কিভাবে ইমেজ তৈরি করা হয়?
দ্যprepare.sh
স্ক্রিপ্ট নির্ভরতাগুলি পরিচালনা করে, যার বেশিরভাগই সাধারণ ক্লি সরঞ্জামগুলি সরবরাহ করার জন্য প্যাকেজগুলিcoreutils
, util-linux
, binutils
, যেমন ব্লক ডিভাইসের সাথে কাজ করার উপযোগিতাblkid
, sfdisk
, multipath-tools
এবং সঙ্গে ফাইল সিস্টেমxfsprogs
এবংe2fsprogs
। দ্যsquashfs-tools
অন্তর্নির্মিত রুট ফাইল সিস্টেমকে সংকুচিত করার জন্য প্যাকেজটি শেষে ব্যবহার করা হয়। কglib
সামঞ্জস্য প্যাকেজটি ডিফল্টরূপে ইনস্টল করা হয় কারণ আলপাইন ভিত্তিকmusl
, সামঞ্জস্যপূর্ণ প্যাকেজ কিছু লাইব্রেরির বিরুদ্ধে তৈরি করে কাজ করে।
ভিএম এবং কন্টেইনার উভয়ের জন্য ফাইল গাছ যথাক্রমে নির্মিতmake.sh
এবংmake_ovz.sh
। এটি ধাপগুলির একটি সরলীকৃত বর্ণনা
রিপোজিটরি ট্যাগ অনুযায়ী তৈরি করা সংস্করণ সেট করুন
নতুন গাছের জন্য একটি ডিরেক্টরি তৈরি করুন এবং পরিবেশ পরিষ্কার করুন
অস্ট্রি দ্বারা প্রয়োজনীয় বেস টার্গেট ডিরেক্টরি এবং ডিরেক্টরি তৈরি করুন, যেমনsysroot
এর সাথে সামঞ্জস্য করার জন্য সিমলিঙ্ক তৈরি করুন ফাইল সিস্টেম শ্রেণিবিন্যাস মান
কাস্টম পরিষেবা এবং কাস্টম কনফিগারগুলি অনুলিপি করুন
মাউন্ট করা সিস্টেম ডিরেক্টরি সহ chroot সেটআপ করুন
বেস প্যাকেজ সহ একটি আলপাইন rootfs বুটস্ট্র্যাপ করুন
শংসাপত্র, টাইমজোন, হোস্টনামের মতো রুটফগুলিতে ন্যূনতম কনফিগারেশন প্রয়োগ করুন।
কপি পরিষেবাগুলি init দ্বারা শুরু করা হবে
নির্দিষ্ট কার্নেল ইমেজ দিয়ে বুট কনফিগারেশন সেটআপ করুন
customচ্ছিকভাবে কাস্টম কার্নেল মডিউল যোগ করুন
পরিষ্কার করা
rootfs প্রতিশ্রুতিবদ্ধ[1] অস্ট্রি ভাণ্ডারে
পাত্রে জন্য, ক্রম একই, কিন্তু কনফিগারেশন পরিবর্তন, কারণ একটি সিস্টেমের সাথে একটি থেকে বুট করা হয় না বুটলোডার অস্ট্রিকে পরিবেশ যাচাই করতে সমস্যা হয়, আমাদের কিছু প্রয়োগ করতে হবে সমাধান এবং কিছু ডিভাইস সেটআপ করুন যা সাধারণত দ্বারা পরিচালিত হয় initramfs পদক্ষেপ এই হল কিভাবে ওভিজেড অথবা এলএক্সসি টেমপ্লেট কনফিগার করা হয়।
একবার আমাদের অস্ট্রি কমিটড ফাইল ট্রি আছেbuild.sh
অথবাbuild-update.sh
বিতরণ করা হবে এমন জিনিসপত্র তৈরির যত্ন নেয়। স্ক্রিপ্টগুলির মধ্যে পার্থক্য হল যে আপডেট সংস্করণটি পূর্ববর্তী অস্ট্রি রিপোজিটরি থেকে শুরু হয় এবং এছাড়াও একটি ডেল্টা আর্টিফ্যাক্ট তৈরি করে যা একটি চলমান সিস্টেম আপগ্রেড করার জন্য তার অস্ট্রি উদাহরণে প্রয়োগ করতে পারে। এটি নির্মাণের ধাপগুলির একটি সরলীকৃত বর্ণনা
নতুন নির্মাণ হলে
একটি লুপ ডিভাইস হিসাবে মাউন্ট করা একটি নতুন ছবিতে নতুন পার্টিশন তৈরি করুন
অন্য
মাউন্ট sysroot এবং পূর্ববর্তী নির্মাণের বুট পার্টিশন
মাউন্ট করা বিল্ডে আগের অস্ট্রি স্থাপনা (লিঙ্ক খামার) পরিষ্কার করুন
মাউন্ট করা বিল্ডে নতুন নির্মিত গাছের প্রতিশ্রুতি দিন
সততা এবং চেকসাম যাচাই করুন
আপগ্রেডের জন্য নতুন ডেল্টা তৈরি করুন
বুট কনফিগারেশন পুনর্জন্মের জন্য অস্ট্রি স্থাপনা চালান
পুরানো অস্ট্রি কমিটগুলি সরান
বুট পার্টিশন অখণ্ডতা যাচাই করুন
নতুন আপডেট বিল্ড ইমেজ আনমাউন্ট করুন
ইমেজ চেকসাম তৈরি করুন এবং এটিকে সংকুচিত করুন (সহsquashfs
পাত্রে জন্য)
পার্টিশন কনফিগারেশন একটি fdisk দিয়ে প্রয়োগ করা হয়layout.cfg
যে ফাইলটি পার্টিশনের আকার নির্ধারণ করে, আমাদের রুটফের জন্য একটি পার্টিশন আছে (~430M
, বুট পার্টিশন (~40M
এবং একটি সোয়াপ পার্টিশন (~40M
)। একটি লুপ ডিভাইসে আগের বিল্ডটি মাউন্ট করা বাদ দিয়ে কন্টেইনার দিয়ে, এবং পুরানো (এক্সট্রাক্ট করা) অস্ট্রি রিপোজিটরির উপর নতুন অস্ট্রি কমিট টানুন।
আমি এই ছবিতে কি বান্ডিল করছি (ইনস্টল করা প্যাকেজ ছাড়া)?
একটি ছোট লিব ইনfunctions.sh
শেলের মধ্যে সম্পাদিত সাধারণ কাজের জন্য
কেভি স্টোরের উপর ভিত্তি করে লকিং প্রক্রিয়া সহ অস্ট্রি ভিত্তিক আপগ্রেড স্ক্রিপ্ট
IO স্থানীয় উভয় জন্য স্ক্রিপ্ট পর্যবেক্ষণ (iomon
) এবং নেটওয়ার্ক (tcpmon
)
ছাড়া অন্য কনটেইনার রানটাইমের জন্য স্ক্রিপ্ট সেটআপ করুনbubblewrap
: podman
, toolbox
আগে যা ছিল এবং এখন নেই
sup
: সুপার অর্কেস্ট্রেশন (কনটেইনার স্থাপন) এবং হোস্ট মেশিনের কনফিগারেশনের জন্য ব্যবহৃত হয়েছিল, কিন্তু তারপর আমি স্যুইচ করলাম উত্তরযোগ্য কারণ সেখানে দীর্ঘদিন ধরে থাকা ত্রুটিগুলি ছিল যার মধ্যে একটি ফিক্সের অভাব ছিল, আমি শুরু থেকে উত্তরদাতা বেছে নিইনি কারণ আমি প্রতিটি সার্ভারে একটি পাইথন নির্ভরতা ইনস্টল করতে চাইনি, অবশেষে আমি একটি সেকেন্ডারি অ্যালপাইন নিয়ে বসলাম ক্রুট হোস্ট মেশিনে, অবস্থিত/opt/alp
যদি আমি অতিরিক্ত কম সমালোচনামূলক সফটওয়্যার ইনস্টল করতাম। আজ, যাইহোক, আমি আবার উত্তর থেকে পরিবর্তন করতে চাই পাইনফ্রা , কারণ
এটি বয়লারপ্লেট ছাড়া অজগর (উত্তরের ছদ্ম আছেDSL
যেটি সমাধান করে তার চেয়ে বেশি মাথাব্যথার কারণ)
এটি প্লেইন এসএসএইচ কমান্ড দিয়ে তার রেসিপিগুলি চালায়, তাই টার্গেট হোস্টগুলিতে পাইথন নির্ভরতার প্রয়োজন নেই
containerpilot
: কন্টেইনার পাইলটের ব্যবহারের ক্ষেত্রে শেল স্ক্রিপ্ট ছাড়া কন্টেইনারের মধ্যে জটিল নির্ভরতা পরিচালনা করা ... এটি থেকে আপডেট পাওয়া বন্ধ করে দিয়েছে আনন্দদায়ক এবং রক্ষণাবেক্ষণ মোডে রাখা হয়েছিল, আমি মেমরির প্রয়োজনীয়তা পছন্দ করিনি এবং দীর্ঘ সময়ের আপটাইমের জন্য মেমরির ব্যবহার ক্রমাগত বৃদ্ধি পাবে। আমি এটি সহজ শেল স্ক্রিপ্টগুলির সাথে স্যুইচ করেছি কনসাল , যদি শেল স্ক্রিপ্টগুলি খুব বেশি বাড়তে শুরু করে তবে আমি আরও সঠিক বিকল্পগুলি সন্ধান করতে পারি। এর মতো ভারী সমাধান কুবারনেটস, ঝাঁক অথবা যাযাবর যাওয়া-আসা থেকে বাদ দেওয়া হয়েছিল।
beegfs
: আমি প্রয়োজনীয় কার্নেল মডিউল জাহাজে ব্যবহার করতাম beegfs কিন্তু কিছুক্ষণ পর এটি সামঞ্জস্যতা ভেঙে দেয়, এবং সঠিকভাবে সমর্থিত ছিল না ফিউজ মডিউলটি সম্পূর্ণরূপে ফেলে দেওয়া হোক, আমি বর্তমানে আমার সার্ভারে [DFS] চালাচ্ছি না, কিন্তু একটি নেটওয়ার্ক-এ প্লাগ-ইন করার জন্য ফাইল-সিস্টেমের জন্য প্রস্তুত থাকার সম্ভাবনা এখনও আকর্ষণীয়।
ছবিটি ইনস্টল করার জন্য আপনি হয়ত এটি হোস্টিং প্রদানকারীর কাছে আপলোড করতে পারেন এবং ভার্চুয়াল মেশিনের ক্ষেত্রে VNC থেকে ইনস্টল করতে পারেন, কিন্তু আমি সাধারণত একটি বিদ্যমান ইনস্টলেশন হাইজ্যাক করি, কারণ এটি সর্বদা সম্ভব, পাশাপাশি আমি সংস্করণের বিপরীতে সেটআপ স্ক্রিপ্টটি পরীক্ষা করেছি লিনাক্স ডিস্ট্রিবিউশন, সাধারণত আমি ডেবিয়ান -8 বা উবুন্টু -14 ব্যবহার করি, অন্যদের পরীক্ষা করিনি কারণ এইগুলি আমি সবসময়ই পাওয়া যায়। সেটআপ ধাপগুলি অনুসরণ করে
ডাউনলোডের জন্য https সমর্থন নিশ্চিত করুন
একটি ব্যস্ত বক্স সংস্করণ ডাউনলোড করুন
একটি ব্যস্ত বাক্স লিঙ্ক-ফার্ম ইনস্টল করুন
নেটওয়ার্ক কনফিগারের জন্য ipv4/ipv6 ঠিকানা নির্ধারণ করুন
chroot ক্ষমতা নিশ্চিত করুন
পাইন চিত্রটি ডাউনলোড করুন এবং এটি বের করুন
যদি ভিএম
লক্ষ্য ডিভাইসের উপর ফ্ল্যাশ
একটি লুপ ডিভাইসের উপর মাউন্ট করুন
এর উপর স্থানীয় নেটওয়ার্ক কনফিগারেশন লিখুন ফ্ল্যাশ করা rootfs
যদি ধারক
মূল রুট মাউন্ট পয়েন্টের উপর init পরিষেবা (কন্টেইনারের জন্য) অনুলিপি করুন/sbin/init
যদি ভিএম
স্ট্যান্ডার্ড সহ বাম দিকের ডিস্কটি পার্টিশন করুন (xfs
) পার্টিশন
আনমাউন্ট
পার্টিশনের অখণ্ডতা যাচাই করুন
রিবুট
আমি তৈরী করেছি পাইন 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on NATED সার্ভারগুলি যা অতি-কম সংস্থানগুলি সরবরাহ করে, আসলে আমার কাছে একটি বাক্স রয়েছে যা কেবলমাত্র চলছে64M
RAM এর, এবং এখনও আমার প্রয়োজনীয় সমস্ত বৈশিষ্ট্য আছে।
[1] | রুট ফাইল সিস্টেম |