| mbuffer(1) | console utility | mbuffer(1) |
نام (NAME)
mbuffer - ابزار بافر حافظه جهت افزایش سرعت انتقال دادهها بین ورودی و خروجی
خلاصه دستور (SYNOPSIS)
mbuffer [گزینهها]
توضیحات (DESCRIPTION)
دستور mbuffer عملیات ورودی/خروجی (I/O) را بافر کرده و نرخ توان عملیاتی (throughput) را نمایش میدهد. این برنامه چندریسمانی است، از اتصالات شبکه، چندین مقصد خروجی و گزینههای بسیار بیشتری نسبت به دستور استاندارد buffer پشتیبانی میکند.
گزینهها (OPTIONS)
- -b <تعداد>
- استفاده از تعداد بلوک برای بافر (مقدار پیشفرض در زمان راهاندازی تعیین میشود).
- -s <اندازه>
- استفاده از بلوکهایی با اندازه بایت برای بافر (مقدار پیشفرض در زمان راهاندازی تعیین میشود).
- -m <اندازه>
- استفاده از مجموع اندازه بایت برای بافر (پیشفرض ۲٪ از حافظه در دسترس) - اندازه را میتوان با پسوند مشخص کرد (b و B برای بایت، k برای کیلوبایت، M برای مگابایت، G برای گیگابایت و % برای درصدی از کل حافظه فیزیکی).
- -L
- قفل کردن بافر در حافظه رم - این گزینه برای بافرهای مبتنی بر فایل در دسترس نیست و نیازمند تنظیم مجوز set-UID root برای mbuffer است (با احتیاط استفاده شود).
- -d
- استفاده از اندازه بلوک دستگاه برای خروجی (برای برخی دستگاهها لازم است، اما سرعت خروجی را کاهش میدهد).
- -D <اندازه>
- فرض حجم خروجی برابر با اندازه بایت (پیشفرض بینهایت) که پس از آن تعویض حجم (volume change) آغاز میشود. مقادیر کوچک برای آزمایش بهموقع اجراهای چندجلدی و مقادیر دقیق برای زمانی مناسبند که دستگاه شما پایان رسانه را به درستی اعلام نمیکند. اندازه را میتوان با پسوند تعیین کرد (b و B برای بایت، k برای کیلوبایت، M برای مگابایت یا G برای گیگابایت).
- -P <درصد>
- شروع نوشتن پس از پر شدن بافر تا درصد مشخصشده (پیشفرض ۰ - شروع فوری).
- -p <درصد>
- شروع خواندن پس از افت نسبت پر بودن بافر به زیر درصد مشخصشده (پیشفرض ۱۰۰ - شروع فوری).
- -i <نام_فایل>
- استفاده از نام_فایل به عنوان ورودی به جای ورودی استاندارد (برای پشتیبانی از چند رسانه/جلد الزامی است). اگر نام_فایل برابر با - باشد، ورودی از ورودی استاندارد خوانده میشود.
- -o <نام_فایل>
- استفاده از نام_فایل به عنوان خروجی به جای خروجی استاندارد (برای پشتیبانی از چند رسانه/جلد الزامی است؛ در صورت در دسترس بودن، استفاده از sendfile را فعال میکند). اگر نام_فایل برابر با - باشد، خروجی در خروجی استاندارد نوشته میشود. گزینه -o را میتوان چندین بار برای مشخص کردن چندین خروجی تکرار کرد.
- --append
- باز کردن فایل خروجی بعدی مشخصشده با گزینه -o در حالت الحاق (append).
- --truncate
- کوتاه و خالی کردن (truncate) فایل خروجی بعدی مشخصشده با گزینه -o هنگام باز کردن آن.
- -I <[میزبان:]درگاه[@رابط]>
- استفاده از درگاه شبکه درگاه به عنوان ورودی به جای ورودی استاندارد. اگر نام میزبان و درگاه به صورت میزبان:درگاه داده شود، تنها میزبان تعیینشده مجاز به اتصال است. در صورت مشخص شدن رابط، اتصالات تنها روی همان رابط شبکه پذیرفته میشوند.
- -O <میزبان:درگاه>
- نوشتن خروجی روی میزبان:درگاه به جای خروجی استاندارد (در صورت در دسترس بودن، استفاده از sendfile را فعال میکند). این گزینه را میتوان چندین بار برای ارسال داده به چندین ماشین به کار برد.
- -n <تعداد>
- تعداد تعداد جلد در دستگاه ورودی (نیازمند استفاده از گزینه -i جهت مشخص کردن دستگاه ورودی است؛ در صورتی که mbuffer باید برای هر جلد جدید اعلان درخواست نمایش دهد، عدد ۰ را به عنوان آرگومان بدهید).
- -t
- استفاده از یک فایل موقت نگاشتشده در حافظه (memory-mapped) به عنوان بافر (مناسب برای بافرهای بسیار بزرگ).
- -T <فایل>
- مشابه -t اما با استفاده از فایل مشخصشده به عنوان بافر.
- -l <فایل>
- ثبت پیامها در فایل به جای خروجی خطای استاندارد.
- -u <تعداد>
- توقف به مدت تعداد میکروثانیه پس از هر عمل نوشتن - ممکن است کارایی را در برخی درایوهای با سرعت بسیار پایین (کمتر از ۱ مگابایت بر ثانیه) افزایش دهد.
- -r <نرخ>
- تنظیم حداکثر نرخ خواندن روی نرخ. مقدار نرخ را میتوان بر حسب بایت، کیلوبایت، مگابایت یا گیگابایت بر ثانیه با پسوند مناسب (مانند k, M, G) مشخص کرد. این گزینه زمانی مفید است که یک درایو نوار دادهها را سریعتر از توان پردازش میزبان انتقال میدهد. در این حالت میتوانید سرعت انتقال را محدود کرده و نوار را پیوسته در حال حرکت نگه دارید. این کار هم برای درایو نوار مفید است و هم با جلوگیری از توقف و حرکت متناوب نوار، کارایی کلی را بهبود میبخشد.
- -R <نرخ>
- مشابه گزینه بالا، ولی برای تنظیم محدودیت نرخ انتقال بخش نویسنده (خروجی).
- -M <نرخ>
- تنظیم حداقل نرخ برای محدودسازی پویا نرخ انتقال. نرخ انتقال داده به صورت پویا بین مقادیر حد بالا و حد پایین (گزینههای -p و -P) که باید آنها نیز ارائه شوند، تنظیم میشود.
در حالت ورودی، نرخ داده با مقدار گزینه -r آغاز شده و بر اساس میزان پر بودن بافر تا مقدار -M کاهش مییابد.
در حالت خروجی، نرخ داده به شکل مشابهی تنظیم میشود، اما از حداقل نرخ شروع شده و تا نرخ -R برای خروجی افزایش مییابد.
- -f
- بازنویسی روی فایل خروجی در صورتی که از قبل وجود داشته باشد.
- -a <زمان>
- دستگاه مورد استفاده یک بارگذار خودکار (autoloader) است که بارگذاری نوار جدید در آن زمان ثانیه طول میکشد.
- -A <دستور>
- دستگاه مورد استفاده یک بارگذار خودکار است که از دستور برای بارگذاری جلد بعدی استفاده میکند. برای جلوگیری از نمایش پیام هشدار در زمان اجرای بدون ترمینال کنترلی (مانند اجرا از طریق cron)، مقدار /bin/false را به عنوان دستور بارگذاری خودکار ارسال کنید. در این حالت بارگذاری خودکار با خطا مواجه شده و mbuffer پس از رسیدن به انتهای نوار با پیام خطا متوقف میشود.
- -v <سطح>
- تنظیم سطح گزارشدهی جزئیات (verbose) روی سطح. مقادیر معتبر بین ۰ تا ۶ هستند (۰ = هیچ، ۱ = خطاها، ۲ = هشدارها، ۴ = پیامهای اطلاعاتی، ۵ = پیامهای اشکالزدایی، ۶ = اشکالزدایی ورودی/خروجی). سطوح بالاتر شامل پیامهای سطوح پایینتر نیز میشوند.
- -q
- حالت خاموش - وضعیت را در خروجی خطای استاندارد نمایش نده.
- -Q
- حالت کاملاً خاموش - وضعیت را در فایل لاگ ثبت نکن.
- -c
- نوشتن همراه با پشتیبانی از یکپارچگی همگام دادهها - این گزینه باعث میشود قبل از ادامه کار، تمام عملیات نوشتن کامل شوند. این امر امکان گزارش سریعتر و دقیقتر خطاها را فراهم میکند، اما ممکن است کارایی را کاهش دهد؛ به ویژه سیستمهایی با سطح بالای یکپارچگی داده دچار افت شدید کارایی میشوند.
- -e
- توقف پردازش در صورت بروز هرگونه خطا.
- -H, --md5
- تولید هش MD5 از دادههای انتقالیافته.
- --hash <الگوریتم>
- استفاده از الگوریتم الگوریتم؛ اگر مقدار list داده شود، لیست الگوریتمهای پشتیبانیشده نمایش داده میشود.
- --pid
- چاپ شناسه فرآیند (PID) این نمونه. این گزینه در شناسایی و بستن نمونهای از mbuffer که به دلیل مشکل شبکه متوقف شده است، کمک میکند. چاپ PID را میتوان با افزودن عبارت "printpid = 1" در فایل .mbuffer.rc نیز فعال کرد.
- -W <مهلت>
- فعالسازی ناظر (watchdog) که هر مهلت ثانیه بررسی میکند آیا فعالیت ورودی/خروجی متوقف شده است یا خیر. اگر هر کانال به اندازه یک دوره کامل متوقف بماند، ناظر پیامی نوشته و mbuffer را با سیگنال SIGINT متوقف میکند. توجه داشته باشید که ناظر از عملیات تعویض نوار آگاه نیست؛ بنابراین مهلت ناظر را بیشتر از بدترین زمان تعویض نوار تعیین کنید. ناظر پس از پردازش گزینه -W یا پس از پردازش تمام گزینهها فعال میشود. برای جلوگیری از فعال شدن ناظر در حین راهاندازی شبکه، گزینه -W را پس از -I و -O قرار دهید.
- -4
- اجبار به استفاده از پروتکل IPv4 برای گزینههای ورودی/خروجی شبکه در خط فرمان.
- -6
- اجبار به استفاده از پروتکل IPv6 برای گزینههای ورودی/خروجی شبکه در خط فرمان.
- -0
- انتخاب خودکار بین IPv4/IPv6 بر حسب نیاز.
- --no-direct
- عدم استفاده از O_DIRECT - به عنوان مثال برای فعالسازی فشردهسازی در فایلسیستم btrfs.
- --tcpbuffer
- اندازه بافر TCP بر حسب بایت. اندازه را میتوان با پسوند مشخص کرد (b و B برای بایت، k برای کیلوبایت، M برای مگابایت یا G برای گیگابایت).
- --tcptimeo <زمان>
- تنظیم آستانه مهلت زمانی TCP. مقدار پیشفرض 10s است. مقادیر بدون واحد به صورت میکروثانیه تفسیر میشوند. واحدهای معتبر عبارتند از: us, ms, s یا sec, m یا min, h.
- --tapeaware
- ادامه نوشتن تا آخرین نقطه ممکن از نوار. درایوهای LTO با نزدیک شدن به انتهای نوار به سیستمعامل اطلاع میدهند و لینوکس با بازگرداندن خطای 'no space left' در هر دو عملیات نوشتن، این موضوع را به فضای کاربری منتقل میکند. به طور معمول اولین خطا به منزله پایان نوار در نظر گرفته شده و نوار بعدی درخواست میشود، اما با این گزینه، نوشتن تا زمانی که دو بار متوالی خطای 'no space left' رخ دهد ادامه مییابد که نشاندهنده پایان واقعی نوار است. این کار امکان قرارگیری مقدار کمی داده بیشتر روی هر نوار را فراهم میکند.
- --direct
- استفاده از ورودی/خروجی مستقیم (Direct I/O) برای بافر فایل موقت.
- -h, --help
- نمایش اطلاعات راهنما و خروج.
- -V, --version
- نمایش اطلاعات نسخه و خروج.
مقادیر پیشفرض (DEFAULT VALUES)
مقادیر پیشفرض اکثر گزینهها را میتوان به صورت جفتهای کلید = مقدار در یک یا چند فایل پیکربندی تنظیم کرد. فایلهای نمونه mbuffer.rc را برای مشاهده گزینههای موجود و مقادیر پیشفرض آنها بررسی کنید. فایلهای پیکربندی به ترتیب زیر خوانده میشوند:
- /etc/mbuffer.rc
- $PREFIX/etc/mbuffer.rc
- $HOME/.mbuffer.rc
- $MBUFFERRC
مقادیر پیشفرض دادهشده در فایلهای بالا توسط گزینههای ارسالشده در خط فرمان بازنویسی میشوند.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
اگر متغیر
TMPDIR تنظیم
شده باشد، mbuffer
فضای
ذخیرهسازی
بافرهای
مبتنی بر
فایل را در
این
دایرکتوری
اختصاص
میدهد. در
صورت تنظیم
نبودن TMPDIR،
مسیر /var/tmp
استفاده
خواهد شد.
MBUFFERRC برای
مشخص کردن
فایل
پیکربندی
سفارشی mbuffer.rc
استفاده
میشود.
MBUFFER_VOL اطلاعات
شناسه جلد
(برای دستور
بارگذاری
خودکار
تنظیم
میشود).
MBUFFER_NUMIN تعداد
بایتهای
خواندهشده
(برای دستور
بارگذاری
خودکار
تنظیم
میشود).
MBUFFER_NUMOUT تعداد
بایتهای
نوشتهشده
(برای دستور
بارگذاری
خودکار
تنظیم
میشود).
فایلها (FILES)
$PREFIX/bin/mbuffer
/var/tmp/mbuffer-*
~/.mbuffer.rc
مثالها (EXAMPLES)
برای اجرای این برنامه با گزینههای پیشفرض کافی است تایپ کنید:
mbuffer
استفاده از mbuffer برای پشتیبانگیری با tar روی دستگاه نوار پیشفرض. گزینههای این مثال: فایل موقت نگاشتشده در حافظه با اندازه ۱۰ مگابایت، شروع نوشتن پس از پر شدن ۸۰٪ بافر.
tar cf - mydirectory | gzip | mbuffer -t -m 10M -P 80 -f -o $TAPE
استفاده از mbuffer با ۳ نوار به عنوان ورودی و استخراج محتویات در دایرکتوری کاری جاری:
mbuffer -n 3 -i $TAPE | gzip -dc | tar xf -
استفاده از mbuffer برای نوشتن روی چندین جلد نوار:
tar cf - /usr | mbuffer -f -o $TAPE
نوشتن روی چندین نوار و پاک کردن هر نوار قبل از نوشتن:
tar cf - /usr | mbuffer -A "echo next tape; read a < /dev/tty; mt erase $TAPE" -f -o $TAPE
ایجاد پشتیبان از طریق شبکه:
سرور نوار: mbuffer -I 8000 -f -o $TAPE
کلاینت پشتیبان: tar zcf - /home | mbuffer -O tapeserver:8000
توزیع یک درخت دایرکتوری روی چندین ماشین:
سرور اصلی: tar cf - /tree_to_clone | mbuffer -O clone0:8000 -O clone1:8000
کلاینتها: mbuffer -I master:8000 | tar xf -
کار با درایو نوار با مقیاسبندی پویای سرعت:
tar cf - / | mbuffer -o /dev/tape -p20% -p80% -M 50M -R 120M
mbuffer -i /dev/tape -p20% -p80% -M 50M -r 120M | tar xf -
کد خروج (EXITCODE)
برنامه mbuffer در صورت موفقیت مقدار ۰ را برمیگرداند. هرگونه خطا منجر به مقدار خروج غیرصفر خواهد شد.
نویسندگان (AUTHORS)
Thomas Maier-Komor <thomas@maier-komor.de>
حمایت مالی (DONATIONS)
اگر این نرمافزار را میپسندید و در شرکت خود برای مقاصد تولیدی از آن استفاده میکنید، لطفاً برای حمایت از این پروژه کمک مالی در نظر بگیرید. میتوانید مستقیماً از طریق PayPal به آدرس ایمیل نویسنده (thomas@maier-komor.de) کمک مالی واریز کنید.
صفحه خانگی (HOMEPAGE)
مجوز (LICENSE)
این نرمافزار تحت مجوز عمومی گنو نسخه ۳ (GNU General Public License V3) منتشر شده است. برای جزئیات به فایل LICENSE مراجعه کنید.
همچنین ببینید (SEE ALSO)
| R20260511 | Thomas Maier-Komor |