NTFS-сжатые диски Virtual PC (на хосте и / или госте)
Я надеюсь, что кто-то здесь может ответить на эти вопросы окончательно:
- Помещает ли файл VHD в папку, сжатую NTFS на хосте, производительность виртуальной машины, снижает производительность или нет?
- Как насчет использования сжатия NTFS в гостевой системе?
- Приводит ли использование сжатия к хосту или гостю к таким проблемам, как ошибки чтения или записи?
- Если бы я поместил виртуальный жесткий диск в сжатую папку на хосте, выиграл бы я от его сжатия?
Я видел ссылки на использование сжатия NTFS на довольно многих постах в блоге VPC "Советы и хитрости", и кажется, что половина из них говорит, что никогда не делает этого, а другая половина говорит, что это не только экономит место на диске, но и фактически может повысить производительность, если у вас быстрый ЦП, а основным узким местом производительности является диск.
2 ответа
Это все о компромиссах. Диску требуется определенное количество времени для считывания определенного количества байтов. Если вы можете сжать данные таким образом, чтобы сумма сокращенного количества времени, которое требуется диску для чтения, вместе со временем, которое требуется ЦП для его распаковки, меньше, чем для считывания несжатых данных с диска, то вы выиграете перфорация.
Проблема в том, что в этом так много переменных, и, скорее всего, все будет в порядке. Ваш диск может читать маленькие блоки медленнее, или ваши данные могут быть не очень сжимаемыми, или ваш процессор может быть очень быстрым, или (и так далее, и так далее). Единственный способ узнать, действительно ли это имеет значение, это попробовать и измерить. Ответы, которые вы получите для разных данных / машин, скорее всего, будут разными.
Вы не увидите ошибок на диске, но вы можете увидеть замедление со временем или во время интенсивной записи на диск виртуальной машиной. Причина, по которой вы не сжимаете виртуальную машину на месте, заключается в том, что вы не сжимаете базу данных на месте: виртуальный диск является блочным устройством, и виртуальная машина обращается к нему с использованием смещений блоков. Предполагается, что все блоки имеют одинаковый размер. Если они сжаты, это больше не так. Файловая система хоста должна выполнять перевод между предполагаемым расположением блока и реальным (сжатым) расположением блока. Это было бы довольно тривиально, если бы эта вещь была доступна только для чтения, но блоки менялись, как и их сжимаемость. Перезапись сжатого блока может означать, что он не подходит туда, где он был. Хост FS должен будет переместить его, что является дополнительным шагом и фрагментирует виртуальный диск.
Конечно, всегда существует фрагментация, когда ваша виртуальная машина пишет в новые местоположения, которые еще не имеют физического местоположения. Вы можете победить это, только используя (несжатые) виртуальные диски в натуральную величину (заполненные пустым заполнением, то есть без автоматического увеличения) и дефрагментируя как хост, так и гостя.
В твердотельном хранилище фрагментация не имеет значения, а сжатие поможет уменьшить число операций записи, что увеличивает срок службы вашего диска. Но вы все еще застряли с ЦП и объемом памяти при трансляции блоков.
Также имейте в виду, что ваш дисковый контроллер может выполнять дедупликацию или сжатие данных, поэтому ваши усилия на уровне ОС могут быть избыточными.
Для виртуальных машин, которые в основном читают, сжатие может оказаться полезным. К сожалению, современные операционные системы выполняют так много операций по ведению, ведению журнала и самообновлению, что постоянно пишут, но вы можете ограничить это действие моментальным снимком. Так что сожмите базовое изображение на месте, а не снимки. Производительность записи не пострадает. Предостережение: моментальные снимки могут легко увеличиваться до размера исходного диска. Вам все равно придется часто объединять или удалять их, поэтому размещайте их там, где вы их видите.
Вывод: будь проще.