.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "BUFFINDEXED.CONF 5" .TH BUFFINDEXED.CONF 5 2024-05-19 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" buffindexed.conf \- فایل پیکربندی پایگاه‌داده نمایه‌سازی بافر در INN .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" فایل \&\fIbuffindexed.conf\fR، واقع در \fIpathetc\fR، بافرهایی را مشخص می‌کند که روش مرور کلی (overview) buffindexed باید از آن‌ها استفاده کند. در صورتی که سرور از buffindexed استفاده کند (همان‌طور که توسط پارامتر \fIovmethod\fR در \fIinn.conf\fR پیکربندی شده است)، وجود این فایل الزامی است. .PP روش buffindexed از فایل‌های بافر از پیش ساخته‌شده برای ذخیره داده‌های مرور کلی و نمایه‌های آن داده‌ها استفاده می‌کند. بافرها از نظر داخلی به بلوک‌های ۸\ کیلوبایتی تقسیم می‌شوند و یک بلوک معین، یا برای داده‌های مرور کلی یا برای داده‌های نمایه استفاده می‌شود. یک بلوک همیشه به یک گروه خبری (newsgroup) منفرد اختصاص می‌یابد و هرگز بین گروه‌های خبری به اشتراک گذاشته نمی‌شود. این امر همچنین بدان معناست که داده‌های مرور کلی برای هر مقاله به ۸\ کیلوبایت محدود است، که ممکن است منجر به عدم گنجانده شدن چند مقاله با سرآیندهای (headers) با طول نامعمول در پایگاه‌داده مرور کلی شود. .PP علاوه بر بافرها، buffindexed اطلاعات را در فایلی به نام \fIgroup.index\fR در \fIpathdb\fR نیز ذخیره می‌کند. (این فایل نباید با فایلی به نام \fIgroup.index\fR در \fIpathoverview\fR که توسط روش مرور کلی tradindexed استفاده می‌شود، اشتباه گرفته شود.) این فایل حاوی اطلاعات مربوط به هر گروه خبری است: اشاره‌گر به بلوک نمایه برای گروه خبری، نشان بالا (high mark)، نشان پایین (low mark)، پرچم گروه، تعداد مقالات و مواردی از این دست. این فایل هنگام مقداردهی اولیه همه بافرها به طور خودکار ایجاد می‌شود و نباید به صورت دستی ویرایش گردد. .PP بافرهای buffindexed دارای اندازه ثابتی هستند، بنابراین buffindexed هرگز فضای بیشتری از آنچه در آن بافرها موجود است مصرف نخواهد کرد. اگر تمام بافرها پر شوند، زمانی که \&\fBinnd\fR تلاش کند اطلاعات مرور کلی را برای هر مقاله اضافی ذخیره کند، کارایی را کاهش داده و متوقف می‌شود (throttle می‌کند) تا زمانی که فضا آزاد شود (مثلاً با \fBexpireover\fR) یا بافر دیگری اضافه شود. این رفتار بر خلاف روش ذخیره‌سازی CNFS است. .PP شما می‌توانید میزان استفاده فعلی از بافرها را با گزینه \fB\-o\fR در \&\fBinndf\fR مشاهده کنید. .PP داده‌های مرور کلی مقالات دریافت‌شده، به ازای هر \&\fIovflushcount\fR مقاله (همان‌طور که در \fIinn.conf\fR تنظیم شده است) در دیسک تخلیه (flush) می‌شوند. .PP در فایل \fIbuffindexed.conf\fR، خطوط خالی و خطوطی که با علامت هش (\f(CW\*(C`#\*(C'\fR) شروع می‌شوند، نادیده گرفته می‌شوند. سایر خطوط باید در قالب زیر باشند: .PP .Vb 1 \& :: .Ve .PP ترتیب خطوط اهمیتی ندارد. .PP مقدار شاخص این بافر مرور کلی است و باید یکتا باشد. به جز این قید، می‌تواند هر عددی بین ۰ تا ۶۵۵۳۵ باشد. .PP مقدار مسیر به بافر است. طول مسیر نباید بیشتر از ۶۳ نویسه باشد. .PP مقدار طول بافر بر حسب کیلوبایت است (۱\ کیلوبایت\ =\ ۱۰۲۴\ بایت). اگر یک دستگاه ویژه (special device) را مشخص نکند، اندازه فایل بافر باید \ *\ 1024\ بایت باشد. اگر یک دستگاه ویژه را مشخص کند، آن دستگاه باید حداقل به اندازه فضا در دسترس داشته باشد. برای اطلاعات بیشتر درباره راه‌اندازی بافرها، بخش «ایجاد بافرها (CREATING BUFFERS)» را ببینید. .PP یک نمونه از فایل \fIbuffindexed.conf\fR می‌تواند به این صورت باشد: .PP .Vb 2 \& 0:/OV1:1536000 \& 1:/OV2:1536000 .Ve .PP هنگامی که برای نخستین بار \fBinnd\fR را با پیکربندی کامل و درست اجرا می‌کنید، باید پیام‌هایی مانند این را در \fIpathlog\fR/news.notice مشاهده کنید: .PP .Vb 2 \& Aug 27 00:00:00 kevlar innd: buffindexed: no magic cookie found \& for ovbuff 0, initializing .Ve .PP اگر بافرها را حذف یا جایگزین کنید، باید با استفاده از \fBmakehistory\fR مرور کلی را به طور کامل از نو بسازید. با این حال، بافرهای جدید را می‌توان بدون نیاز به تمهیدات خاصی اضافه کرد (به جز راه‌اندازی مجدد \fBinnd\fR پس از تغییر دادن \fIbuffindexed.conf\fR). اگر نیاز به بازسازی مرور کلی دارید، ابتدا باید تمام بافرها را با صفر پر (zero) کنید. .PP توصیه می‌کنیم فضای خالی زیادی در بافرهای موجود رزرو نکنید تا مدت زمان فرآیند \fBexpireover\fR به حداقل برسد، و تنها زمانی بافرهای جدید اضافه کنید که فضای باقی‌مانده کم باشد (نتیجه \f(CW\*(C`inndf \-no\*(C'\fR را ببینید). در نظر داشته باشید که برای هر مقاله در مخزن (spool) خود به حداقل ۰٫۶۵\ کیلوبایت فضا نیاز خواهید داشت (بدون احتساب ارسال‌های مشترک یا crossposts). بنابراین، اگر ۵ میلیون مقاله دارید، حداقل به ۳٫۲۵\ گیگابایت فضای دیسک برای buffindexed نیاز خواهید داشت. .SH "ایجاد بافرها (CREATING BUFFERS)" .IX Header "CREATING BUFFERS" دو روش برای ایجاد یک بافر جدید buffindexed وجود دارد: .IP 1. 4 ایجاد یک فایل بزرگ روی یک سیستم‌فایل معمولی. ساده‌ترین روش برای انجام این کار احتمالاً استفاده از dd(1) با دستوری شبیه به زیر است: .Sp .Vb 1 \& dd if=/dev/zero of=/path/to/cycbuff bs=1024 count= .Ve .Sp که در آن همان اندازه مندرج در خط مربوطه در \fIbuffindexed.conf\fR است. .Sp این ساده‌ترین روش است، اما این عیب را دارد که دسترسی به فایل‌های بسیار بزرگ در سیستم‌فایل‌های معمولی می‌تواند نسبتاً کند باشد (به‌ویژه در انتهای فایل)، و INN هنگام دسترسی به بافر دچار بار اضافی (overhead) غیرضروری سیستم‌فایل می‌شود. .IP 2. 4 استفاده مستقیم از دستگاه‌های بلوکی (block devices). اگر سیستم‌عامل شما اجازه می‌دهد فراخوانی ()mmap را روی دستگاه‌های بلوکی اجرا کنید (سولاریس و نسخه‌های اخیر لینوکس این امکان را دارند، FreeBSD طبق آخرین گزارش‌ها ندارد)، این روش می‌تواند از تمام بار اضافی سیستم‌فایل بومی اجتناب کند. با این حال، توجه داشته باشید که سولاریس با قفل‌گذاری محدوده بایتی (byte range locking) روی دستگاه‌های بلوکی مشکل دارد، و بنابراین این روش نباید در سولاریس استفاده شود. .Sp دیسک را پارتیشن‌بندی کنید. اگر از سولاریس استفاده می‌کنید، پارتیشن‌های خود را طوری تنظیم کنید که از سیلندر اول دیسک اجتناب شود (در غیر این صورت، سرآیند buffindexed جدول پارتیشن دیسک را رونویسی کرده و بافرها را غیرقابل دسترس می‌کند). سپس، فایل‌های دستگاه را برای هر دستگاه بلوکی که قصد استفاده از آن را دارید ایجاد کنید. .Sp استفاده از فایل‌های دستگاه بلوکی در مسیر \fI/dev\fR توصیه نمی‌شود، زیرا سامانه اخبار (news) مجوز نوشتن روی آن‌ها را ندارد و تغییر دادن مجوزهای فایل‌های دستگاه سیستمی ممکن است بر بخش‌های دیگر سیستم تأثیر بگذارد. در عوض، از mknod(1) برای ایجاد یک مجموعه جدید از دستگاه‌های بلوکی استفاده کنید (در جایی مانند \fIpathspool\fR/overview که فقط توسط کاربر news قابل نوشتن باشد). برای این کار، دستور \f(CW\*(C`ls \-Ll\*(C'\fR را روی دستگاه‌های موجود در \fI/dev\fR که متناظر با دستگاه‌های بلوکی مورد نظر شما هستند اجرا کنید. شماره‌های اصلی (major) و فرعی (minor) دستگاه به ترتیب در ستون‌های پنجم و ششم (دقیقاً قبل از تاریخ) قرار دارند. سپس mknod را به شکل زیر اجرا کنید: .Sp .Vb 1 \& mknod b .Ve .Sp که در آن مسیر دستگاهی است که باید ایجاد شود (مطابق با بخش در خط پیکربندی buffindexed) و و شماره‌های اصلی و فرعی دستگاه هستند که در بالا مشخص شدند. .Sp در اینجا یک اسکریپت کوتاه برای انجام این کار در صورت دریافت مسیر فایل دستگاه سیستمی به عنوان آرگومان آورده شده است: .Sp .Vb 8 \& #!/bin/sh \& base=\`echo "$1" | sed \*(Aqs%.*/%%\*(Aq\` \& major=\`ls \-Ll "$1" | awk \*(Aq{print $5}\*(Aq | tr \-d ,\` \& minor=\`ls \-Ll "$1" | awk \*(Aq{print $6}\` \& mkdir \-p \& mknod /"$base" b "$major" "$minor" \& chown news:news /"$base" \& chmod 644 /"$base" .Ve .Sp اطمینان حاصل کنید که مالک فایل‌های ایجادشده، کاربر news و گروه news هستند، همان‌طور که در زمان پیکربندی مشخص شده است (مقدار پیش‌فرض برای هر دو \f(CW\*(C`news\*(C'\fR است). همچنین اطمینان حاصل کنید که مجوزهای روی دستگاه‌ها به کاربر news اجازه خواندن و نوشتن را می‌دهند. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط Katsuhiro Kondou برای InterNetNews. تبدیل به POD توسط Russ Allbery . .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" expireover(8), inn.conf(5), inndf(8), makehistory(8).